web3.eth详解

                                              --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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值