web3.js 1.0中文手册

web3
web3.version - 版本信息 web3.modules - 子模块集合对象 web3.setProvider - 设置服务提供器 web3.providers - 服务提供器集合对象 web3.givenProvider - 原生服务提供器 web3.currentProvider - 当前服务提供器 web3.BatchRequest - 批量请求 web3.extend - 模块继承
web3.eth
web3.eth.defaultAccount - 默认账户 web3.eth.defaultBlock - 默认块 web3.eth.getProtocolVersion - 返回协议版本信息 web3.eth.isSyncing - 检查节点是否同步 web3.eth.getCoinbase - 返回挖矿收益账户 web3.eth.isMining - 检查节点是否在挖矿 web3.eth.getHashrate - 返回节点旳哈希计算速度 web3.eth.getGasPrice - 返回当前gas价格 web3.eth.getAccounts - 返回账户列表 web3.eth.getBlockNumber - 返回当前块编号 web3.eth.getBalance - 返回指定账户余额 web3.eth.getStorageAt - 返回指定地址存储内容 web3.eth.getCode - 返回指定地址的代码 web3.eth.getBlock - 返回指定块 web3.eth.getBlockTransactionCount - 返回指定块中的交易数量 web3.eth.getUncle - 返回指定叔伯块 web3.eth.getTransaction - 返回指定交易对象 web3.eth.getTransactionFromBlock - 返回块中指定交易对象 web3.eth.getTransactionReceipt - 返回指定交易的收据 web3.eth.getTransactionCount - 返回指定地址发生的交易数量 web3.eth.sendTransaction - 发送交易 web3.eth.sendSignedTransaction - 发送已签名交易 web3.eth.sign - 为数据生成签名 web3.eth.signTransaction - 为交易生成签名 web3.eth.call - 执行消息调用 web3.eth.estimateGas - 估算gas用量 web3.eth.getPastLogs - 返回历史日志 web3.eth.getCompilers - 返回可用编译器清单 web3.eth.compile.solidity - 编译solidity代码 web3.eth.compile.lll - 编译lll代码 web3.eth.compile.serpent - 编译serpent代码 web3.eth.getWork - 返回当前挖矿工作情况 web3.eth.submitWork - 提交POW解决方案
web3.eth.subscribe
web3.eth.subscribe - 订阅链上事件 web3.eth.clearSubscriptions - 复位订阅状态 web3.eth.subscribe('pendingTransactions') - 订阅挂起交易事件 web3.eth.subscribe('newBlockHeaders') - 订阅区块头生成事件 web3.eth.subscribe('syncing') - 订阅同步事件 web3.eth.subscribe('logs') - 订阅日志
智能合约
web3.eth.Contract - 合约构造函数 options - 合约配置对象 options.address - 合约地址 options.jsonInterface - 合约JSON接口 clone - 克隆合约 deploy - 部署合约 methods - 为合约方法创建交易 call - 调用合约方法 send - 发送合约方法交易 estimateGas - 估算合约方法gas用量 encodeABI - ABI编码合约方法 once - 单次订阅合约事件 events - 订阅合约事件 events.allEvents - 订阅全部事件 getPastEvents - 读取历史事件
账户管理
web3.eth.accounts - 账户管理与交易签名 web3.eth.accounts.create - 创建账户 web3.eth.accounts.privateKeyToAccount - 使用指定私钥创建账户 web3.eth.accounts.recoverTransaction - 提取交易的签名账户 web3.eth.accounts.hashMessage - 计算消息的哈希 web3.eth.accounts.sign - 为数据生成签名 web3.eth.accounts.recover - 提取数据的签名账户 web3.eth.accounts.encrypt - 加密指定私钥 web3.eth.accounts.decrypt - 解密keystore对象 web3.eth.accounts.wallet - 钱包对象 web3.eth.accounts.wallet.create - 在钱包中创建账户 web3.eth.accounts.wallet.add - 向钱包添加已有账户 web3.eth.accounts.wallet.remove - 从钱包中移除指定账户 web3.eth.accounts.wallet.clear - 清空钱包 web3.eth.accounts.wallet.encrypt - 加密钱包 web3.eth.accounts.wallet.decrypt - 解密钱包 web3.eth.accounts.wallet.save - 保存钱包 web3.eth.accounts.wallet.load - 载入钱包
账户交互
web3.eth.personal - 账户交互 web3.eth.personal.newAccount - 创建新账户 web3.eth.personal.sign - 为数据生成签名 web3.eth.personal.ecRecover - 提取数据的签名账户 web3.eth.personal.signTransaction - 为交易生成签名
应用二进制接口ABI
web3.eth.abi - ABI管理 web3.eth.abi.encodeFunctionSignature - 函数编码 web3.eth.abi.encodeEventSignature - 事件编码 web3.eth.abi.encodeParameter - 参数编码 web3.eth.abi.encodeParameters - 参数组编码 web3.eth.abi.encodeFunctionCall - 函数调用编码 web3.eth.abi.decodeParameter - 参数解码 web3.eth.abi.decodeParameters - 参数组解码 web3.eth.abi.decodeLog - 日志解码
辅助工具
web3.utils - 辅助工具函数集 web3.utils.randomHex - 生成伪随机16进制字符串 web3.utils._ - underscore接口 web3.utils.BN - BN.js接口 web3.utils.isBN - 检查给定参数是否BN对象 web3.utils.isBigNumber - 检查给定参数是否为BigNumber对象 web3.utils.sha3 - 计算sha3哈希值 web3.utils.soliditySha3 - solidity方式计算sha3哈希 web3.utils.isHex - 检查给定参数是否为16进制 web3.utils.isHexStrict - 严格模式16进制检查 web3.utils.isAddress - 检查给定参数是否为有效地址 web3.utils.toChecksumAddress - 转换为校验和地址 web3.utils.checkAddressChecksum - 校验地址 web3.utils.toHex - 转换为16进制字符串 web3.utils.toBN - 转换为BN对象 web3.utils.hexToNumberString - 转换为10进制数值字符串 web3.utils.hexToNumber - 转换为数值 web3.utils.numberToHex - 数值转换为16进制表示 web3.utils.hexToUtf8 - 16进制字符串转换为utf-8 web3.utils.hexToAscii - 16进制字符串转换为ascii web3.utils.utf8ToHex - utf-8字符串转换为16进制 web3.utils.asciiToHex - ascii字符串转换为16进制 web3.utils.hexToBytes - 16进制字符串转换为字节数组 web3.utils.toWei - 转换到wei web3.utils.fromWei - 从wei转换到其他以太单位 web3.utils.unitMap - 以太单位换算表 web3.utils.padLeft - 左侧零补齐 web3.utils.padRight - 右侧零补齐
网络交互
web3.*.net - 网络交互 web3.*.net.getId - 返回网络id web3.*.net.isListening - 检查节点监听状态 web3.*.net.getPeerCount - 返回已连接对端节点数
地址转换
web3.eth.Iban - 创建Iban对象 web3.eth.Iban.toAddress - 将iban对象转换为以太坊地址 web3.eth.Iban.toIban - 将以太坊地址转换为Iban对象 web3.eth.Iban.toAddress - 将iban对象转换为以太坊地址 web3.eth.Iban.fromEthereumAddress - 将以太坊地址转换为Iban对象 web3.eth.Iban.fromBban - 使用Bban地址创建Iban对象 web3.eth.Iban.createIndirect - 创建间接Iban对象 web3.eth.Iban.isValid - 检查给定Iban地址是否有效 web3.eth.Iban.isDirect - 检查是否采用直接编码方案 web3.eth.Iban.isIndirect - 检查是否采用间接编码方案 web3.eth.Iban.institution - 返回Iban的机构名称 web3.eth.Iban.client - 返回Iban的客户账号 web3.eth.Iban.toAddress - 实例方法 web3.eth.Iban.toString - 返回Iban地址字符串
whisper协议交互
web3.shh - whisper协议交互 web3.shh.getVersion - 返回whisper协议版本 web3.shh.getInfo - 返回whisper节点信息 web3.shh.setMaxMessageSize - 设置whisper消息大小上限 web3.shh.setMinPoW - 设置节点最小PoW web3.shh.markTrustedPeer - 标记可信节点 web3.shh.newKeyPair - 创建密钥对 web3.shh.addPrivateKey - 使用私钥创建密钥对 web3.shh.deleteKeyPair - 删除指定密钥对 web3.shh.hasKeyPair - 检查节点是否有指定密钥对 web3.shh.getPublicKey - 返回公钥 web3.shh.getPrivateKey - 返回私钥 web3.shh.newSymKey - 创建对称密钥 web3.shh.addSymKey - 添加对称密钥 web3.shh.generateSymKeyFromPassword - 使用指定密码生成对称密钥 web3.shh.hasSymKey - 检查是否有指定对称密钥 web3.shh.getSymKey - 返回对称密钥 web3.shh.post - 发送whisper消息 web3.shh.subscribe - 订阅whisper消息 web3.shh.clearSubscriptions - 清理订阅 web3.shh.newMessageFilter - 创建消息过滤器 web3.shh.deleteMessageFilter - 删除消息过滤器 web3.shh.getFilterMessages - 读取新消息
Swarm交互
web3.bzz - Swarm交互 web3.bzz.upload - 上传到Swarm web3.bzz.download - 从Swarm下载 web3.bzz.pick - 打开文件选择器
在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

