账户
eth.defaultAccount 获取或者设置默认 from 账户.
1 | web3.eth.sendTransaction() |
eth.getAccounts().then(accounts => {}); 节点中的账户列表
eth.getBalance(addr [,defaultBlock]).then(bigNum => {}); 账户在某节点的余额
节点状态
eth.defaultBlock 默认区块, 值为 Number | Genesis | latest(默认) | pending 几种情况.
1 | web3.eth.getBalance() |
上面几种方法会使用默认区块进行查询.
eth.getProtocolVersion(version => {}); 协议版本
eth.isSyncing(obj|false => {}); 是否处于同步状态
1 | { |
eth.getBlockNumber().then(num => {}); 当前区块号
合约编译
eth.getCompilers().then(arr => {}); 获取支持的编译器 ['lll', 'solidity', 'serpent']
eth.compile.solidity(sourceCode).then(code => {}); 编译合约
1 | { |
eth.compile.lll(sourceCode).then(code => {}); 编译合约
eth.compile.serpent(sourceCode).then(code => {}); 编译合约
1 | "0x605280600c6000396000f3006000357c010000000000000000000000000000000000000000000000000000000090048063c6888fa114602e57005b60376004356041565b8060005260206000f35b6000600782029050604d565b91905056" |
挖矿信息
eth.getCoinbase().then(addr=>{}); 挖矿收益账户
eth.isMining().then(bool => {}); 是否处于挖矿状态
eth.getHashrate().then(num => {}); 挖矿每秒 hash 计算速度
eth.getGasPrice().then(bigPrice => {}); 最近几个区块的中值
eth.getWork().then(arr => {}); 获取挖矿信息, 返回3个 bytes32
eth.submitWork(nonce, powHash, digest).then(bool => {}); 提交挖矿证明
区块和交易信息
1 | eth.getStorageAt(addr, pos, [,defaultBlock]).then(str => {}); // Get the storage at a specific position of an address. |
1 | eth.getCode(addr [,defaultBlock]).then(data => {}); // 在指定地址的数据. |
blockId: blockHash, blockNumber, 或者 “genesis”, “latest”, “pending” 字符串
1 | eth.getBlockTransactionCount(blockId).then(amount => {}); // 区块交易数 |
1 | eth.getTransactionCount(addr [,defaultBlock]).then(amount => {}); // addr 在区块的交易数. |
区块信息
1 | eth.getBlock(blockId [,withTxsObj]).then(obj => {}); |
1 | eth.getUncle(blockId, uncleIndex [,withTxsObj]).then(obj => {}); 获取区块 uncle 信息. |
withTxsObj 表示是否包含交易详情, 默认 false, 只包含 transaction hash 列表.
1 | { |
获取交易信息
1 | eth.getTransaction(txHash).then(txObj => {}); |
1 | eth.getTransactionFromBlock(blockId, idx).then(txObj => {}); |
1 | { |
1 | eth.getTransactionReceipt(txHash).then(obj => {}); // 获取交易详情 Logs, 如果是 pending transaction 则返回 null. |
1 | { |
1 | eth.getPastLogs({ |
1 | [{ |
交易
1. 发起交易(写方法/合约部署)
eth.sendTransaction({
from: 交易发起账户, 默认 eth.defaultAccount,
to: 交易目标账户, 如果是部署合约不设置为 undefined,
value: Number|str|BN|BigNumber 转账 wei 数,
gas: 为交易提供的 gas 最大值, 多付的会退还,
gasPrice: Number|str|BN|BigNumber 价格 wei 数, 默认 eth.getPrice,
data: 部署合约的初始化二进制, 或者调用合约方法的二进制代码,
nonce: 用于覆盖自己 pending 种状态的交易
})
.on(‘transactionHash’, hash => {})
.on(‘receipt’, receipt => {})
.on(‘confirmation’, (confirmationNumber, receipt) => {})
.on(‘error’, (err, receipt) => {}); // If a out of gas error, the second parameter is the receipt.
如果 from 是钱包中的地址, 那么将会使用 private key 在本地进行签名, 然后使用 sendSignedTransaction 发送交易.
2. 调用写方法
sign(str,addr)/signTransaction(txObj,addr) + sendSignedTransaction
1 | const Tx = require('ethereumjs-tx'); |
3. 调用只读方法
eth.call({to:, data:,}).then(returns => {});
4. gas 预估
eth.estimateGas({to:, data:,}).then(returns => {});