链眼社区:专注于区块链安全,区块链数据分析, 区块链信息整合,区块链技术服务和区块链技术咨询。

web3.js 1.0中文手册:web3.eth
清风慕竹
2021-10-12 21:45:07

web3.eth.defaultAccount

web3.eth.defaultAccount属性记录了默认地址,在以下方法中如果没有指定from属性, 将使用该属性的值作为默认的from属性值。

  • web3.eth.sendTransaction()
  • web3.eth.call()
  • new web3.eth.Contract() -> myContract.methods.myMethod().call()
  • new web3.eth.Contract() -> myContract.methods.myMethod().send() 调用:

web3.eth.defaultAccount 属性:

String - 20 Bytes: 以太坊地址,你应当在节点或keystore中存有该地址的私钥。默认值为undefined

示例代码:

web3.eth.defaultAccount;
> undefined

// set the default account
web3.eth.defaultAccount = '0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe';

web3.eth.defaultBlock web3.eth.defaultBlock属性记录默认块,默认值为latest。该属性值用于以下方法调用:

  • web3.eth.getBalance()
  • web3.eth.getCode()
  • web3.eth.getTransactionCount()
  • web3.eth.getStorageAt()
  • web3.eth.call()
  • new web3.eth.Contract() -> myContract.methods.myMethod().call() 在以上方法中,可以传入defaultBlock参数来覆盖该属性值。

调用:

web3.eth.defaultBlock 属性:

默认块参数的值为以下列表中之一:

  • Number: 一个具体的块编号
  • "genesis" - String: 创世块
  • "latest" - String: 最后一个块,即当前的链头块
  • "pending" - String: 当前挖掘中的块,其中包含挂起的交易 默认值为"latest"

示例代码:

web3.eth.defaultBlock;
> "latest"

// 设置默认块属性
web3.eth.defaultBlock = 231;

web3.eth.defaultBlock;

"latest"

// 设置默认块属性 web3.eth.defaultBlock = 231;

web3.eth.getProtocolVersion

返回节点旳以太坊协议版本。

调用:

web3.eth.getProtocolVersion([callback])

返回值:

一个Promise对象,其解析值为协议版本字符串。

示例代码:

web3.eth.getProtocolVersion().then(console.log);
> "63"

web3.eth.isSyncing

web3.eth.isSyncing()方法用来检查节点当前是否已经与网络同步。

调用:

web3.eth.isSyncing([callback])

返回值:

一个Promise对象,其解析值为Object或Boolean。如果节点尚未与网络同步, 则返回false,否则返回一个同步对象,具有以下属性:

  • startingBlock - Number: 同步起始块编号
  • currentBlock - Number: 当前已同步块编号
  • highestBlock - Number: 预估的目标同步块编号
  • knownStates - Number: 预估的要下载的状态
  • pulledStates - Number: 已经下载的状态 示例代码:
web3.eth.isSyncing().then(console.log);
> {
    startingBlock: 100,
    currentBlock: 312,
    highestBlock: 512,
    knownStates: 234566,
    pulledStates: 123455
}

web3.eth.getCoinbase

使用web3.eth.getCoinbase()方法获取当前接收挖矿奖励的账户地址。

调用:

web3.eth.getCoinbase([callback])

返回值:

一个Promise对象,其解析值为接收挖矿奖励的账户地址字符串,20字节长。

示例代码:

web3.eth.getCoinbase().then(console.log);
> "0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe"

web3.eth.isMining

调用web3.eth.isMining()方法来检查节点是否在进行挖矿。

调用:

web3.eth.isMining([callback])

返回值:

一个Promise对象,挖矿时其解析值为true,否则为false。

示例代码:

web3.eth.isMining().then(console.log);
> true

web3.eth.getHashrate

web3.eth.getHashrate()方法用来读取当前挖矿节点的每秒钟哈希值算出数量。

调用:

web3.eth.getHashrate([callback])

返回值:

一个Promise对象,其解析值为Number类型,表示每秒哈希值算出数量。

示例代码:

web3.eth.getHashrate().then(console.log);
> 493736

web3.eth.getGasPrice

web3.eth.getGasPrice()方法用来获取当前gas价格,该价格由最近的若干块 的gas价格中值决定。

调用:

web3.eth.getGasPrice([callback])

返回值:

