Web3JS文档速读 (1)这么多模块都是干什么的

Web3 的模块们

– 看文档: https://web3js.readthedocs.io/en/1.0/web3.html

– 可以发现, Web3JS 分成了 web3 整体模块, web3.eth, web3.eth.subscribe

链接与快速开始

demo.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
const Web3 = require('web3');
const MnemonicsHDWalletProvider = require('truffle-hdwallet-provider');
const PrivateKeyHDWalletProvider = require('truffle-hdwallet-provider-privkey');

const mnemonic = process.env.mnemonic;
const privateKey = process.env.privateKey;
const infuraKey = 'THIS IS INFURA ACCESS KEY';

const getProvider = () => {
if (mnemonic) {
return new MnemonicsHDWalletProvider(mnemonic, `https://rinkeby.infura.io/${infuraKey}`, 0);
}
if (privateKey) {
return new PrivateKeyHDWalletProvider(privateKey, `https://rinkeby.infura.io/${infuraKey}`);
}
throw new Error('Invalid Private Account Connection Info With Rinkeby');
}

const web3 = new Web3(getProvider());

(async () => {
const accounts = await web3.eth.getAccounts();
console.log(accounts);
})();

web3.eth.getBlockNumer().then(blockNumber => {});

Web3

.version 返回当前版本

.modules 返回可用的子模块类, 可以直接进行初始化成对象, Eth, Net, Personal, Shh, Bzz.

例如: const eth = web3.modules.Eth(provider)

.utils 工具类

.setProvider(provider) 方法将给所有 modules 提供 provider 连接器.

.providers 获取当前可用的 providers, 可以是 http, ws, ipc…

.givenProvider 获取浏览器内置连接器(可用使用 MetaMask 进行设置)

.currentProvider 获取当前使用的 provider 或者 null

1
2
3
4
5
const br = new web3.BatchRequest();

br.add(request);
// ...
br.execute();

.extend(methods) 继承某些方法, 返回新的对象.

web3.eth

与区块链和智能合约进行交互的方法集.

其中 setProvider, providers, giventProvider, currentProvider, BatchRequest, extend 与 web3 相同.

包含子模块

  • subscribe: 订阅指定事件
  • Contract: 基于 abi 和部署地址获取合约实例
  • lban: 交易地址格式基于 IBAN 和 BBAN 互转
  • personal: 操作节点的账户
  • accounts: 生成账户和给交易签名
  • abi: 加密合约的方法签名, 事件签名, 方法调用; 加解密参数; 解密日志.
  • net: 网络状况

web3.bzz

与区块链的 swarm 分布式文件仓库进行交互, 目前非稳定版本, 可能随时间有变化.

不会使用基于外部 web3 进行 setProvider 设置的链接, 必须使用时进行单独设置.

setProvider, giventProvider, currentProvider 与 web3 相同.

web3.shh

与区块链 whisper 协议交互, 用于消息广播.

其中 setProvider, providers, giventProvider, currentProvider, BatchRequest, extend 与 web3 相同.

web3.utils

内置的静态常用方法.

Donate - Support to make this site better.
捐助 - 支持我让我做得更好.