Web3.js 中文Api文档
这是 web3.js
库的主类。
var Web3 = require('web3');
> Web3.utils
> Web3.version
> Web3.givenProvider
> Web3.providers
> Web3.modules
WEB3 -> ETH网络: 老铁,当前网络的最新高度是多少
ETH网络 --> WEB3: 搜索查询后的结果是:12345678
WEB3 -> ETH网络: 谢谢老铁
Web3.modules
Web3.modules
将返回具有所有子模块的对象,以便能够手动实例化它们。
返回值
Object
: 构造函数的列表:
Eth
-Constructor
: 用于与以太坊网络(web3.eth)交互的Eth模块。Net
-Constructor
: 用于与网络属性进行交互的Net模块(web3.eth.net)。Personal
-Constructor
: 用于与以太坊账户进行交互的个人模块(web3.eth.personal)。Shh
-Constructor
: 用于与加密协议交互的Shh模块(web3.shh)。Bzz
-Constructor
: 用于与群体网络(web3.bzz)进行交互的Bzz模块。
例子
Web3.modules
> {
Eth: Eth(provider),
Net: Net(provider),
Personal: Personal(provider),
Shh: Shh(provider),
Bzz: Bzz(provider),
}
Web3 实例
Web3类是一个伞包,用于容纳所有与以太坊相关的模块。
var Web3 = require('web3');
// "Web3.providers.givenProvider" will be set if in an Ethereum supported browser.
var web3 = new Web3(Web3.givenProvider || 'ws://some.local-or-remote.node:8546');
> web3.eth
> web3.shh
> web3.bzz
> web3.utils
> web3.version
version
Web3类的静态可访问属性以及实例的属性。下面两种方式都可以获取到。
Web3.version
web3.version
这个属性是包含 web3.js 库的当前软件包版本。
返回值
String
: 当前版本。
例子
web3.version;
> "1.2.3"
utils
Web3类的静态可访问属性以及实例的属性。下面两种方式都可以获取到。
Web3.utils
web3.utils
setProvider
web3.setProvider(myProvider)
web3.eth.setProvider(myProvider)
web3.shh.setProvider(myProvider)
web3.bzz.setProvider(myProvider)
...
将更改其模块的提供程序。
When called on the umbrella package
web3
it will also set the provider for all sub modulesweb3.eth
,web3.shh
, etc. EXCEPTweb3.bzz
which needs a separate provider at all times.
参数
Object
-myProvider
: 有效的 provider 。
返回值
Boolean
例子
var Web3 = require('web3');
var web3 = new Web3('http://localhost:8545');
// or
var web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545'));
// change provider
web3.setProvider('ws://localhost:8546');
// or
web3.setProvider(new Web3.providers.WebsocketProvider('ws://localhost:8546'));
// Using the IPC provider in node.js
var net = require('net');
var web3 = new Web3('/Users/myuser/Library/Ethereum/geth.ipc', net); // mac os path
// or
var web3 = new Web3(new Web3.providers.IpcProvider('/Users/myuser/Library/Ethereum/geth.ipc', net)); // mac os path
// on windows the path is: "\\\\.\\pipe\\geth.ipc"
// on linux the path is: "/users/myuser/.ethereum/geth.ipc"
providers
web3.providers
web3.eth.providers
web3.shh.providers
web3.bzz.providers
...
包含当前可用的提供程序。
值
Object
与以下提供商:
Object
-HttpProvider
: 不建议使用HTTP提供程序,因为它不适用于订阅。(没办法推送)Object
-WebsocketProvider
: Websocket提供程序是在旧版浏览器中使用的标准。Object
-IpcProvider
: 运行本地节点时,将使用IPC提供程序的node.js dapps。提供最安全的连接。
例子
var Web3 = require('web3');
// use the given Provider, e.g in Mist, or instantiate a new websocket provider
var web3 = new Web3(Web3.givenProvider || 'ws://remotenode.com:8546');
// or
var web3 = new Web3(Web3.givenProvider || new Web3.providers.WebsocketProvider('ws://remotenode.com:8546'));
// Using the IPC provider in node.js
var net = require('net');
var web3 = new Web3('/Users/myuser/Library/Ethereum/geth.ipc', net); // mac os path
// or
var web3 = new Web3(new Web3.providers.IpcProvider('/Users/myuser/Library/Ethereum/geth.ipc', net)); // mac os path
// on windows the path is: "\\\\.\\pipe\\geth.ipc"
// on linux the path is: "/users/myuser/.ethereum/geth.ipc"
Configuration
// ====
// Http
// ====
var Web3HttpProvider = require('web3-providers-http');
var options = {
keepAlive: true,
withCredentials: false,
timeout: 20000, // ms
headers: [
{
name: 'Access-Control-Allow-Origin',
value: '*'
},
{
...
}
],
agent: {
http: http.Agent(...),
baseUrl: ''
}
};
var provider = new Web3HttpProvider('http://localhost:8545', options);
// ==========
// Websockets
// ==========
var Web3WsProvider = require('web3-providers-ws');
var options = {
timeout: 30000, // ms
// Useful for credentialed urls, e.g: ws://username:password@localhost:8546
headers: {
authorization: 'Basic username:password'
},
clientConfig: {
// Useful if requests are large
maxReceivedFrameSize: 100000000, // bytes - default: 1MiB
maxReceivedMessageSize: 100000000, // bytes - default: 8MiB
// Useful to keep a connection alive
keepalive: true,
keepaliveInterval: 60000 // ms
},
// Enable auto reconnection
reconnect: {
auto: true,
delay: 5000, // ms
maxAttempts: 5,
onTimeout: false
}
};
var ws = new Web3WsProvider('ws://localhost:8546', options);
有关Http和Websocket提供程序模块的更多信息,可以在这里找到:
HttpProvider
WebsocketProvider
givenProvider
web3.givenProvider
web3.eth.givenProvider
web3.shh.givenProvider
web3.bzz.givenProvider
...
在以太坊兼容的浏览器中使用web3.js时,它将由该浏览器使用当前的本机提供程序进行设置。将通过(浏览器)环境返回给定的提供程序,否则 null
。
返回值
Object
: 给定的 provider 集 或者 null
;
例子
web3.setProvider(web3.givenProvider || "ws://remotenode.com:8546");
currentProvider
web3.currentProvider
web3.eth.currentProvider
web3.shh.currentProvider
web3.bzz.currentProvider
...
将返回当前 provider ,否则 null
。
返回值
Object
: 当前 provider 集或null
。
例子
if(!web3.currentProvider) {
web3.setProvider("http://localhost:8545");
}
BatchRequest
new web3.BatchRequest()
new web3.eth.BatchRequest()
new web3.shh.BatchRequest()
new web3.bzz.BatchRequest()
用于创建和执行批处理请求的类。
参数
none
返回值
Object
: 使用以下方法:
add(request)
: 将请求对象添加到批处理调用中。execute()
: 将执行批处理请求。
例子
var contract = new web3.eth.Contract(abi, address);
var batch = new web3.BatchRequest();
batch.add(web3.eth.getBalance.request('0x0000000000000000000000000000000000000000', 'latest', callback));
batch.add(contract.methods.balance(address).call.request({from: '0x0000000000000000000000000000000000000000'}, callback2));
batch.execute();
web3 extend
web3.extend(methods)
web3.eth.extend(methods)
web3.shh.extend(methods)
web3.bzz.extend(methods)
...
允许扩展web3模块。
.. note:: You also have *.extend.formatters
as additional formatter functions to be used for input and output formatting. Please see the source file <https://github.com/ethereum/web3.js/blob/1.x/packages/web3-core-helpers/src/formatters.js>
_ for function details.
参数
methods
-Object
: 带有方法描述对象数组的扩展对象,如下所示:property
-String
: (可选)要添加到模块的属性的名称。如果未设置任何属性,则将其直接添加到模块中。methods
-Array
: 方法描述数组:name
-String
: 要添加的方法的名称。call
-String
: RPC方法名称。params
-Number
: (可选)该功能的参数数量。默认值0。inputFormatter
-Array
:(可选)inputformatter函数的数组。每个数组项都对一个函数参数做出响应,因此,如果您不希望某些参数格式化,请添加一个null
。outputFormatter -
Function`:(可选)可用于格式化方法的输出。
返回值
Object
: 扩展模块。
例子
web3.extend({
property: 'myModule',
methods: [{
name: 'getBalance',
call: 'eth_getBalance',
params: 2,
inputFormatter: [web3.extend.formatters.inputAddressFormatter, web3.extend.formatters.inputDefaultBlockNumberFormatter],
outputFormatter: web3.utils.hexToNumberString
},{
name: 'getGasPriceSuperFunction',
call: 'eth_gasPriceSuper',
params: 2,
inputFormatter: [null, web3.utils.numberToHex]
}]
});
web3.extend({
methods: [{
name: 'directCall',
call: 'eth_callForFun',
}]
});
console.log(web3);
> Web3 {
myModule: {
getBalance: function(){},
getGasPriceSuperFunction: function(){}
},
directCall: function(){},
eth: Eth {...},
bzz: Bzz {...},
...
}