一个Promise对象,其解析值为表示当前gas价格的字符串,单位为wei。

示例代码:

web3.eth.getGasPrice().then(console.log);
> "20000000000"

web3.eth.getAccounts

web3.eth.getAccounts()方法返回当前节点控制的账户列表。

调用:

web3.eth.getAccounts([callback])

返回值

一个Promise对象,其解析值为账户地址数组。

示例代码:

web3.eth.getAccounts().then(console.log);
> ["0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe", "0xDCc6960376d6C6dEa93647383FfB245CfCed97Cf"]

web3.eth.getBlockNumber

web3.eth.getBlockNumber()方法返回当前块编号。

调用:

web3.eth.getBlockNumber([callback])

返回值:

一个Promise对象,其解析值为最近一个块的编号,Number类型。

示例代码:

web3.eth.getBlockNumber().then(console.log);
> 2744

web3.eth.getBalance

web3.eth.getBalance()方法用来获取指定块中特定账户地址的余额。

调用:

web3.eth.getBalance(address [, defaultBlock] [, callback])

参数:

  • address:String - 要检查余额的账户地址
  • defaultBlock:Number|String - 可选,使用该参数覆盖web3.eth.defaultBlock属性值
  • callback:Function - 可选的回调函数,该回调的第一个参数为error对象,第二个参数为结果值 返回值:

一个Promise对象,其解析值为指定账户地址的余额字符串,以wei为单位。

示例代码:

web3.eth.getBalance("0x407d73d8a49eeb85d32cf465507dd71d507100c1")
.then(console.log);
> "1000000000000"

web3.eth.getStorageAt

web3.eth.getStorageAt()方法返回一个以太坊地址的指定位置存储内容。

调用:

web3.eth.getStorageAt(address, position [, defaultBlock] [, callback])

参数:

  • address:String - 要读取的地址
  • position:Number - 存储中的索引编号
  • defaultBlock:Number|String - 可选,使用该参数覆盖web3.eth.defaultBlock属性值
  • callback:Function - 可选的回调函数, 其第一个参数为错误对象,第二个参数为结果。 返回值:

一个Promise对象,其解析值为存储中指定位置的内容。

示例代码:

web3.eth.getStorageAt("0x407d73d8a49eeb85d32cf465507dd71d507100c1", 0)
.then(console.log);
> "0x033456732123ffff2342342dd12342434324234234fd234fd23fd4f23d4234"

web3.eth.getCode

web3.eth.getCode()方法返回指定以太坊地址处的代码。

调用:

web3.eth.getCode(address [, defaultBlock] [, callback])

参数:

  • address:String - 要读取代码的地址
  • defaultBlock:Number|String - 可选,使用该参数覆盖web3.eth.defaultBlock属性值
  • callback:Function - 可选的回调函数,其第一个参数为错误对象,第二个参数为结果 返回值:

一个Promise对象,其解析值为指定地址处的代码字符串。

示例代码:

web3.eth.getCode("0xd5677cf67b5aa051bb40496e68ad359eb97cfbf8")
.then(console.log);
> "0x600160008035811a818181146012578301005b601b6001356025565b8060005260206000f25b600060078202905091905056"

web3.eth.getBlock

web3.eth.getBlock()方法返回指定块编号或块哈希对应的块。

调用:

web3.eth.getBlock(blockHashOrBlockNumber [, returnTransactionObjects] [, callback])

参数:

  • blockHashOrBlockNumber:String|Number - 块编号或块哈希值,或者使用以下字符串:"genesis"、"latest" 或 "pending" 。
  • returnTransactionObjects:Boolean - 可选,默认值为false。当设置为true时,返回块中将包括所有交易详情,否则仅返回交易哈希。
  • callback:Function - 可选的回调函数,其第一个参数为错误对象,第二个参数为结果。 返回值:

