--1--
web3.eth
该web3-eth软件包允许您与以太坊区块链和以太坊智能合约进行交互。
var Eth = require(‘web3-eth’);
// 类库加载
var eth = new Eth(Eth.givenProvider || ‘ws://some.local-or-remote.node:8546’);
// 类库加载
var Web3 = require(‘web3’);
var web3 = new Web3(Web3.givenProvider || ‘ws://some.local-or-remote.node:8546’);
关于校验和地址的注意事项
此包的函数返回的所有以太坊地址都作为校验和地址返回。这意味着一些字母是大写的,一些是小写的。基于此,它将计算地址的校验和并证明其正确性。传递给函数时,错误的校验和地址将引发错误。如果要绕过校验和检查,可以将地址设置为小写或大写。
示例
web3.eth.getAccounts(console.log);//返回节点控制的帐户列表
[“0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe” ,“0x85F43D8a49eeB85d32Cf465507DD71d507100C1d”]
setProvider
web3.setProvider(myProvider)//设置连接的节点信息
web3.eth.setProvider(myProvider)
web3.shh.setProvider(myProvider)
web3.bzz.setProvider(myProvider)…
将更改其模块的提供程序。
注意
当伞包调用web3它也将设置供应商所有子模块web3.eth,web3.shh等除非web3.bzz它需要在任何时候都一个单独的供应商。
参数
Object- myProvider:有效的提供者。
返回
Boolean
示例
var Web3 = require(‘web3’);var web3 = new Web3(‘http://localhost:8545’);// 或
var web3 = new Web3(new Web3.providers.HttpProvider(‘http://localhost:8545’));// change provider
web3.setProvider(‘ws://localhost:8546’);// 或
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”
提供者
web3.providersweb3.eth.providersweb3.shh.providersweb3.bzz.providers…
包含当前可用的提供程序。
价值
Object 与以下提供商:
Object- HttpProvider:不推荐使用 HTTP提供程序,因为它不适用于订阅。
Object- WebsocketProvider:Websocket提供程序是旧版浏览器中使用的标准。
Object- IpcProvider:IPC提供程序在运行本地节点时使用node.js dapps。提供最安全的连接。
示例
var Web3 = require(‘web3’);
//各种节点连接方法
var web3 = new Web3(Web3.givenProvider || ‘ws://remotenode.com:8546’);// 或
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”
givenProvider
web3.givenProvider
web3.eth.givenProvider
web3.shh.givenProvider
web3.bzz.givenProvider…
在兼容以太坊的浏览器中使用web3.js时,它将使用该浏览器设置当前的本机提供程序。将通过(浏览器)环境返回给定的提供者,否则null。
返回
Object:给定的提供者集或null;
示例
currentProvider
web3.currentProvider
web3.eth.currentProvider
web3.shh.currentProvider
web3.bzz.currentProvider…
否则将返回当前提供者null。
返回
Object:当前提供商集或null;
示例
BatchRequest
new web3.BatchRequest()
new web3.eth.BatchRequest()
new web3.shh.BatchRequest()
new web3.bzz.BatchRequest()
用于创建和执行批处理请求的类。
参数
没有
返回
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(methods)
web3.eth.extend(methods)
web3.shh.extend(methods)
web3.bzz.extend(methods)…
允许扩展web3模块。
注意
您还*.extend.formatters可以使用其他格式化函数来输入和输出格式。有关功能详细信息,请参阅源文件。
参数
methods- Array:方法描述数组:
name- String:要添加的方法的名称。
call- String:RPC方法名称。
params- Number:(可选)该函数的参数数量。默认值为0。
inputFormatter- Array:(可选)inputformatter函数数组。每个数组项都响应一个函数参数,因此如果您希望某些参数不被格式化,请添加一个参数null。
outputFormatter - ``Function:(可选)可用于格式化方法的输出。
property- String:(可选)要添加到模块的属性的名称。如果未设置任何属性,则会直接将其添加到模块中。
methods- Object:具有方法描述对象数组的扩展对象,如下所示:
返回
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 {…},
…}
defaultAccount
web3.eth.defaultAccount
"from"如果没有"from"为以下方法指定属性,则此缺省地址将用作缺省属性:
web3.eth.sendTransaction()
web3.eth.call()
new web3.eth.Contract