一:介绍
开发以太坊区块链应用程序,涉及到以下部分:
智能合约开发 – 使用solidity语言编写代码,部署到区块链。网站或客户端开发 – 与区块链中的智能合约进行交互,读写数据。
在进行网站或客户端开发时,就需要用到web3.js。web3.js库是一个javascript库,可以让你执行很多与区块链进行交互的任务,例如:
以太币转账读写智能合约中的数据创建智能合约
如果你有web开发背景,对使用Ajax与web服务器进行通信的机制应该很熟悉。与Ajax类似,可以使用Web3.js读写以太坊区块链。
区块链网络是一个点对点的对等网络,网络由各个节点相互连接构成,智能合约的代码与数据存储在区块链中。使用web3.js可以向区块链网络中某个以太坊节点发出请求,与区块链网络进行交互。
此过程如下图所示:
web3.js使用JSON RPC与Ethereum区块链通信(JSON RPC即JSON远程调用),对区块链网络进行数据读写。这有点像使用jQuery ajax库来读写web服务器上的数据。
二:安装与下载
NPM
首先要安装Node包管理器,即NPM,它与Node.js一起安装。
从Node.js官网上下载Node并安装: https://nodejs.org
查看node版本,npm版本:
Kevin@QIKEGU C:UsersKevin> node-vv10.16.3Kevin@QIKEGU C:UsersKevin> npm-v6.11.3
web3.js
安装Web3.js库:
$ npm install web3
连接以太坊节点
要访问以太坊网络,需要连接到Ethereum节点。
有几种方法可以做到这一点,可以使用Geth或Parity运行自己的Ethereum节点。但这需要从区块链下载大量数据并保持同步,很麻烦。
比较方便的方法是,使用Infura访问Ethereum节点。Infura是一个免费提供Ethereum节点的服务。
在Infura上注册账号,创建项目,在项目详情页上可以查看API KEY:
使用API KEY,就可以访问以太坊网络节点。
三:web3.js访问区块链网络
web3.js访问区块链网络,我们将读取某个账号的余额。
创建web3连接
首先启动node:
$ node
在node控制台中加载Web3.js库:
const Web3 = require('web3')
接下来,使用Infura URL,创建Web3连接。声明Infura URL变量:
const rpcURL = "https://mainnet.infura.io/YOUR_INFURA_API_KEY"
确保使用之前获得的实际Infura API密钥替换此处的 YOUR_INFURA_API_KEY。创建Web3连接:
const web3 = new Web3(rpcURL)
读取余额
现在有了这个Web3连接,就可以与以太坊主网进行通信。
让我们使用这个连接来检查这个帐户的余额: 0x03118E2c88676d31ee397E1eEf7789fECfbC40b9。通过使用 web3.eth.getBalance()检查帐户余额,我们可以看一下这个帐户下有多少以太币。
首先,将地址赋给一个变量:
const address = "0x03118E2c88676d31ee397E1eEf7789fECfbC40b9"
检查账户余额:
// 读取address中的余额,余额单位是weiweb3.eth.getBalance(address, (err, wei) => { // 余额单位从wei转换为ether balance = web3.utils.fromWei(wei, 'ether') console.log("balance: " balance)})
输出:
balance: 6.97320381
小结
以下是本教程中编写的代码概要:
const Web3 = require('web3')const rpcURL = '' // RPC URLconst web3 = new Web3(rpcURL)const address = '' // 账户地址// 读取address中的余额,余额单位是weiweb3.eth.getBalance(address, (err, wei) => { // 余额单位从wei转换为ether balance = web3.utils.fromWei(wei, 'ether') console.log("balance: " balance)})
Web3.js更多使用细节,可以参考官方文档:
https://web3js.readthedocs.io/
注意,Web3.js正在积极开发中,可以访问Web3.js github存储库,了解它的进展,也可以阅读代码更好地理解库本身。
web3.js github库: https://github.com/ethereum/web3.js/
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。