一个Promise对象,其解析值为满足搜索条件的块对象,具有以下字段:

  • number - Number: 块编号,处于pending状态的块为null
  • hash 32 Bytes - String: 块哈希,处于pending状态的块为null
  • parentHash 32 Bytes - String: 父块哈希
  • nonce 8 Bytes - String: 生成的proof-of-work的哈希,处于pending状态的块为null
  • sha3Uncles 32 Bytes - String: 块中叔伯数据的SHA3值
  • logsBloom 256 Bytes - String: 块中日志的bloom filter,处于pending状态的块为null
  • transactionsRoot 32 Bytes - String: 块中的交易树根节点
  • stateRoot 32 Bytes - String: 块中的最终状态树根节点
  • miner - String: 接收奖励的矿工地址
  • difficulty - String: 该块的难度值
  • totalDifficulty - String: 截至该块的全链总难度值
  • extraData - String: 块 “extra data” 字段
  • size - Number: 字节为单位的块大小
  • gasLimit - Number: 该块允许的最大gas值
  • gasUsed - Number: 该块中所有交易使用的gas总量
  • timestamp - Number: 出块的unix时间戳
  • transactions - Array: 交易对象数组,或者32字节长的交易哈希值,取决于returnTransactionObjects的设置
  • uncles - Array: 叔伯块哈希值数组 示例代码:
web3.eth.getBlock(3150)
.then(console.log);

> {
    "number": 3,
    "hash": "0xef95f2f1ed3ca60b048b4bf67cde2195961e0bba6f70bcbea9a2c4e133e34b46",
    "parentHash": "0x2302e1c0b972d00932deb5dab9eb2982f570597d9d42504c05d9c2147eaf9c88",
    "nonce": "0xfb6e1a62d119228b",
    "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
    "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
    "transactionsRoot": "0x3a1b03875115b79539e5bd33fb00d8f7b7cd61929d5a3c574f507b8acf415bee",
    "stateRoot": "0xf1133199d44695dfa8fd1bcfe424d82854b5cebef75bddd7e40ea94cda515bcb",
    "miner": "0x8888f1f195afa192cfee860698584c030f4c9db1",
    "difficulty": '21345678965432',
    "totalDifficulty": '324567845321',
    "size": 616,
    "extraData": "0x",
    "gasLimit": 3141592,
    "gasUsed": 21662,
    "timestamp": 1429287689,
    "transactions": [
        "0x9fc76417374aa880d4449a1f7f31ec597f00b1f6f3dd2d66f4c9c6c445836d8b"
    ],
    "uncles": []
}

web3.eth.getBlockTransactionCount

web3.eth.getBlockTransactionCount()方法返回指定块中的交易数量。

调用:

web3.eth.getBlockTransactionCount(blockHashOrBlockNumber [, callback])

参数:

  • blockHashOrBlockNumber:String|Number - 块编号或块的哈希值,或者使用以下字符串:"genesis"、"latest" 或 "pending" 来指定块
  • callback:Function - 可选的回调函数,其第一个参数为错误对象,第二个参数为执行结果。 返回值:

一个Promise对象,其解析值为指定块中的交易数量,Number类型。

示例代码:

web3.eth.getBlockTransactionCount("0x407d73d8a49eeb85d32cf465507dd71d507100c1")
.then(console.log);
> 1

web3.eth.getUncle

web3.eth.getUncle()方法返回指定索引位置的叔伯块。

调用:

web3.eth.getUncle(blockHashOrBlockNumber, uncleIndex [, returnTransactionObjects] [, callback])

参数:

  • blockHashOrBlockNumber:String|Number - 块编号或块的哈希值,或者使用以下字符串:"genesis"、"latest" 或"pending"来指定块。
  • uncleIndex:Number - 叔伯块的索引位置。
  • returnTransactionObjects:Boolean - 可选,默认值为false。如果设置为true,那么返回的块信息中将包含全部交易的完整信息,否则仅 包含交易的哈希值。
  • callback:Function - 可选的回调函数,其第一个参数为错误对象,第二个参数为结果。 返回值:

一个Promise对象,其解析值为叔伯块对象,具体内容参见web3.eth.getBlock()

注意:

叔伯块中不包含单独的交易信息。

示例代码:

web3.eth.getUncle(500, 0)
.then(console.log);
> // 块对象字段说明参见 web3.eth.getBlock

web3.eth.getTransaction

web3.eth.getTransaction()方法返回具有指定哈希值的交易对象。

调用:

web3.eth.getTransaction(transactionHash [, callback])

参数:

  • transactionHash:String - 交易的哈希值
  • callback:Function - 可选的回调函数,其第一个参数为错误对象,第二个参数为返回结果。 返回值:

