Web3.js是一个库,它有很多函数,使用它可以在以太坊生态系统中通过HTTP或IPC与本地或者以太坊远程节点交互,如查看链上信息等
各种高级语言编写的程序可以使用web3 interface来与EVM交互,在此过程中使用是的JSON-RPC(一个无状态且轻量级的远程过程调用(RPC)传送协议,其传递内容透过 JSON 为主)
1.先查看是否安装了node.js,node.js带了npm
qinjianquan@MacBook-Pro-10 ~ % node -v
v10.24.1
Node.js发布于2009年5月,是一个基于Chrome V8引擎的JavaScript运行环境,使用了一个事件驱动、非阻塞式I/O模型, 让JavaScript 运行在服务端的开发平台,它让JavaScript成为与PHP、Python、Perl、Ruby等服务端语言平起平坐的脚本语言
而npm的全称是Node Package Manager,是一个NodeJS包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准
如果未安装,请先安装命令行工具homebrew 或者 去nodejs.org安装 node.js
2.安装web3
npm install web3
此处使用web3命令和在geth控制台中使用web3命令原理上是一样的,具体方式上有所差别,如下是具体操作示范
qinjianquan@MacBook-Pro-10 ~ % node //先启动node,node提供了js代码的运行环境,现在,可以使用web3.js了
> var Web3 = require('web3') //先创建一个实例
undefined
> Web3 //查看Web3属性和功能
[Function: Web3] {
version: '1.7.3',
utils: {
_fireError: [Function: _fireError],
_jsonInterfaceMethodToString: [Function: _jsonInterfaceMethodToString],
_flattenTypes: [Function: _flattenTypes],
randomHex: [Function: randomHex],
BN: <ref *1> [Function: BN] {
BN: [Circular *1],
wordSize: 26,
isBN: [Function: isBN],
max: [Function: max],
min: [Function: min],
red: [Function: red],
_prime: [Function: prime],
mont: [Function: mont]
},
isBN: [Function: isBN],
isBigNumber: [Function: isBigNumber],
isHex: [Function: isHex],
isHexStrict: [Function: isHexStrict],
sha3: [Function: sha3] { _Hash: [Function: keccak256] },
sha3Raw: [Function: sha3Raw],
keccak256: [Function: sha3] { _Hash: [Function: keccak256] },
soliditySha3: [Function: soliditySha3],
soliditySha3Raw: [Function: soliditySha3Raw],
encodePacked: [Function: encodePacked],
isAddress: [Function: isAddress],
checkAddressChecksum: [Function: checkAddressChecksum],
toChecksumAddress: [Function: toChecksumAddress],
toHex: [Function: toHex],
toBN: [Function: toBN],
bytesToHex: [Function: bytesToHex],
hexToBytes: [Function: hexToBytes],
hexToNumberString: [Function: hexToNumberString],
hexToNumber: [Function: hexToNumber],
toDecimal: [Function: hexToNumber],
numberToHex: [Function: numberToHex],
fromDecimal: [Function: numberToHex],
hexToUtf8: [Function: hexToUtf8],
hexToString: [Function: hexToUtf8],
toUtf8: [Function: hexToUtf8],
stripHexPrefix: [Function: stripHexPrefix],
utf8ToHex: [Function: utf8ToHex],
stringToHex: [Function: utf8ToHex],
fromUtf8: [Function: utf8ToHex],
hexToAscii: [Function: hexToAscii],
toAscii: [Function: hexToAscii],
asciiToHex: [Function: asciiToHex],
fromAscii: [Function: asciiToHex],
unitMap: {
noether: '0',
wei: '1',
kwei: '1000',
Kwei: '1000',
babbage: '1000',
femtoether: '1000',
mwei: '1000000',
Mwei: '1000000',
lovelace: '1000000',
picoether: '1000000',
gwei: '1000000000',
Gwei: '1000000000',
shannon: '1000000000',
nanoether: '1000000000',
nano: '1000000000',
szabo: '1000000000000',
microether: '1000000000000',
micro: '1000000000000',
finney: '1000000000000000',
milliether: '1000000000000000',
milli: '1000000000000000',
ether: '1000000000000000000',
kether: '1000000000000000000000',
grand: '1000000000000000000000',
mether: '1000000000000000000000000',
gether: '1000000000000000000000000000',
tether: '1000000000000000000000000000000'
},
toWei: [Function: toWei],
fromWei: [Function: fromWei],
padLeft: [Function: leftPad],
leftPad: [Function: leftPad],
padRight: [Function: rightPad],
rightPad: [Function: rightPad],
toTwosComplement: [Function: toTwosComplement],
isBloom: [Function: isBloom],
isUserEthereumAddressInBloom: [Function: isUserEthereumAddressInBloom],
isContractAddressInBloom: [Function: isContractAddressInBloom],
isTopic: [Function: isTopic],
isTopicInBloom: [Function: isTopicInBloom],
isInBloom: [Function: isInBloom],
compareBlockNumbers: [Function: compareBlockNumbers],
toNumber: [Function: toNumber]
},
modules: {
Eth: [Function: Eth] { givenProvider: null, providers: [Object] },
Net: [Function: Net] { givenProvider: null, providers: [Object] },
Personal: [Function: Personal] { givenProvider: null, providers: [Object] },
Shh: [Function: Shh] { givenProvider: null, providers: [Object] },
Bzz: [Function: Bzz] { givenProvider: null }
},
givenProvider: null,
providers: {
WebsocketProvider: [Function: WebsocketProvider],
HttpProvider: [Function: HttpProvider],
IpcProvider: [Function: IpcProvider]
}
}
通过INFURA提供的API,可以实现与以太坊节点远程交互
注意:以太坊是一个分布式的网络,这意味没有中心服务器,任何一个节点都可以当做服务器
第一步,注册INFURA: https://infura.io,获取连接API
https://mainnet.infura.io/v3/4adc822d926044efaa46a37fbd87fd0c
第二步,定义变量
var url = 'https://mainnet.infura.io/v3/4adc822d926044efaa46a37fbd87fd0c' //定义变量url
undefined
> var web3 = new Web3(url) //定义变量web3
undefined
第三步,链上交互
> var address = '0xDA9dfA130Df4dE4673b89022EE50ff26f6EA73Cf'
web3.eth.getBalance(address,(err,bal) => {balance = bal}) //此处是调用函数而不是直接查看
//此处有些语法源于智能合约语言Solidity,读者可以先了解一下Solidity
Promise {
<pending>,
domain:
Domain {
domain: null,
_events:
[Object: null prototype] {
removeListener: [Function: updateExceptionCapture],
newListener: [Function: updateExceptionCapture],
error: [Function: debugDomainError] },
_eventsCount: 3,
_maxListeners: undefined,
members: [],
[Symbol(kWeak)]: WeakReference {} } }
> balance //查看余额,单位 Wei
'2113030002434567800000000'
> web3.utils.fromWei(balance,'ether') //转换为ether
'2113030.0024345678'
以下账户只做演示,请不要使用
> web3.eth.accounts.create()
{ address: '0xBC1Ee0f8474CC71288f1830Bb73E2aE5D60e5cd0',
privateKey:
'0xf4a4e1c0dd981bb1391fd30a5d3b5b94b80ba78f3c6baa31c1ef6ef2a3046f8e',
signTransaction: [Function: signTransaction],
sign: [Function: sign],
encrypt: [Function: encrypt] }
eth是一个对象,它有很多功能,可以用于与以太坊交互,可以使用定义好的web3查看
> web3
Web3 {
currentProvider: [Getter/Setter],
_requestManager: RequestManager {
provider: HttpProvider {
withCredentials: false,
timeout: 0,
headers: undefined,
agent: undefined,
connected: true,
host: 'https://mainnet.infura.io/v3/4adc822d926044efaa46a37fbd87fd0c',
httpsAgent: [Agent]
},
providers: {
WebsocketProvider: [Function: WebsocketProvider],
HttpProvider: [Function: HttpProvider],
IpcProvider: [Function: IpcProvider]
},
subscriptions: Map(0) {}
},
givenProvider: null,
providers: {
WebsocketProvider: [Function: WebsocketProvider],
HttpProvider: [Function: HttpProvider],
IpcProvider: [Function: IpcProvider]
},
_provider: HttpProvider {
withCredentials: false,
timeout: 0,
headers: undefined,
agent: undefined,
connected: true,
host: 'https://mainnet.infura.io/v3/4adc822d926044efaa46a37fbd87fd0c',
httpsAgent: Agent {
_events: [Object: null prototype],
_eventsCount: 2,
_maxListeners: undefined,
defaultPort: 443,
protocol: 'https:',
options: [Object: null prototype],
requests: [Object: null prototype] {},
sockets: [Object: null prototype] {},
freeSockets: [Object: null prototype],
keepAliveMsecs: 1000,
keepAlive: true,
maxSockets: Infinity,
maxFreeSockets: 256,
scheduling: 'lifo',
maxTotalSockets: Infinity,
totalSocketCount: 1,
maxCachedSessions: 100,
_sessionCache: [Object],
[Symbol(kCapture)]: false
}
},
setProvider: [Function (anonymous)],
setRequestManager: [Function (anonymous)],
BatchRequest: [Function: bound Batch],
extend: [Function: ex] {
formatters: {
inputDefaultBlockNumberFormatter: [Function: inputDefaultBlockNumberFormatter],
inputBlockNumberFormatter: [Function: inputBlockNumberFormatter],
inputCallFormatter: [Function: inputCallFormatter],
inputTransactionFormatter: [Function: inputTransactionFormatter],
inputAddressFormatter: [Function: inputAddressFormatter],
inputPostFormatter: [Function: inputPostFormatter],
inputLogFormatter: [Function: inputLogFormatter],
inputSignFormatter: [Function: inputSignFormatter],
inputStorageKeysFormatter: [Function: inputStorageKeysFormatter],
outputProofFormatter: [Function: outputProofFormatter],
outputBigNumberFormatter: [Function: outputBigNumberFormatter],
outputTransactionFormatter: [Function: outputTransactionFormatter],
outputTransactionReceiptFormatter: [Function: outputTransactionReceiptFormatter],
outputBlockFormatter: [Function: outputBlockFormatter],
outputLogFormatter: [Function: outputLogFormatter],
outputPostFormatter: [Function: outputPostFormatter],
outputSyncingFormatter: [Function: outputSyncingFormatter]
},
utils: {
_fireError: [Function: _fireError],
_jsonInterfaceMethodToString: [Function: _jsonInterfaceMethodToString],
_flattenTypes: [Function: _flattenTypes],
randomHex: [Function: randomHex],
BN: [Function],
isBN: [Function: isBN],
isBigNumber: [Function: isBigNumber],
isHex: [Function: isHex],
isHexStrict: [Function: isHexStrict],
sha3: [Function],
sha3Raw: [Function: sha3Raw],
keccak256: [Function],
soliditySha3: [Function: soliditySha3],
soliditySha3Raw: [Function: soliditySha3Raw],
encodePacked: [Function: encodePacked],
isAddress: [Function: isAddress],
checkAddressChecksum: [Function: checkAddressChecksum],
toChecksumAddress: [Function: toChecksumAddress],
toHex: [Function: toHex],
toBN: [Function: toBN],
bytesToHex: [Function: bytesToHex],
hexToBytes: [Function: hexToBytes],
hexToNumberString: [Function: hexToNumberString],
hexToNumber: [Function: hexToNumber],
toDecimal: [Function: hexToNumber],
numberToHex: [Function: numberToHex],
fromDecimal: [Function: numberToHex],
hexToUtf8: [Function: hexToUtf8],
hexToString: [Function: hexToUtf8],
toUtf8: [Function: hexToUtf8],
stripHexPrefix: [Function: stripHexPrefix],
utf8ToHex: [Function: utf8ToHex],
stringToHex: [Function: utf8ToHex],
fromUtf8: [Function: utf8ToHex],
hexToAscii: [Function: hexToAscii],
toAscii: [Function: hexToAscii],
asciiToHex: [Function: asciiToHex],
fromAscii: [Function: asciiToHex],
unitMap: [Object],
toWei: [Function: toWei],
fromWei: [Function: fromWei],
padLeft: [Function: leftPad],
leftPad: [Function: leftPad],
padRight: [Function: rightPad],
rightPad: [Function: rightPad],
toTwosComplement: [Function: toTwosComplement],
isBloom: [Function: isBloom],
isUserEthereumAddressInBloom: [Function: isUserEthereumAddressInBloom],
isContractAddressInBloom: [Function: isContractAddressInBloom],
isTopic: [Function: isTopic],
isTopicInBloom: [Function: isTopicInBloom],
isInBloom: [Function: isInBloom],
compareBlockNumbers: [Function: compareBlockNumbers],
toNumber: [Function: toNumber]
},
Method: [Function: Method]
},
version: '1.7.3',
utils: {
_fireError: [Function: _fireError],
_jsonInterfaceMethodToString: [Function: _jsonInterfaceMethodToString],
_flattenTypes: [Function: _flattenTypes],
randomHex: [Function: randomHex],
BN: <ref *1> [Function: BN] {
BN: [Circular *1],
wordSize: 26,
isBN: [Function: isBN],
max: [Function: max],
min: [Function: min],
red: [Function: red],
_prime: [Function: prime],
mont: [Function: mont]
},
isBN: [Function: isBN],
isBigNumber: [Function: isBigNumber],
isHex: [Function: isHex],
isHexStrict: [Function: isHexStrict],
sha3: [Function: sha3] { _Hash: [Function: keccak256] },
sha3Raw: [Function: sha3Raw],
keccak256: [Function: sha3] { _Hash: [Function: keccak256] },
soliditySha3: [Function: soliditySha3],
soliditySha3Raw: [Function: soliditySha3Raw],
encodePacked: [Function: encodePacked],
isAddress: [Function: isAddress],
checkAddressChecksum: [Function: checkAddressChecksum],
toChecksumAddress: [Function: toChecksumAddress],
toHex: [Function: toHex],
toBN: [Function: toBN],
bytesToHex: [Function: bytesToHex],
hexToBytes: [Function: hexToBytes],
hexToNumberString: [Function: hexToNumberString],
hexToNumber: [Function: hexToNumber],
toDecimal: [Function: hexToNumber],
numberToHex: [Function: numberToHex],
fromDecimal: [Function: numberToHex],
hexToUtf8: [Function: hexToUtf8],
hexToString: [Function: hexToUtf8],
toUtf8: [Function: hexToUtf8],
stripHexPrefix: [Function: stripHexPrefix],
utf8ToHex: [Function: utf8ToHex],
stringToHex: [Function: utf8ToHex],
fromUtf8: [Function: utf8ToHex],
hexToAscii: [Function: hexToAscii],
toAscii: [Function: hexToAscii],
asciiToHex: [Function: asciiToHex],
fromAscii: [Function: asciiToHex],
unitMap: {
noether: '0',
wei: '1',
kwei: '1000',
Kwei: '1000',
babbage: '1000',
femtoether: '1000',
mwei: '1000000',
Mwei: '1000000',
lovelace: '1000000',
picoether: '1000000',
gwei: '1000000000',
Gwei: '1000000000',
shannon: '1000000000',
nanoether: '1000000000',
nano: '1000000000',
szabo: '1000000000000',
microether: '1000000000000',
micro: '1000000000000',
finney: '1000000000000000',
milliether: '1000000000000000',
milli: '1000000000000000',
ether: '1000000000000000000',
kether: '1000000000000000000000',
grand: '1000000000000000000000',
mether: '1000000000000000000000000',
gether: '1000000000000000000000000000',
tether: '1000000000000000000000000000000'
},
toWei: [Function: toWei],
fromWei: [Function: fromWei],
padLeft: [Function: leftPad],
leftPad: [Function: leftPad],
padRight: [Function: rightPad],
rightPad: [Function: rightPad],
toTwosComplement: [Function: toTwosComplement],
isBloom: [Function: isBloom],
isUserEthereumAddressInBloom: [Function: isUserEthereumAddressInBloom],
isContractAddressInBloom: [Function: isContractAddressInBloom],
isTopic: [Function: isTopic],
isTopicInBloom: [Function: isTopicInBloom],
isInBloom: [Function: isInBloom],
compareBlockNumbers: [Function: compareBlockNumbers],
toNumber: [Function: toNumber]
},
eth: <ref *2> Eth {
currentProvider: [Getter/Setter],
_requestManager: RequestManager {
provider: [HttpProvider],
providers: [Object],
subscriptions: Map(0) {}
},
givenProvider: null,
providers: {
WebsocketProvider: [Function: WebsocketProvider],
HttpProvider: [Function: HttpProvider],
IpcProvider: [Function: IpcProvider]
},
_provider: HttpProvider {
withCredentials: false,
timeout: 0,
headers: undefined,
agent: undefined,
connected: true,
host: 'https://mainnet.infura.io/v3/4adc822d926044efaa46a37fbd87fd0c',
httpsAgent: [Agent]
},
setProvider: [Function (anonymous)],
setRequestManager: [Function (anonymous)],
BatchRequest: [Function: bound Batch],
extend: [Function: ex] {
formatters: [Object],
utils: [Object],
Method: [Function: Method]
},
handleRevert: [Getter/Setter],
defaultCommon: [Getter/Setter],
defaultHardfork: [Getter/Setter],
defaultChain: [Getter/Setter],
transactionPollingTimeout: [Getter/Setter],
transactionPollingInterval: [Getter/Setter],
transactionConfirmationBlocks: [Getter/Setter],
transactionBlockTimeout: [Getter/Setter],
blockHeaderTimeout: [Getter/Setter],
defaultAccount: [Getter/Setter],
defaultBlock: [Getter/Setter],
maxListenersWarningThreshold: [Getter/Setter],
clearSubscriptions: [Function: bound ],
removeSubscriptionById: [Function: bound ],
net: Net {
currentProvider: [Getter/Setter],
_requestManager: [RequestManager],
givenProvider: null,
providers: [Object],
_provider: [HttpProvider],
setProvider: [Function (anonymous)],
setRequestManager: [Function (anonymous)],
BatchRequest: [Function: bound Batch],
extend: [Function],
getId: [Function],
isListening: [Function],
getPeerCount: [Function],
getNetworkType: [Function: bound getNetworkType]
},
accounts: Accounts {
currentProvider: [Getter/Setter],
_requestManager: [RequestManager],
givenProvider: null,
providers: [Object],
_provider: [HttpProvider],
setProvider: [Function (anonymous)],
setRequestManager: [Function (anonymous)],
_ethereumCall: [Object],
wallet: [Wallet]
},
personal: Personal {
currentProvider: [Getter/Setter],
_requestManager: [RequestManager],
givenProvider: null,
providers: [Object],
_provider: [HttpProvider],
setProvider: [Function (anonymous)],
setRequestManager: [Function (anonymous)],
BatchRequest: [Function: bound Batch],
extend: [Function],
net: [Net],
defaultAccount: [Getter/Setter],
defaultBlock: [Getter/Setter],
getAccounts: [Function],
newAccount: [Function],
unlockAccount: [Function],
lockAccount: [Function],
importRawKey: [Function],
sendTransaction: [Function],
signTransaction: [Function],
sign: [Function],
ecRecover: [Function]
},
Contract: [Function: Contract] {
setProvider: [Function (anonymous)],
defaultAccount: null,
defaultBlock: 'latest',
transactionBlockTimeout: 50,
transactionConfirmationBlocks: 24,
transactionPollingTimeout: 750,
transactionPollingInterval: 1000,
blockHeaderTimeout: 10,
handleRevert: false,
_requestManager: [RequestManager],
_ethAccounts: [Accounts],
currentProvider: [HttpProvider]
},
Iban: [class Iban],
abi: ABICoder {},
ens: ENS {
eth: [Circular *2],
_detectedAddress: null,
_lastSyncCheck: null,
registry: [Getter],
resolverMethodHandler: [Getter],
registryAddress: [Getter/Setter]
},
getNodeInfo: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'web3_clientVersion'
},
getProtocolVersion: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'eth_protocolVersion'
},
getCoinbase: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'eth_coinbase'
},
isMining: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'eth_mining'
},
getHashrate: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'eth_hashrate'
},
isSyncing: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'eth_syncing'
},
getGasPrice: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'eth_gasPrice'
},
getFeeHistory: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'eth_feeHistory'
},
getAccounts: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'eth_accounts'
},
getBlockNumber: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'eth_blockNumber'
},
getBalance: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'eth_getBalance'
},
getStorageAt: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'eth_getStorageAt'
},
getCode: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'eth_getCode'
},
getBlock: [Function: send] {
method: [Method],
request: [Function: bound ],
call: [Function: blockCall]
},
getUncle: [Function: send] {
method: [Method],
request: [Function: bound ],
call: [Function: uncleCall]
},
getBlockTransactionCount: [Function: send] {
method: [Method],
request: [Function: bound ],
call: [Function: getBlockTransactionCountCall]
},
getBlockUncleCount: [Function: send] {
method: [Method],
request: [Function: bound ],
call: [Function: uncleCountCall]
},
getTransaction: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'eth_getTransactionByHash'
},
getTransactionFromBlock: [Function: send] {
method: [Method],
request: [Function: bound ],
call: [Function: transactionFromBlockCall]
},
getTransactionReceipt: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'eth_getTransactionReceipt'
},
getTransactionCount: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'eth_getTransactionCount'
},
sendSignedTransaction: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'eth_sendRawTransaction'
},
signTransaction: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'eth_signTransaction'
},
sendTransaction: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'eth_sendTransaction'
},
sign: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'eth_sign'
},
call: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'eth_call'
},
estimateGas: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'eth_estimateGas'
},
submitWork: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'eth_submitWork'
},
getWork: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'eth_getWork'
},
getPastLogs: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'eth_getLogs'
},
getChainId: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'eth_chainId'
},
requestAccounts: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'eth_requestAccounts'
},
getProof: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'eth_getProof'
},
getPendingTransactions: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'eth_pendingTransactions'
},
createAccessList: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'eth_createAccessList'
},
subscribe: [Function (anonymous)]
},
shh: Shh {
currentProvider: [Getter/Setter],
_requestManager: RequestManager {
provider: [HttpProvider],
providers: [Object],
subscriptions: Map(0) {}
},
givenProvider: null,
providers: {
WebsocketProvider: [Function: WebsocketProvider],
HttpProvider: [Function: HttpProvider],
IpcProvider: [Function: IpcProvider]
},
_provider: HttpProvider {
withCredentials: false,
timeout: 0,
headers: undefined,
agent: undefined,
connected: true,
host: 'https://mainnet.infura.io/v3/4adc822d926044efaa46a37fbd87fd0c',
httpsAgent: [Agent]
},
setProvider: [Function (anonymous)],
setRequestManager: [Function (anonymous)],
BatchRequest: [Function: bound Batch],
extend: [Function: ex] {
formatters: [Object],
utils: [Object],
Method: [Function: Method]
},
net: Net {
currentProvider: [Getter/Setter],
_requestManager: [RequestManager],
givenProvider: null,
providers: [Object],
_provider: [HttpProvider],
setProvider: [Function (anonymous)],
setRequestManager: [Function (anonymous)],
BatchRequest: [Function: bound Batch],
extend: [Function],
getId: [Function],
isListening: [Function],
getPeerCount: [Function]
},
subscribe: [Function (anonymous)],
getVersion: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'shh_version'
},
getInfo: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'shh_info'
},
setMaxMessageSize: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'shh_setMaxMessageSize'
},
setMinPoW: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'shh_setMinPoW'
},
markTrustedPeer: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'shh_markTrustedPeer'
},
newKeyPair: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'shh_newKeyPair'
},
addPrivateKey: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'shh_addPrivateKey'
},
deleteKeyPair: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'shh_deleteKeyPair'
},
hasKeyPair: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'shh_hasKeyPair'
},
getPublicKey: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'shh_getPublicKey'
},
getPrivateKey: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'shh_getPrivateKey'
},
newSymKey: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'shh_newSymKey'
},
addSymKey: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'shh_addSymKey'
},
generateSymKeyFromPassword: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'shh_generateSymKeyFromPassword'
},
hasSymKey: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'shh_hasSymKey'
},
getSymKey: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'shh_getSymKey'
},
deleteSymKey: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'shh_deleteSymKey'
},
newMessageFilter: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'shh_newMessageFilter'
},
getFilterMessages: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'shh_getFilterMessages'
},
deleteMessageFilter: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'shh_deleteMessageFilter'
},
post: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'shh_post'
},
unsubscribe: [Function: send] {
method: [Method],
request: [Function: bound ],
call: 'shh_unsubscribe'
}
},
bzz: Bzz {
givenProvider: null,
currentProvider: null,
isAvailable: [Function (anonymous)],
upload: [Function (anonymous)],
download: [Function (anonymous)]
}
}
web3.js 有很多函数和命令,更多内容,请读者参见参考文档:https://web3js.readthedocs.io/en/v1.2.0/index.html