events - 订阅合约事件

订阅指定的合约事件。

调用:

myContract.events.MyEvent([options][, callback])

参数:

  • options - Object: 可选,用于部署的选项,包含以下字段:
    • filter - Object : 可选,按索引参数过滤事件。例如 {filter: {myNumber: [12,13]}} 表示 “myNumber” 为12或13的所有事件
    • fromBlock - Number: 可选,仅监听该选项指定编号的块中发生的事件
    • topics - Array : 可选,用来手动为事件过滤器设定主题。如果设置过filter属性和事件签名,那么(topic[0])将不会自动设置
  • callback - Function: 可选,该回调函数触发时,其第二给参数为事件对象,第一个参数为错误对象

返回值:

EventEmitter: 事件发生器,声明有以下事件:

  • "data" 返回 Object: 接收到新的事件时触发,参数为事件对象
  • "changed" 返回 Object: 当事件从区块链上移除时触发,该事件对象将被添加额外的属性"removed: true"
  • "error" 返回 Object: 当发生错误时触发

返回的事件对象结构如下:

  • event - String: 事件名称
  • signature - String|Null: 事件签名,如果是匿名事件,则为null
  • address - String: 事件源地址
  • returnValues - Object: 事件返回值,例如 {myVar: 1, myVar2: '0x234...'}.
  • logIndex - Number: 事件在块中的索引位置
  • transactionIndex - Number: 事件在交易中的索引位置
  • transactionHash 32 Bytes - String: 事件所在交易的哈希值
  • blockHash 32 Bytes - String: 事件所在块的哈希值,pending的块该值为 null
  • blockNumber - Number: 事件所在块的编号,pending的块该值为null
  • raw.data - String: 该字段包含未索引的日志参数
  • raw.topics - Array: 最多可保存4个32字节长的主题字符串数组。主题1-3 包含事件的索引参数

示例代码:

myContract.events.MyEvent({
    filter: {myIndexedParam: [20,23], myOtherIndexedParam: '0x123456789...'}, // Using an array means OR: e.g. 20 or 23
    fromBlock: 0
}, function(error, event){ console.log(event); })
.on('data', function(event){
    console.log(event); // same results as the optional callback above
})
.on('changed', function(event){
    // remove event from local database
})
.on('error', console.error);

// event output example
> {
    returnValues: {
        myIndexedParam: 20,
        myOtherIndexedParam: '0x123456789...',
        myNonIndexParam: 'My String'
    },
    raw: {
        data: '0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385',
        topics: ['0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7', '0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385']
    },
    event: 'MyEvent',
    signature: '0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7',
    logIndex: 0,
    transactionIndex: 0,
    transactionHash: '0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385',
    blockHash: '0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7',
    blockNumber: 1234,
    address: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
}