1703877062
区块链项目开发指南 4.1 web3.js概述
1703877063
1703877064
web3.js提供了用于和geth通信的JavaScript API。它内部使用JSON-RPC与geth通信。web3.js还可以与所有种类的、支持JSON-RPC的以太坊节点通信。它把所有JSON-RPC API当作JavaScript API,也就是说,它不仅支持所有与以太坊相关的API,还支持与Whisper和Swarm相关的API。
1703877065
1703877066
随着不同项目的创建,我们会越来越了解web3.js。目前我们先来看一些最常用的web3.js API,然后使用web3.js创建一个所有权智能合约前端。
1703877067
1703877068
在写本书时,web3.js的最新版本是0.16.0。本章所述内容也是这个版本。
1703877069
1703877070
web3.js托管在https://github.com/ethereum/web3.js,完整文档在https://github.com/ethereum/wiki/wiki/JavaScript-API。
1703877071
1703877072
1703877073
1703877074
1703877076
区块链项目开发指南 4.1.1 导入web3.js
1703877077
1703877078
为了在node.js中使用web3.js,可以在项目目录中运行npm install web3,且在源代码中可以使用“require(“web3”);”导入它。
1703877079
1703877080
为了在客户端JavaScript使用web3.js,可以使web3.js文件入队,该文件可以在项目源代码的dist目录中找到。现在,Web3对象对全局可用。
1703877081
1703877082
1703877083
1703877084
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
[
上一页 ]
[ :1.703877061e+09 ]
[
下一页 ]