1703877086
区块链项目开发指南 4.1.2 连接至节点
1703877087
1703877088
web3.js可以与使用HTTP或者IPC的节点通信。我们将使用HTTP与节点建立通信。web3.js允许与多个节点建立连接。一个web3实例代表与节点的一个连接。该实例公开了API。
1703877089
1703877090
当在Mist中运行一个App时,它自动使一个连接到mist节点的web3实例可用。实例变量名是web3。
1703877091
1703877092
为了连接到节点所使用的基础代码如下:
1703877093
1703877094
1703877095
1703877096
1703877097
首先,通过检查web3是否是undefined,来确定代码是否在Mist中运行。如果web3被定义了,则使用已经可用的实例;否则,通过连接至自定义节点创建一个实例。如果无论App是否在Mist中运行都连接到自定义节点,则从程序代码中删除if。这里假设自定义节点在8545端口本地运行。
1703877098
1703877099
Web3.providers对象使用多种协议显示构造函数(在此称为providers),以建立连接和传输信息。Web3.providers.HttpProvider允许建立HTTP连接,Web3.providers.IpcProvider允许建立IPC连接。
1703877100
1703877101
web3.currentProvider属性被自动分配给当前的provider实例。在创建web3实例之后,可使用web3.setProvider()方法改变provider。它有一个实参,即新provider的实例。
1703877102
1703877103
1703877104
记住:geth默认禁用HTTP-RPC。所以在运行geth时通过—rpc选项以使用HTTP-RPC。HTTP-RPC默认在8545端口运行。
1703877105
1703877106
web3显示isConnected()方法,可用于查询是否已经与节点连接。根据连接状态的不同,返回true或者false。
1703877107
1703877108
1703877109
1703877110
1703877112
区块链项目开发指南 4.1.3 API结构
1703877113
1703877114
web3包含一个eth对象(web3.eth),专门用于以太坊区块链交互;还包含一个shh对象(web3.shh),用于whisper交互。web3.js的大部分API都在这两个对象中。
1703877115
1703877116
所有API都是默认同步的。如果想发出异步请求,可以把一个可选回调函数作为最后的参数传送给大多数函数。所有回调函数都采用错误优先(error-first)回调方式。
1703877117
1703877118
一些API对于异步请求采用别名。例如web3.eth.coinbase()是同步的,web3.eth.getCoinbase()是异步的。示例如下:
1703877119
1703877120
1703877121
1703877122
1703877123
getBlock使用区块序号或者哈希值获取区块信息。或者,它可以使用一个字符串,例如”earliest”(创世区块)、“latest”(区块链最上面的区块)或者”pending”(正在挖的区块)。如果不传送实参,则默认是web3.eth.defaultBlock,默认分配”latest”。
1703877124
1703877125
所有需要区块身份证明作为输入的API可以用序号、哈希值或者一个可读字符串作为输入。如果值未通过,则这些API默认使用web3.eth.defaultBlock。
1703877126
1703877127
1703877128
1703877129
1703877131
区块链项目开发指南 4.1.4 BigNumber.js
1703877132
1703877133
JavaScript本质上对于正确处理大数字不在行。因此,需要处理大数字和进行完美计算的应用会使用BigNumber.js库。
1703877134
[
上一页 ]
[ :1.703877085e+09 ]
[
下一页 ]