一个Promise对象,其解析值为具有给定哈希值的交易对象,该对象具有如下字段:

  • hash 32 Bytes - String: 交易的哈希值
  • nonce - Number: 交易发送方在此交易之前产生的交易数量
  • blockHash 32 Bytes - String: 交易所在块的哈希值。如果交易处于pending状态,则该值为null
  • blockNumber - Number: 交易所在块的编号,如果交易处于pending状态,则该值为null
  • transactionIndex - Number: 交易在块中的索引位置,如果交易处于pending状态,则该值为null
  • from - String: 交易发送方的地址
  • to - String: 交易接收方的地址。对于创建合约的交易,该值为null
  • value - String: 以wei为单位的转账金额
  • gasPrice - String: 发送方承诺的gas价格,以wei为单位
  • gas - Number: 发送方提供的gas用量
  • input - String: 随交易发送的数据 示例代码:
web3.eth.getTransaction('0x9fc76417374aa880d4449a1f7f31ec597f00b1f6f3dd2d66f4c9c6c445836d8b§234')
.then(console.log);
> {
    "hash": "0x9fc76417374aa880d4449a1f7f31ec597f00b1f6f3dd2d66f4c9c6c445836d8b",
    "nonce": 2,
    "blockHash": "0xef95f2f1ed3ca60b048b4bf67cde2195961e0bba6f70bcbea9a2c4e133e34b46",
    "blockNumber": 3,
    "transactionIndex": 0,
    "from": "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b",
    "to": "0x6295ee1b4f6dd65047762f924ecd367c17eabf8f",
    "value": '123450000000000000',
    "gas": 314159,
    "gasPrice": '2000000000000',
    "input": "0x57cb2fc4"
}

web3.eth.getTransactionFromBlock

web3.eth.getTransactionFromBlock()方法返回指定块中特定索引号的交易对象。

调用:

getTransactionFromBlock(hashStringOrNumber, indexNumber [, callback])

参数:

hashStringOrNumber:String - 块编号或块的哈希值,或者使用以下字符串:"genesis、"latest" 或 "pending" 来指定块 indexNumber:Number - 交易索引位置 callback:Function - 可选的回调函数,其第一个参数为错误对象,第二个参数为结果交易对象 返回值:

一个Promise对象,其解析值为交易对象,该对象具体内容描述参见web3.eth.getTransaction()

示例代码:

var transaction = web3.eth.getTransactionFromBlock('0x4534534534', 2)
.then(console.log);
> // see web3.eth.getTransaction

web3.eth.getTransactionReceipt

web3.eth.getTransactionReceipt()方法返回指定交易的收据对象。 如果交易处于pending状态,则返回null。

调用:

web3.eth.getTransactionReceipt(hash [, callback])

参数:

  • hash:String - 交易的哈希值
  • callback:Function - 可选的回调函数,其第一个参数为错误对象,第二个参数为结果 返回值:

一个Promise对象,其解析值为交易的收据对象或者null。收据对象具有如下字段:

  • status - Boolean: 成功的交易返回true,如果EVM回滚了该交易则返回false
  • blockHash 32 Bytes - String: 交易所在块的哈希值
  • blockNumber - Number: 交易所在块的编号
  • transactionHash 32 Bytes - String: 交易的哈希值
  • transactionIndex - Number: 交易在块中的索引位置
  • from - String: 交易发送方的地址
  • to - String: 交易接收方的地址,对于创建合约的交易,该值为null
  • contractAddress - String: 对于创建合约的交易,该值为创建的合约地址,否则为null
  • cumulativeGasUsed - Number: 该交易执行时所在块的gas累计总用量
  • gasUsed- Number: 该交易的gas总量
  • logs - Array: 该交易产生的日志对象数组 示例代码:
var receipt = web3.eth.getTransactionReceipt('0x9fc76417374aa880d4449a1f7f31ec597f00b1f6f3dd2d66f4c9c6c445836d8b')
.then(console.log);
> {
  "status": true,
  "transactionHash": "0x9fc76417374aa880d4449a1f7f31ec597f00b1f6f3dd2d66f4c9c6c445836d8b",
  "transactionIndex": 0,
  "blockHash": "0xef95f2f1ed3ca60b048b4bf67cde2195961e0bba6f70bcbea9a2c4e133e34b46",
  "blockNumber": 3,
  "contractAddress": "0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe",
  "cumulativeGasUsed": 314159,
  "gasUsed": 30234,
  "logs": [{
         // logs as returned by getPastLogs, etc.
     }, ...]
}

