以太坊开发文档09 - javascriptApi
为了让您的应用程序能够在以太坊上工作,您可以使用web3.js库web3
提供的对象。在底层,它通过RPC调用与本地节点通信。web3.js与任何暴露RPC层的以太坊节点一起工作。
web3
包含eth
对象 - web3.eth
(专门用于以太坊区块链交互)和shh
对象 - web3.shh
(用于Whisper交互)。随着时间的推移,我们将介绍其他web3协议的其他对象。工作 示例可以在这里找到。
如果您想使用web3.js查看一些更复杂的示例,请查看这些有用的应用程序模式。
使用回调
由于此API旨在与本地RPC节点一起工作,并且其所有功能默认情况下都使用同步HTTP requests.con
如果你想做异步请求,你可以传递一个可选的回调函数作为最后一个参数。所有的回调函数都使用错误的第一个回调风格:
web3.eth.getBlock(48, function(error, result){
if(!error)
console.log(result)
else
console.error(error);
})
批量请求
批量请求允许排队请求并一次处理它们。
var batch = web3.createBatch();
batch.add(web3.eth.getBalance.request("0x0000000000000000000000000000000000000000", "latest", callback));
batch.add(web3.eth.contract(abi).at(address).balance.request(address, callback2));
batch.execute();
关于web3.js中大数字的说明
您将始终得到一个平衡值的BigNumber对象,因为JavaScript无法正确处理大数字。看下面的例子:
"101010100324325345346456456456456456456"
// "101010100324325345346456456456456456456"
101010100324325345346456456456456456456
// 1.0101010032432535e+38
web3.js依赖于BigNumber库并自动添加它。
var balance = new BigNumber("131242344353464564564574574567456");
// or var balance = web3.eth.getBalance(someAddress);
balance.plus(21).toString(10); // toString(10) converts it to a number string
// "131242344353464564564574574567477"
下一个例子是行不通的,因为我们有超过20个浮动点,因此建议,让你在总平衡伟,只把它转换为其他单位呈现给用户的时候:
var balance = new BigNumber("13124.234435346456466666457455567456");
balance.plus(21).toString(10); // toString(10) converts it to a number string, but can only show max 20 floating points
// "13145.23443534645646666646" // you number would be cut after the 20 floating point
Web3 JavascriptÐappAPI参考
- WEB3
- 版
- API
- 客户
- 网络
- 复仇
- 耳语
- 已连接()
- setProvider(供应商)
- currentProvider
- 重启()
- 沙三段(串)
- toHex(stringOrNumber)
- toascii将(十六进制串)
- fromAscii(textString,[padding])
- toDecimal(十六进制串)
- fromDecimal(数字)
- fromWei(numberStringOrBigNumber,unit)
- toWei(numberStringOrBigNumber,单位)
- toBigNumber(numberOrHexString)
- isAddress(十六进制串)
- 净
- 听/ getListening
- peerCount / getPeerCount
- ETH
- defaultAccount
- defaultBlock
- 同步/ getSyncing
- isSyncing
- coinbase / getCoinbase
- hashrate / getHashrate
- gasPrice / getGasPrice
- 账户/ getAccounts
- 采矿/ getMining
- blockNumber / getBlockNumber
- 寄存器(hexString)(尚未实现)
- unRegister(hexString)(尚未实现)
- 为getBalance(地址)
- getStorageAt(地址,位置)
- 引用代码(地址)
- getBlock(散列/数)
- getBlockTransactionCount(散列/数)
- getUncle(散列/数)
- getBlockUncleCount(散列/数)
- getTransaction(散)
- getTransactionFromBlock(hashOrNumber,indexNumber)
- getTransactionReceipt(散)
- getTransactionCount(地址)
- sendTransaction(对象)
- 呼叫(对象)
- estimateGas(对象)
- filter(array(,options))
- 手表(回调)
- stopWatching(回调)
- 得到()
- 合同(abiArray)
- contract.myMethod()
- contract.myEvent()
- contract.allEvents()
- getCompilers()
- compile.lll(串)
- compile.solidity(串)
- compile.serpent(串)
- namereg
- sendIBANTransaction
- IBAN
- FROMADDRESS
- fromBban
- createIndirect
- 已验证
- isDirect
- isIndirect
- 校验
- 机构
- 客户
- 地址
- D b
- putString(名称,键,值)
- getString(名称,键)
- putHex(名称,键值)
- getHex(名称,键)
- 嘘
- 后(postObject)
- newIdentity()
- hasIdentity(十六进制串)
- newGroup(_id,_who)
- addToGroup(_id,_who)
- 过滤器(对象/串)
- 手表(回调)
- stopWatching(回调)
- 得到(回调)
- 版
用法
WEB3
该web3
对象提供了所有的方法。
例
var Web3 = require("web3");
// create an instance of web3 using the HTTP provider.
// NOTE in mist web3 is already available, so check first if its available before instantiating
var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
web3.version.api
web3.version.api
// or async
web3.version.getApi(callback(error, result){ ... })
返回
String
- 以太坊js api版本。
例
var version = web3.version.api;
console.log(version); // "0.2.0"
web3.version.client
web3.version.client
// or async
web3.version.getClient(callback(error, result){ ... })
返回
String
- 客户机/节点版本。
例
var version = web3.version.client;
console.log(version); // "Mist/v0.9.3/darwin/go1.4.1"
web3.version.network
web3.version.network
// or async
web3.version.getNetwork(callback(error, result){ ... })
返回
String
- 网络协议版本。
例
var version = web3.version.network;
console.log(version); // 54
web3.version.ethereum
web3.version.ethereum
// or async
web3.version.getEthereum(callback(error, result){ ... })
返回
String
- 以太坊协议版本。
例
var version = web3.version.ethereum;
console.log(version); // 60
web3.version.whisper
web3.version.whisper
// or async
web3.version.getWhisper(callback(error, result){ ... })
返回
String
- 耳语协议版本。
例
var version = web3.version.whisper;
console.log(version); // 20
web3.isConnected
web3.isConnected()
应该被调用来检查一个节点的连接是否存在
参数
没有
返回
Boolean
例
if(!web3.isConnected()) {
// show some dialog to ask the user to start a node
} else {
// start web3 filters, calls, etc
}
web3.setProvider
web3.setProvider(provider)
应该被称为设置提供者。
参数
没有
返回
undefined
例
web3.setProvider(new web3.providers.HttpProvider("http://localhost:8545")); // 8080 for cpp/AZ, 8545 for go/mist
web3.currentProvider
web3.currentProvider
将包含当前的提供者,如果有的话。这可以用来检查是否雾等已经提供商。
返回
Object
- 提供者设置或null
;
例
// Check if mist etc. already set a provider
if(!web3.currentProvider)
web3.setProvider(new web3.providers.HttpProvider("http://localhost:8545"));
web3.reset
web3.reset(keepIsSyncing)
应该调用重置web3的状态。重设除经理之外的所有事物 卸载所有过滤器。停止轮询。
参数
Boolean
- 如果true
它将卸载所有的过滤器,但将保持web3.eth.isSyncing()民意调查
返回
undefined
例
web3.reset();
web3.sha3
web3.sha3(string [, callback])
参数
String
- 使用SHA3算法进行散列的字符串Function
- (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明。
返回
String
- 给定数据的SHA3。
例
var str = web3.sha3("Some ASCII string to be hashed");
console.log(str); // "0x536f6d6520415343494920737472696e6720746f20626520686173686564"
var hash = web3.sha3(str);
console.log(hash); // "0xb21dbc7a5eb6042d91f8f584af266f1a512ac89520f43562c6c1e37eab6eb0c4"
web3.toHex
web3.toHex(mixed);
将任何值转换为HEX。
参数
String|Number|Object|Array|BigNumber
- 解析为HEX的值。如果它是一个对象或数组,它将是JSON.stringify
第一个。如果它是一个BigNumber,它将使它成为一个数字的HEX值。
返回
String
- 十六进制字符串mixed
。
例
var str = web3.toHex({test: "test"});
console.log(str); // "0x7b2274657374223a2274657374227d"
web3.toAscii
web3.toAscii(hexString);
将HEX字符串转换为ASCII字符串。
参数
String
- 要转换为ASCII码的HEX字符串。
返回
String
- 由给定的ASCII字符串组成hexString
。
例
var str = web3.toAscii("0x657468657265756d000000000000000000000000000000000000000000000000");
console.log(str); // "ethereum"
web3.fromAscii
web3.fromAscii(string [, padding]);
将任何ASCII字符串转换为HEX字符串。
参数
String
- 要转换为HEX的ASCII字符串。Number
- 返回的HEX字符串应该有的字节数。
返回
String
- 转换后的HEX字符串。
例
var str = web3.fromAscii("ethereum");
console.log(str); // "0x657468657265756d"
var str2 = web3.fromAscii("ethereum", 32);
console.log(str2); // "0x657468657265756d000000000000000000000000000000000000000000000000"
web3.toDecimal
web3.toDecimal(hexString);
将HEX字符串转换为其数字表示形式。
参数
String
- 要转换为数字的HEX字符串。
返回
Number
- 代表数据的数字hexString
。
例
var number = web3.toDecimal("0x15");
console.log(number); // 21
web3.fromDecimal
web3.fromDecimal(number);
将数字或数字字符串转换为HEX表示形式。
参数
Number|String
- 要转换为HEX字符串的数字。
返回
String
- 表示给定的HEX字符串number
。
例
var value = web3.fromDecimal("21");
console.log(value); // "0x15"
web3.fromWei
web3.fromWei(number, unit)
将一些wei转换成以下的ethereum单元:
kwei
/ada
mwei
/babbage
gwei
/shannon
szabo
finney
ether
kether
/grand
/einstein
mether
gether
tether
参数
Number|String|BigNumber
- 一个数字或BigNumber实例。String
- 以上以太单位之一。
返回
String|BigNumber
- 数字字符串或BigNumber实例,具体取决于给定的number
参数。
例
var value = web3.fromWei("21000000000000", "finney");
console.log(value); // "0.021"
web3.toWei
web3.toWei(number, unit)
将以太坊单位转换为wei。可能的单位是:
kwei
/ada
mwei
/babbage
gwei
/shannon
szabo
finney
ether
kether
/grand
/einstein
mether
gether
tether
参数
Number|String|BigNumber
- 一个数字或BigNumber实例。String
- 以上以太单位之一。
返回
String|BigNumber
- 数字字符串或BigNumber实例,具体取决于给定的number
参数。
例
var value = web3.toWei("1", "ether");
console.log(value); // "1000000000000000000"
web3.toBigNumber
web3.toBigNumber(numberOrHexString);
将给定的数字转换为BigNumber实例。
请参阅BigNumber上的注释。
参数
Number|String
- 数字的数字,字符串或HEX字符串。
返回
BigNumber
- 表示给定值的BigNumber实例。
例
var value = web3.toBigNumber("200000000000000000000001");
console.log(value); // instanceOf BigNumber
console.log(value.toNumber()); // 2.0000000000000002e+23
console.log(value.toString(10)); // "200000000000000000000001"
web3.net
web3.net.listening
web3.net.listening
// or async
web3.net.getListening(callback(error, result){ ... })
该属性是只读的,说明节点是否正在主动侦听网络连接。
返回
Boolean
- true
如果客户端正在主动侦听网络连接,否则false
。
例
var listening = web3.net.listening;
console.log(listening); // true of false
web3.net.peerCount
web3.net.peerCount
// or async
web3.net.getPeerCount(callback(error, result){ ... })
该属性是只读的,并返回连接的对等体的数量。
返回
Number
- 当前连接到客户端的对等点的数量。
例
var peerCount = web3.net.peerCount;
console.log(peerCount); // 4
web3.eth
包含以太坊区块链相关的方法。
例
var eth = web3.eth;
web3.eth.defaultAccount
web3.eth.defaultAccount
这个默认地址用于以下方法(可以通过指定from
属性来选择覆盖它):
- web3.eth.sendTransaction()
- web3.eth.call()
值
String
,20字节 - 您拥有的任何地址,或者您拥有私钥的地址。
默认是 undefined
。
返回
String
,20字节 - 当前设置的默认地址。
例
var defaultAccount = web3.eth.defaultAccount;
console.log(defaultAccount); // ""
// set the default block
web3.eth.defaultAccount = "0x8888f1f195afa192cfee860698584c030f4c9db1";
web3.eth.defaultBlock
web3.eth.defaultBlock
这个默认块用于以下方法(可选地,您可以通过将defaultBlock作为最后一个参数来覆盖defaultBlock):
- web3.eth.getBalance()
- web3.eth.getCode()
- web3.eth.getTransactionCount()
- web3.eth.getStorageAt()
- web3.eth.call()
值
默认块参数可以是以下之一:
Number
- 一个块号码String
-"earliest"
genisis块String
-"latest"
,最新的区块(当前区块链头)String
-"pending"
,目前开采的区块(包括待交易)
默认是 latest
返回
Number|String
- 查询状态时使用的默认块编号。
例
var defaultBlock = web3.eth.defaultBlock;
console.log(defaultBlock); // "latest"
// set the default block
web3.eth.defaultBlock = 231;
web3.eth.syncing
web3.eth.syncing
// or async
web3.eth.getSyncing(callback(error, result){ ... })
此属性是只读的,并在节点正在同步时返回同步对象false
。
返回
Object|Boolean
- 同步对象如下所示,当节点当前正在同步或false
:
startingBlock
:Number
- 同步开始的块号。currentBlock
:Number
- 节点当前同步到的块的块号。highestBlock
:Number
- 要同步到的估计块号码。
例
var sync = web3.eth.syncing;
console.log(sync);
/*
{
startingBlock: 300,
currentBlock: 312,
highestBlock: 512
}
*/
web3.eth.isSyncing
web3.eth.isSyncing(callback);
这个便利函数调用callback
每次同步开始,更新和停止。
返回
Object
- 具有以下方法的isSyncing对象:
syncing.addCallback()
:添加另一个回调,当节点启动或停止同步时将调用该回调。syncing.stopWatching()
:停止同步回调。
回调返回值
Boolean
-true
当同步开始和false
停止时,回调将被触发。Object
- 同步时,将返回同步对象:startingBlock
:Number
- 同步开始的块号。currentBlock
:Number
- 节点当前同步到的块的块号。highestBlock
:Number
- 要同步到的估计块号码。
例
web3.eth.isSyncing(function(error, sync){
if(!error) {
// stop all app activity
if(sync === true) {
// we use `true`, so it stops all filters, but not the web3.eth.syncing polling
web3.reset(true);
// show sync info
} else if(sync) {
console.log(sync.currentBlock);
// re-gain app operation
} else {
// run your app init function...
}
}
});
web3.eth.coinbase
web3.eth.coinbase
// or async
web3.eth.getCoinbase(callback(error, result){ ... })
这个属性是只读的,并返回采矿奖励去的coinbase地址。
返回
String
- 客户的coinbase地址。
例
var coinbase = web3.eth.coinbase;
console.log(coinbase); // "0x407d73d8a49eeb85d32cf465507dd71d507100c1"
web3.eth.mining
web3.eth.mining
// or async
web3.eth.getMining(callback(error, result){ ... })
该属性是只读的,表示节点是否正在挖掘。
返回
Boolean
- true
如果客户正在挖矿,否则false
。
例
var mining = web3.eth.mining;
console.log(mining); // true or false
web3.eth.hashrate
web3.eth.hashrate
// or async
web3.eth.getHashrate(callback(error, result){ ... })
此属性是只读的,并返回节点正在挖掘的每秒散列数。
返回
Number
- 每秒的哈希数。
例
var hashrate = web3.eth.hashrate;
console.log(hashrate); // 493736
web3.eth.gasPrice
web3.eth.gasPrice
// or async
web3.eth.getGasPrice(callback(error, result){ ... })
此属性是只读的,并返回当前的天然气价格。天然气价格是由x最新块中位数天然气价格决定的。
返回
BigNumber
- 当前天然气价格的一个BigNumber实例。
请参阅BigNumber上的注释。
例
var gasPrice = web3.eth.gasPrice;
console.log(gasPrice.toString(10)); // "10000000000000"
web3.eth.accounts
web3.eth.accounts
// or async
web3.eth.getAccounts(callback(error, result){ ... })
该属性是只读的,并返回节点控制的帐户列表。
返回
Array
- 由客户端控制的地址数组。
例
var accounts = web3.eth.accounts;
console.log(accounts); // ["0x407d73d8a49eeb85d32cf465507dd71d507100c1"]
web3.eth.blockNumber
web3.eth.blockNumber
// or async
web3.eth.getBlockNumber(callback(error, result){ ... })
此属性是只读的,并返回当前的块号。
返回
Number
- 最近的块的数量。
例
var number = web3.eth.blockNumber;
console.log(number); // 2744
web3.eth.register
web3.eth.register(addressHexString [, callback])
(尚未实施)注册包含的给定地址web3.eth.accounts
。这允许将非私钥拥有的账户关联为一个拥有的账户(例如,合同钱包)。
参数
String
- 要注册的地址Function
- (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明。
返回
?
例
web3.eth.register("0x407d73d8a49eeb85d32cf465507dd71d507100ca")
web3.eth.unRegister
web3.eth.unRegister(addressHexString [, callback])
(尚未执行)取消注册给定的地址。
参数
String
- 取消注册的地址。Function
- (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明。
返回
?
例
web3.eth.unregister("0x407d73d8a49eeb85d32cf465507dd71d507100ca")
web3.eth.getBalance
web3.eth.getBalance(addressHexString [, defaultBlock] [, callback])
获取给定块的地址余额。
参数
String
- 获得余额的地址。Number|String
- (可选)如果你传递这个参数,它将不使用web3.eth.defaultBlock设置的默认块。Function
- (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明。
返回
String
- wei中给定地址的当前余额的BigNumber实例。
请参阅BigNumber上的注释。
例
var balance = web3.eth.getBalance("0x407d73d8a49eeb85d32cf465507dd71d507100c1");
console.log(balance); // instanceof BigNumber
console.log(balance.toString(10)); // "1000000000000"
console.log(balance.toNumber()); // 1000000000000
web3.eth.getStorageAt
web3.eth.getStorageAt(addressHexString, position [, defaultBlock] [, callback])
获取存储在地址的特定位置。
参数
String
- 从中获取存储的地址。Number
- 存储的索引位置。Number|String
- (可选)如果你传递这个参数,它将不使用web3.eth.defaultBlock设置的默认块。Function
- (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明。
返回
String
- 给定位置的存储值。
例
var state = web3.eth.getStorageAt("0x407d73d8a49eeb85d32cf465507dd71d507100c1", 0);
console.log(state); // "0x03"
web3.eth.getCode
web3.eth.getCode(addressHexString [, defaultBlock] [, callback])
获取特定地址的代码。
参数
String
- 从中获取代码的地址。Number|String
- (可选)如果你传递这个参数,它将不使用web3.eth.defaultBlock设置的默认块。Function
- (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明。
返回
String
- 给定地址的数据addressHexString
。
例
var code = web3.eth.getCode("0xd5677cf67b5aa051bb40496e68ad359eb97cfbf8");
console.log(code); // "0x600160008035811a818181146012578301005b601b6001356025565b8060005260206000f25b600060078202905091905056"
web3.eth.getBlock
web3.eth.getBlock(blockHashOrBlockNumber [, returnTransactionObjects] [, callback])
返回与块编号或块散列匹配的块。
参数
String|Number
- 块号或散列。或者是字符串"earliest"
,"latest"
或者"pending"
像默认的block参数那样。Boolean
- (可选,默认false
)如果true
返回的块将包含所有事务作为对象,如果false
它只包含事务散列。Function
- (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明。
返回
Object
- 块对象:
number
:Number
- 块号。null
当其挂起的块。hash
:String
,32字节 - 块的散列。null
当其挂起的块。parentHash
:String
,32字节 - 父块的散列。nonce
:String
,8字节 - 生成的工作量证明的散列值。null
当其挂起的块。sha3Uncles
:String
,32个字节 - 块中的数据。logsBloom
:String
,256字节 - 块的日志的布隆过滤器。null
当其挂起的块。transactionsRoot
:String
,32字节 - 块的事务树的根stateRoot
:String
,32字节 - 块的最终状态树的根。miner
:String
,20 Bytes - 给予采矿奖励的受益人的地址。difficulty
:BigNumber
- 这个块的难度的整数。totalDifficulty
:BigNumber
- 直到这个块的链条总难度的整数。extraData
:String
- 该块的“额外数据”字段。size
:Number
- 以字节为单位整数该块的大小。gasLimit
:Number
- 在这个区块允许的最大的气体。gasUsed
:Number
- 此区块内所有交易使用的天然气总量。timestamp
:Number
- 块整理时的unix时间戳。transactions
:Array
- 根据最后给定的参数,事务对象数组或32字节事务散列。uncles
:Array
- 一些叔叔哈希。
例
var info = web3.eth.block(3150);
console.log(info);
/*
{
"number": 3,
"hash": "0xef95f2f1ed3ca60b048b4bf67cde2195961e0bba6f70bcbea9a2c4e133e34b46",
"parentHash": "0x2302e1c0b972d00932deb5dab9eb2982f570597d9d42504c05d9c2147eaf9c88",
"nonce": "0xfb6e1a62d119228b",
"sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"transactionsRoot": "0x3a1b03875115b79539e5bd33fb00d8f7b7cd61929d5a3c574f507b8acf415bee",
"stateRoot": "0xf1133199d44695dfa8fd1bcfe424d82854b5cebef75bddd7e40ea94cda515bcb",
"miner": "0x8888f1f195afa192cfee860698584c030f4c9db1",
"difficulty": BigNumber,
"totalDifficulty": BigNumber,
"size": 616,
"extraData": "0x",
"gasLimit": 3141592,
"gasUsed": 21662,
"timestamp": 1429287689,
"transactions": [
"0x9fc76417374aa880d4449a1f7f31ec597f00b1f6f3dd2d66f4c9c6c445836d8b"
],
"uncles": []
}
*/
web3.eth.getBlockTransactionCount
web3.eth.getBlockTransactionCount(hashStringOrBlockNumber [, callback])
返回给定块中的事务数。
参数
String|Number
- 块号或散列。或者是字符串"earliest"
,"latest"
或者"pending"
像默认的block参数那样。Function
- (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明。
返回
Number
- 给定块中的事务数量。
例
var number = web3.eth.getBlockTransactionCount("0x407d73d8a49eeb85d32cf465507dd71d507100c1");
console.log(number); // 1
web3.eth.getUncle
web3.eth.getUncle(blockHashStringOrNumber, uncleNumber [, returnTransactionObjects] [, callback])
通过给定的叔叔索引位置返回一个块叔叔。
参数
String|Number
- 块号或散列。或者是字符串"earliest"
,"latest"
或者"pending"
像默认的block参数那样。Number
- 叔叔的指标位置。Boolean
- (可选,默认false
)如果true
返回的块将包含所有事务作为对象,如果false
它只包含事务散列。Function
- (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明。
返回
Object
- 回国的叔叔。有关返回值,请参阅web3.eth.getBlock()。
注:叔叔不包含个人交易。
例
var uncle = web3.eth.getUncle(500, 0);
console.log(uncle); // see web3.eth.getBlock
web3.eth.getTransaction
web3.eth.getTransaction(transactionHash [, callback])
返回匹配给定事务哈希的事务。
参数
String
- 交易哈希。Function
- (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明。
返回
Object
- 一个交易对象的哈希值transactionHash
:
hash
:String
,32字节 - 交易的散列。nonce
:Number
- 发件人在此之前进行的交易次数。blockHash
:String
,32字节 - 当这个事务处于null
挂起状态时,这个事务所在的块的散列。blockNumber
:Number
- 该交易所在null
的区号。transactionIndex
:Number
- 块中交易指标位置的整数。null
当它待定。from
:String
,20字节 - 发件人的地址。to
:String
,20字节 - 接收器的地址。null
当其创建合同交易时。value
:BigNumber
- 在魏的价值转移。gasPrice
:BigNumber
- 魏先生提供的天然气价格。gas
:Number
- 发件人提供的气体。input
:String
- 与交易一起发送的数据。
例
var blockNumber = 668;
var indexOfTransaction = 0
var transaction = web3.eth.getTransaction(blockNumber, indexOfTransaction);
console.log(transaction);
/*
{
"hash": "0x9fc76417374aa880d4449a1f7f31ec597f00b1f6f3dd2d66f4c9c6c445836d8b",
"nonce": 2,
"blockHash": "0xef95f2f1ed3ca60b048b4bf67cde2195961e0bba6f70bcbea9a2c4e133e34b46",
"blockNumber": 3,
"transactionIndex": 0,
"from": "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b",
"to": "0x6295ee1b4f6dd65047762f924ecd367c17eabf8f",
"value": BigNumber,
"gas": 314159,
"gasPrice": BigNumber,
"input": "0x57cb2fc4"
}
*/
web3.eth.getTransactionFromBlock
getTransactionFromBlock(hashStringOrNumber, indexNumber [, callback])
根据块散列或数字以及交易索引位置返回交易。
参数
String
- 一个块号或散列。或者是字符串"earliest"
,"latest"
或者"pending"
像默认的block参数那样。Number
- 交易指标头寸。Function
- (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明。
返回
Object
- 一个事务对象,请参阅web3.eth.getTransaction:
例
var transaction = web3.eth.getTransactionFromBlock("0x4534534534", 2);
console.log(transaction); // see web3.eth.getTransaction
web3.eth.getTransactionReceipt
web3.eth.getTransactionReceipt(hashString [, callback])
按事务散列返回事务的接收。
请注意,收据不可用于未完成的交易。
参数
String
- 交易哈希。Function
- (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明。
返回
Object
- 交易收据对象,或未null
找到收据时:
blockHash
:String
,32字节 - 此事务所在块的散列。blockNumber
:Number
- 此交易所在的区号。transactionHash
:String
,32字节 - 交易的散列。transactionIndex
:Number
- 块中交易指标位置的整数。from
:String
,20字节 - 发件人的地址。to
:String
,20字节 - 接收器的地址。null
当其创建合同交易时。cumulativeGasUsed
:Number
- 该交易在区块中执行时使用的天然气总量。gasUsed
:Number
- 这一特定交易单独使用的天然气量。contractAddress
:String
- 20字节 - 创建合同地址(如果交易是创建合同),否则null
。logs
:Array
- 该事务生成的日志对象数组。
例
var receipt = web3.eth.getTransactionReceipt("0x9fc76417374aa880d4449a1f7f31ec597f00b1f6f3dd2d66f4c9c6c445836d8b");
console.log(receipt);
{
"transactionHash": "0x9fc76417374aa880d4449a1f7f31ec597f00b1f6f3dd2d66f4c9c6c445836d8b",
"transactionIndex": 0,
"blockHash": "0xef95f2f1ed3ca60b048b4bf67cde2195961e0bba6f70bcbea9a2c4e133e34b46",
"blockNumber": 3,
"contractAddress": "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b",
"cumulativeGasUsed": 314159,
"gasUsed": 30234,
"logs": [{
// logs as returned by getFilterLogs, etc.
}, ...]
}
web3.eth.getTransactionCount
web3.eth.getTransactionCount(addressHexString [, defaultBlock] [, callback])
获取从该地址发送的交易数量。
参数
String
- 从中获取交易数量的地址。Number|String
- (可选)如果你传递这个参数,它将不使用web3.eth.defaultBlock设置的默认块。Function
- (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明。
返回
Number
- 从给定地址发送的交易数量。
例
var number = web3.eth.getTransactionCount("0x407d73d8a49eeb85d32cf465507dd71d507100c1");
console.log(number); // 1
web3.eth.sendTransaction
web3.eth.sendTransaction(transactionObject [, callback])
发送一个事务到网络。
参数
Object
- 要发送的交易对象:from
:String
- 发送帐户的地址。如果未指定,请使用web3.eth.defaultAccount属性。to
:String
- (可选)消息的目标地址,对于创建合同的事务没有定义。value
:Number|String|BigNumber
- (可选)魏为交易而转让的价值,如果是合同创造交易,则也为捐赠。gas
:Number|String|BigNumber
- (可选,默认:待定)交易使用的天然气量(未使用的天然气可退还)。gasPrice
:Number|String|BigNumber
- (可选,默认:待定)wei中此次交易的天然气价格,默认为平均网络天然气价格。data
:String
- (可选)包含消息关联数据的字节字符串,或者创建合同的事务中的初始化代码。nonce
:Number
- (可选)一个随机数的整数。这允许覆盖使用相同的随机数的您自己的未决事务。
Function
- (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明。
返回
String
- 32字节的事务散列为HEX字符串。
如果事务是创建合同,则使用web3.eth.getTransactionReceipt()获取合同地址。
例
// compiled solidity source code using https://chriseth.github.io/cpp-ethereum/
var code = "603d80600c6000396000f3007c01000000000000000000000000000000000000000000000000000000006000350463c6888fa18114602d57005b600760043502
8060005260206000f3";
web3.eth.sendTransaction({data: code}, function(err, address) {
if (!err)
console.log(address); // "0x7f9fade1c0d57a7af66ab4ead7c2eb7b11a91385"
});
web3.eth.call
web3.eth.call(callObject [, defaultBlock] [, callback])
执行消息调用事务,该消息调用事务在节点的VM中直接执行,但不会开发到区块链中。
参数
Object
- 一个事务对象见web3.eth.sendTransaction,不同之处在于调用该from
属性也是可选的。Number|String
- (可选)如果你传递这个参数,它将不使用web3.eth.defaultBlock设置的默认块。Function
- (可选)如果传递一个回调,HTTP请求将变为异步。详情请参阅此说明。
返回
String
- 呼叫的返回数据,例如一个代码函数的返回值。
例
var result = web3.eth.call({
to: "0xc4abd0339eb8d57087278718986382264244252f",
data: "0xc6888fa10000000000000000000000000000000000000000000000000000000000000003"
});
console.log(result); // "0x0000000000000000000000000000000000000000000000000000000000000015"
web3.eth.estimateGas
web3.eth.estimateGas(callObject [, defaultBlock] [, callback])
执行消息调用或事务,该消息调用或事务在节点的VM中直接执行,但从未开采到区块链中并返回所使用的气体量。
参数
请参阅web3.eth.sendTransaction,期望所有属性都是可选的。
返回
Number
- 用于模拟呼叫/交易的废气。
例
var result = web3.eth.estimateGas({
to: "0xc4abd0339eb8d57087278718986382264244252f",
data: "0xc6888fa10000000000000000000000000000000000000000000000000000000000000003"
});
console.log(result); // "0x0000000000000000000000000000000000000000000000000000000000000015"
web3.eth.filter
// can be "latest" or "pending"
var filter = web3.eth.filter(filterString);
// OR object are log filter options
var filter = web3.eth.filter(options);
// watch for changes
filter.watch(function(error, result){
if (!error)
console.log(result);
});
// Additionally you can start watching right away, by passing a callback:
web3.eth.filter(options, function(error, result){
if (!error)
console.log(result);
});
参数
String|Object
- 字符串"latest"
或"pending"
分别监视最新块或未决事务中的更改。或者如下所示的过滤器选项对象:fromBlock
:Number|String
- 最早的块的数量(latest
可以表示最近的和pending
当前的挖掘块)。默认情况下latest
。toBlock
:Number|String
- 最新块的编号(latest
可以表示最近的和pending
当前正在挖掘的块)。默认情况下latest
。address
:String
- 一个地址或一个地址列表,只能从特定账户获取日志。topics
:Array of Strings
- 必须分别出现在日志条目中的值数组。顺序是重要的,如果你想离开话题使用null
,例如[null, "0x00..."]
。
返回
Object
- 具有以下方法的过滤器对象:
filter.get(callback)
:返回所有符合过滤器的日志条目。filter.watch(callback)
:监视适合过滤器的状态更改并调用回调。详情请参阅此说明。filter.stopWatching()
:停止监视并卸载节点中的过滤器。一旦完成,应该总是被调用。
观看回调返回值
String
- 使用"latest"
参数时,它返回最后一个传入块的块散列。String
- 使用"pending"
参数时,它返回最后一个添加挂起事务的事务散列。Object
- 使用手动筛选器选项时,它将按如下方式返回一个日志对象:logIndex
:Number
- 块中日志索引位置的整数。null
当其挂起的日志。transactionIndex
:Number
- 整数交易指标头寸日志是从中创建的。null
当其挂起的日志。transactionHash
:String
,32字节 - 创建此日志的事务的散列值。null
当其挂起的日志。blockHash
:String
,32字节 - 这个日志所在的块的哈希null
。null
当其挂起的日志。blockNumber
:Number
-null
当其挂起时,该日志所在的块号。null
当其挂起的日志。address
:String
,32字节 - 这个日志起源的地址。data
:String
- 包含日志的一个或多个32字节的非索引参数。topics
:Array of Strings
-DATA
索引日志参数0到4 32字节的数组。(稳固性:第一个主题是事件签名的散列(例如Deposit(address,bytes32,uint256)
),除了用说明anonymous
符声明事件)。
注意事件过滤器返回值请参阅合同事件
例
var filter = web3.eth.filter("pending
- 上一篇: POA和纽带机制
- 下一篇: 以太坊智能合约编程之菜鸟教程