web3.eth.getTransactionCount

web3.eth.getTransactionCount()方法返回指定地址发出的交易数量。

调用:

web3.eth.getTransactionCount(address [, defaultBlock] [, callback])

参数:

  • address:String - 要查询的账户地址
  • defaultBlock:Number|String - 可选,设置该参数来覆盖web3.eth.defaultBlock属性值
  • callback:Function - 可选的回调函数,其第一个参数为错误对象,第二个参数为结果 返回值:

一个Promise对象,其解析值为指定地址发出的交易数量。

示例代码:

web3.eth.getTransactionCount("0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe")
.then(console.log);
> 1

web3.eth.sendTransaction

web3.eth.sendTransaction()方法向以太坊网络提交一个交易。

调用:

web3.eth.sendTransaction(transactionObject [, callback])

参数:

  • transactionObject:Object - 要发送的交易对象,包含以下字段:
  • from - String|Number: 交易发送方账户地址,不设置该字段的话,则使用web3.eth.defaultAccount属性值。可设置为一个地址或本地钱包web3.eth.accounts.wallet中的索引序号
  • to - String: 可选,消息的目标地址,对于合约创建交易该字段为null
  • value - Number|String|BN|BigNumber: (optional) The value transferred for the transaction in wei, also the endowment if it’s a contract-creation transaction.
  • gas - Number: 可选,默认值:待定,用于交易的gas总量,未用完的gas会退还
  • gasPrice - Number|String|BN|BigNumber: 可选,该交易的gas价格,单位为wei,默认值为web3.eth.gasPrice属性值
  • data - String: 可选,可以是包含合约方法数据的ABI字符串,或者是合约创建交易中的初始化代码
  • nonce - Number: 可选,使用该字段覆盖使用相同nonce值的挂起交易
  • callback - Function: 可选的回调函数,其第一个参数为错误对象,第二个参数为结果 返回值:

web3.eth.sendTransaction()方法的返回值是32字节长的交易哈希值。

PromiEvent: 一个整合事件发生器的Promise对象,将在收到交易收据后得到解析。

  • "transactionHash" 返回String: 在交易发出并得到有效的交易哈希值后立刻触发
  • "receipt" 返回Object: 当交易收据有效后立刻触发
  • "confirmation" 返回Number, Object: 在每次确认后立刻触发,最多12次确认。确认编号为第一个参数,收据为第二个参数。从0号确认开始触发
  • "error" 返回Error对象: 在发送交易的过程中如果出现错误则立刻触发。如果是out of gas错误,则传入第二个参数为交易收据 示例代码:
// compiled solidity source code using https://remix.ethereum.org
var code = "603d80600c6000396000f3007c01000000000000000000000000000000000000000000000000000000006000350463c6888fa18114602d57005b6007600435028060005260206000f3";

// 使用回调函数
web3.eth.sendTransaction({
    from: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe',
    data: code // deploying a contracrt
}, function(error, hash){
    ...
});

// 使用promise
web3.eth.sendTransaction({
    from: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe',
    to: '0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe',
    value: '1000000000000000'
})
.then(function(receipt){
    ...
});


// 使用事件发生器
web3.eth.sendTransaction({
    from: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe',
    to: '0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe',
    value: '1000000000000000'
})
.on('transactionHash', function(hash){
    ...
})
.on('receipt', function(receipt){
    ...
})
.on('confirmation', function(confirmationNumber, receipt){ ... })
.on('error', console.error); // If a out of gas error, the second parameter is the receipt.

web3.eth.sendSignedTransaction

web3.eth.sendSignedTransaction()方法用来发送已经签名的交易,例如,可以使用web3.eth.accounts.signTransaction() 方法进行签名。

调用:

web3.eth.sendSignedTransaction(signedTransactionData [, callback])

参数:

  • signedTransactionData:String - 16进制格式的签名交易数据
  • callback:Function - 可选的回调函数,其第一个参数为错误对象,第二个参数为结果 返回值:

PromiEvent: 一个整合了事件发生器的Promise对象。当交易收据生效后得到解析。

示例代码:

var Tx = require('ethereumjs-tx');
var privateKey = new Buffer('e331b6d69882b4cb4ea581d88e0b604039a3de5967688d3dcffdd2270c0fd109', 'hex')

var rawTx = {
  nonce: '0x00',
  gasPrice: '0x09184e72a000',
  gasLimit: '0x2710',
  to: '0x0000000000000000000000000000000000000000',
  value: '0x00',
  data: '0x7f7465737432000000000000000000000000000000000000000000000000000000600057'
}

var tx = new Tx(rawTx);
tx.sign(privateKey);

var serializedTx = tx.serialize();

// console.log(serializedTx.toString('hex'));
// 0xf889808609184e72a00082271094000000000000000000000000000000000000000080a47f74657374320000000000000000000000000000000000000000000000000000006000571ca08a8bbf888cfa37bbf0bb965423625641fc956967b81d12e23709cead01446075a01ce999b56a8a88504be365442ea61239198e23d1fce7d00fcfc5cd3b44b7215f

web3.eth.sendSignedTransaction('0x' + serializedTx.toString('hex'))
.on('receipt', console.log);

> // see eth.getTransactionReceipt() for details

web3.eth.sign

web3.eth.sign()方法使用指定的账户对数据进行签名,该账户必须先解锁。

调用:

web3.eth.sign(dataToSign, address [, callback])

参数:

  • dataToSign:String - 待签名的数据。对于字符串将首先使用web3.utils.utf8ToHex()方法将其转换为16进制
  • address:String|Number - 用来签名的账户地址。或者本地钱包web3.eth.accounts.wallet中的地址或其序号
  • callback:Function - 可选的回调函数,其第一个参数为错误对象,第二个参数为结果 返回值:

一个Promise对象,其解析值为签名结果字符串。

示例代码:

web3.eth.sign("Hello world", "0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe")
.then(console.log);
> "0x30755ed65396facf86c53e6217c52b4daebe72aa4941d89635409de4c9c7f9466d4e9aaec7977f05e923889b33c0d0dd27d7226b6e6f56ce737465c5cfd04be400"

// the below is the same
web3.eth.sign(web3.utils.utf8ToHex("Hello world"), "0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe")
.then(console.log);
> "0x30755ed65396facf86c53e6217c52b4daebe72aa4941d89635409de4c9c7f9466d4e9aaec7977f05e923889b33c0d0dd27d7226b6e6f56ce737465c5cfd04be400"

web3.eth.signTransaction

使用web3.eth.signTransaction()方法对交易进行签名,用来签名的账户地址需要首先解锁。

调用:

web3.eth.signTransaction(transactionObject, address [, callback])

参数:

  • transactionObject:Object - 要签名的交易数据
  • address:String - 用于签名的账户地址
  • callback:Function - 可选的回调函数,其第一个参数为错误对象,第二个参数为结果 返回值:

一个Promise对象,其解析值为RLP编码的交易对象。该对象的raw属性可以用来通过web3.eth.sendSignedTransaction() 方法来发送交易。

示例代码:

web3.eth.signTransaction({
    from: "0xEB014f8c8B418Db6b45774c326A0E64C78914dC0",
    gasPrice: "20000000000",
    gas: "21000",
    to: '0x3535353535353535353535353535353535353535',
    value: "1000000000000000000",
    data: ""
}).then(console.log);
> {
    raw: '0xf86c808504a817c800825208943535353535353535353535353535353535353535880de0b6b3a76400008025a04f4c17305743700648bc4f6cd3038ec6f6af0df73e31757007b7f59df7bee88da07e1941b264348e80c78c4027afc65a87b0a5e43e86742b8ca0823584c6788fd0',
    tx: {
        nonce: '0x0',
        gasPrice: '0x4a817c800',
        gas: '0x5208',
        to: '0x3535353535353535353535353535353535353535',
        value: '0xde0b6b3a7640000',
        input: '0x',
        v: '0x25',
        r: '0x4f4c17305743700648bc4f6cd3038ec6f6af0df73e31757007b7f59df7bee88d',
        s: '0x7e1941b264348e80c78c4027afc65a87b0a5e43e86742b8ca0823584c6788fd0',
        hash: '0xda3be87732110de6c1354c83770aae630ede9ac308d9f7b399ecfba23d923384'
    }
}

web3.eth.call

使用web3.eth.call()方法执行一个消息调用交易,消息调用交易直接在节点旳VM中执行而 不需要通过区块链的挖矿来执行。

调用:

web3.eth.call(callObject [, defaultBlock] [, callback])

参数:

  • callObject:Object - 交易对象,消息调用交易的from属性可选
  • defaultBlock:Number|String - 可选,使用该参数来覆盖默认的web3.eth.defaultBlock属性值
  • callback:Function - 可选的回调函数,其第一个参数为错误对象,第二个参数为结果 返回值:

一个Promise对象,其解析值为调用方法的返回数据字符串

示例代码:

web3.eth.call({
    to: "0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe", // contract address
    data: "0xc6888fa10000000000000000000000000000000000000000000000000000000000000003"
})
.then(console.log);
> "0x000000000000000000000000000000000000000000000000000000000000000a"

web3.eth.estimateGas

web3.eth.estimateGas()方法通过执行一个消息调用来估算交易的gas用量。

调用:

web3.eth.estimateGas(callObject [, callback])

参数:

  • callObject:Object - 交易对象,其from属性可选
  • callback:Function - 可选的回调函数,其第一个参数为错误对象,第二个参数为结果 返回值:

一个Promise对象,其解析值为模拟调用的gas用量。

示例代码:

web3.eth.estimateGas({
    to: "0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe",
    data: "0xc6888fa10000000000000000000000000000000000000000000000000000000000000003"
})
.then(console.log);
> "0x0000000000000000000000000000000000000000000000000000000000000015"

web3.eth.getPastLogs

web3.eth.getPastLogs()方法根据指定的选项返回历史日志。

调用:

web3.eth.getPastLogs(options [, callback])

参数:

  • options:Object - 过滤器对象,包含如下字段:
  • fromBlock - Number|String: The number of the earliest block ("latest" may be given to mean the most recent and "pending" currently mining, block). By default "latest".
  • toBlock - Number|String: The number of the latest block ("latest" may be given to mean the most recent and "pending" currently mining, block). By default "latest".
  • address - String|Array: An address or a list of addresses to only get logs from particular account(s).
  • topics - Array: An array of values which must each appear in the log entries. The order is important, if you want to leave topics out use null, e.g. [null, '0x12...']. You can also pass an array for each topic with options for that topic e.g. [null, ['option1', 'option2']] 返回值:

一个Promise对象,其解析值为日志对象数组。

数组中的事件对象结构如下:

  • address - String: 事件发生源地址
  • data - String: 包含未索引的日志参数
  • topics - Array: 包含最多4个32字节主题的数组,主题1-3包含日志的索引参数
  • logIndex - Number: 事件在块中的索引位置
  • transactionIndex - Number: 包含事件的交易的索引位置
  • transactionHash 32 Bytes - String: 包含事件的交易的哈希值
  • blockHash 32 Bytes - String: 包含事件的块的哈希值,如果处于pending状态,则为null
  • blockNumber - Number: 包含事件的块编号,处于pending状态时该字段为null 示例代码:
web3.eth.getPastLogs({
    address: "0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe",
    topics: ["0x033456732123ffff2342342dd12342434324234234fd234fd23fd4f23d4234"]
})
.then(console.log);

> [{
    data: '0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385',
    topics: ['0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7', '0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385']
    logIndex: 0,
    transactionIndex: 0,
    transactionHash: '0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385',
    blockHash: '0xfd43ade1c09fade1c0d57a7af66ab4ead7c2c2eb7b11a91ffdd57a7af66ab4ead7',
    blockNumber: 1234,
    address: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
},{...}]

web3.eth.getCompilers

web3.eth.getCompilers()方法返回可用编译器的列表。

调用:

web3.eth.getCompilers([callback])

参数:

callback:Function - 可选的回调函数,其第一个参数为错误对象,第二个参数为结果。

返回值:

一个Promise对象,其解析值为可用编译器名称字符串数组。

示例代码:

web3.eth.getCompilers()
.then(console.log);
> ["lll", "solidity", "serpent"]

web3.eth.compile.solidity

web3.eth.compile.solidity()方法用来编译使用solidity语言编写的合约 源代码。

调用:

web3.eth.compile.solidity(sourceCode [, callback])

参数:

  • sourceCode:String - solidity源代码字符串
  • callback:Function - 可选的回调函数,其第一个参数为错误对象,第二个参数为结果 返回值:

一个Promise对象,其解析值为编译结果信息对象。

示例代码:

var source = "" +
    "contract test {\n" +
    "   function multiply(uint a) returns(uint d) {\n" +
    "       return a * 7;\n" +
    "   }\n" +
    "}\n";

web3.eth.compile.solidity(source)
.then(console.log);

> {
  "test": {
    "code": "0x605280600c6000396000f3006000357c010000000000000000000000000000000000000000000000000000000090048063c6888fa114602e57005b60376004356041565b8060005260206000f35b6000600782029050604d565b91905056",
    "info": {
      "source": "contract test {\n\tfunction multiply(uint a) returns(uint d) {\n\t\treturn a * 7;\n\t}\n}\n",
      "language": "Solidity",
      "languageVersion": "0",
      "compilerVersion": "0.8.2",
      "abiDefinition": [
        {
          "constant": false,
          "inputs": [
            {
              "name": "a",
              "type": "uint256"
            }
          ],
          "name": "multiply",
          "outputs": [
            {
              "name": "d",
              "type": "uint256"
            }
          ],
          "type": "function"
        }
      ],
      "userDoc": {
        "methods": {}
      },
      "developerDoc": {
        "methods": {}
      }
    }
  }
}

web3.eth.compile.lll

web3.eth.compile.lll()方法用来编译使用LLL语言编写的合约源代码。

调用:

web3. eth.compile.lll(sourceCode [, callback])

参数:

  • sourceCode:String - LLL源代码
  • callback:Function - 可选的回调函数,其第一个参数为错误对象,第二个参数为结果 返回值:

一个Promise对象,其解析值为编译得到的16进制字符串。

示例代码:

var source = "...";

web3.eth.compile.lll(source)
.then(console.log);
> "0x603880600c6000396000f3006001600060e060020a600035048063c6888fa114601857005b6021600435602b565b8060005260206000f35b600081600702905091905056"

web3.eth.compile.serpent

web3.eth.compile.serpent()方法用来编译使用serpent语言编写的合约源代码。

调用:

web3.eth.compile.serpent(sourceCode [, callback])

参数:

  • sourceCode:String - serpent源代码
  • callback:Function - 可选的回调函数,其第一个参数为错误对象,第二个参数为结果 返回值:

一个Promise对象,其解析值为编译得到的16进制字符串。

示例代码:

var source = "...";

var code = web3.eth.compile.serpent(source)
.then(console.log);
> "0x603880600c6000396000f3006001600060e060020a600035048063c6888fa114601857005b6021600435602b565b8060005260206000f35b600081600702905091905056"

web3.eth.getWork

web3.eth.getWork()方法返回矿工的工作内容,包括当前块的哈希值、种子哈希值和 要满足的边界条件。

调用:

web3.eth.getWork
web3.eth.getWork()方法返回矿工的工作内容包括当前块的哈希值种子哈希值和 要满足的边界条件

调用

参数:

callback:Function - 可选的回调函数,其第一个参数为错误对象,第二个参数为结果

返回值:

一个Promise对象,其解析值为具有以下结构的数组:

  • String 32 Bytes - 0#成员: 当前块头的pow-hash
  • String 32 Bytes - 1#成员: 用于DAG算法的种子哈希 -String 32 Bytes - 2#成员: 目标边界条件, 2^256 / difficulty. 示例代码:
web3.eth.getWork()
.then(console.log);
> [
  "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
  "0x5EED00000000000000000000000000005EED0000000000000000000000000000",
  "0xd1ff1c01710000000000000000000000d1ff1c01710000000000000000000000"
]

web3.eth.submitWork

web3.eth.submitWork()方法用来提交工作量证明(POW)解决方案。

调用:

web3.eth.submitWork(nonce, powHash, digest, [callback])

参数:

  • nonce:String 8 Bytes: 找到的nonce(64 bits)
  • powHash:String 32 Bytes: 区块头pow-hash (256 bits)
  • digest:String 32 Bytes: 混合摘要 (256 bits)
  • callback:Function - 可选的回调函数,其第一个参数为错误对象,第二个参数为结果 返回值:

一个Promise对象,当提交的解决方案有效时解析为true,否则解析为false。

示例代码:

web3.eth.submitWork([
    "0x0000000000000001",
    "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
    "0xD1FE5700000000000000000000000000D1FE5700000000000000000000000000"
])
.then(console.log);
> true

合作伙伴