Web3.js API 中文文檔
http://web3.tryblockchain.org/Web3.js-api-refrence.html
web3
對象提供了所有方法。
示例:
//初始化過程 var Web3 = require('web3'); if (typeof web3 !== 'undefined') { web3 = new Web3(web3.currentProvider); } else { // set the provider you want from Web3.providers web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545")); }
web3.version.api
web3.version.api
返回值:
String
- 以太坊js的api版本
示例:
//省略初始化過程 var version = web3.version.api; console.log(version); $ node test.js 0.18.2
web3.version.node
同步方式:
web3.verison.node
異步方式:
web3.version.getNode(callback(error, result){ ... })
返回值:
String
- 客戶端或節點的版本信息
示例:
//省略初始化過程 var version = web3.version.node; console.log(version); $ node test.js EthereumJS TestRPC/v3.0.3/ethereum-js
web3.version.network
同步方式:
web3.version.network
異步方式:
web3.version.getNetwork(callback(error, result){ ... })
返回值:
String
- 網絡協議版本
示例:
//省略初始化過程 var version = web3.version.network; console.log(version); $ node test.js 1488546587563
web3.version.ethereum
同步方式:
web3.version.ethereum
異步方式:
web3.version.getEthereum(callback(error, result){ ... })
返回值:
String
- 以太坊的協議版本
示例:
//省略初始化過程 var version = web3.version.ethereum; console.log(version); $ node test.js 60
注意:EthereumJS testRPC
客戶端不支持這個命令,報錯Error: Error: RPC method eth_protocolVersion not supported.
web3.version.whisper
同步方式:
web3.version.whisper
異步方式:
web3.version.getWhisper(callback(error, result){ ... })
返回值:
String
- whisper
協議的版本
示例:
//省略初始化過程 var version = web3.version.whisper; console.log(version); $ node test.js 20
注意:EthereumJS testRPC
客戶端不支持這個命令,報錯Error: Error: RPC method shh_version not supported.
web3.isConnected
web3.isConnected
可以用來檢查到節點的連接是否存在(connection to node exist)。
參數:
無
返回值:
Boolean
示例:
//省略初始化過程 var connected = web3.isConnected(); if(!connected){ console.log("node not connected!"); }else{ console.log("node connected"); }
web3.setProvider
web3.setProvider
設置Provider
參數:
無
返回值:
undefined
示例:
web3.setProvider(new web3.providers.HttpProvider('http://localhost:8545'));
web3.currentProvider
web3.currentProvider
如果已經設置了Provider
,則返回當前的Provider
。這個方法可以用來檢查在使用mist
瀏覽器等情況下已經設置過Provider
,避免重復設置的情況。
返回值:
Object - null 或 已經設置的Provider
。
示例:
if(!web3.currentProvider) web3.setProvider(new web3.providers.HttpProvider("http://localhost:8545"));
web3.reset
web3.reset
用來重置web3
的狀態。重置除了manager
以外的其它所有東西。卸載filter
,停止狀態輪詢。
參數:
- Boolean - 如果設置為
true
,將會卸載所有的filter
,但會保留web3.eth.isSyncing()
的狀態輪詢。
返回值:
undefined
示例:
//省略初始化過程 console.log("reseting ... "); web3.reset(); console.log("is connected:" + web3.isConnected()); $ node test.js reseting ... is connected:true
web3.sha3
web3.sha3(string, options)
參數:
String
- 傳入的需要使用Keccak-256 SHA3
算法進行哈希運算的字符串。Object
- 可選項設置。如果要解析的是hex
格式的十六進制字符串。需要設置encoding
為hex
。因為JS中會默認忽略0x
。
返回值:
String
- 使用Keccak-256 SHA3
算法哈希過的結果。
示例:
//省略初始化過程
var hash = web3.sha3("Some string to be hashed"); console.log(hash); var hashOfHash = web3.sha3(hash, {encoding: 'hex'}); console.log(hashOfHash);
web3.toHex
web3.toHex
將任何值轉為HEX
。
參數:
String|Number|Object|Array|BigNumber
- 需要轉化為HEX
的值。如果是一個對象或數組類型,將會先用JSON.stringify
1進行轉換成字符串。如果傳入的是BigNumber
2,則將得到對應的Number
的HEX
。
示例:
//初始化基本對象 var Web3 = require('web3'); var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545")); var BigNumber = require('bignumber.js'); var str = "abcABC"; var obj = {abc: 'ABC'}; var bignumber = new BigNumber('12345678901234567890'); var hstr = web3.toHex(str); var hobj = web3.toHex(obj); var hbg = web3.toHex(bignumber); console.log("Hex of Sring:" + hstr); console.log("Hex of Object:" + hobj); console.log("Hex of BigNumber:" + hbg); $ node test.js Hex of Sring:0x616263414243 Hex of Object:0x7b22616263223a22414243227d Hex of BigNumber:0xab54a98ceb1f0ad2
web3.toAscii
web3.toAscii(hexString)
將HEX
字符串轉為ASCII
3字符串
參數:
String
- 十六進制字符串。
返回值:
String
- 給定十六進制字符串對應的ASCII
碼值。
示例:
var str = web3.toAscii("0x657468657265756d000000000000000000000000000000000000000000000000"); console.log(str); // "ethereum"
web3.fromAscii
web3.fromAscii
將任何的ASCII
碼字符串轉為HEX
字符串。
參數:
String
-ASCII
碼字符串Number
- 返回的字符串字節大小,不夠長會自動填充。
返回值:
String
- 轉換后的HEX
字符串。
示例:
var str = web3.fromAscii('ethereum'); console.log(str); // "0x657468657265756d" var str2 = web3.fromAscii('ethereum', 32); console.log(str2); // "0x657468657265756d000000000000000000000000000000000000000000000000" $ node test.js 0x657468657265756d 0x657468657265756d
備注: 填充padding
功能好像不可用4。
web3.toDecimal
web3.toDecimal
將一個十六進制轉為一個十進制的數字
參數:
String
- 十六進制字符串
返回:
Number
- 傳入字符串所代表的十六進制值。
示例:
var number = web3.toDecimal('0x15'); console.log(number); // 21
web3.fromDecimal
web3.fromDecimal
將一個數字,或者字符串形式的數字轉為一個十六進制串。
參數:
Number|String
- 數字
返回值:
String
- 給定數字對應的十六進制表示。
示例:
var value = web3.fromDecimal('21'); console.log(value); // "0x15"
web3.fromWei
web3.fromWei(number, 單位)
以太坊貨幣單位之間的轉換。將以wei
為單位的數量,轉為下述的單位,可取值如下:
- kwei/ada
- mwei/babbage
- gwei/shannon
- szabo
- finney
- ether
- kether/grand/einstein
- mether
- gether
- tether
參數:
Number|String|BigNumber
- 數字或BigNumber
。String
- 單位字符串
返回值:
String|BigNumber
- 根據傳入參數的不同,分別是字符串形式的字符串,或者是BigNumber
。
示例:
var value = web3.fromWei('21000000000000', 'finney'); console.log(value); // "0.021"
web3.toWei
web3.toWei(number, 單位)
按對應貨幣轉為以wei
為單位。可選擇的單位如下:
- kwei/ada
- mwei/babbage
- gwei/shannon
- szabo
- finney
- ether
- kether/grand/einstein
- mether
- gether
- tether
參數:
Number|String|BigNumber
- 數字或BigNumber
String
- 字符串單位
返回值:
String|BigNumber
- 根據傳入參數的不同,分別是字符串形式的字符串,或者是BigNumber
。
示例:
var value = web3.toWei('1', 'ether'); console.log(value); // "1000000000000000000"
web3.toBigNumber
web3.toBigNumber(數字或十六進制字符串)
將給定的數字或十六進制字符串轉為BigNumber
5。
參數:
Number|String
- 數字或十六進制格式的數字
返回值:
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
異步方式:
web3.net.getListener(callback(error, result){ ... })
此屬性是只讀的,表示當前連接的節點,是否正在listen
網絡連接與否。listen
可以理解為接收。
返回值:
Boolean
- true
表示連接上的節點正在listen
網絡請求,否則返回false
。
示例:
var listening = web3.net.listening; console.log("client listening: " + listening); $ node test.js client listening: true
備注: 如果關閉我們要連接的測試節點,會報錯Error: Invalid JSON RPC response: undefined
。所以這個方法返回的是我們連上節點的listen
狀態。
web3.net.peerCount
同步方式:
web3.net.peerCount
異步方式:
web3.net.getPeerCount(callback(error, result){ ... })
屬性是只讀的,返回連接節點已連上的其它以太坊節點的數量。
返回值:
Number
- 連接節點連上的其它以太坊節點的數量
示例:
var peerCount = web3.net.peerCount; console.log("Peer count: " + peerCount); $ node test.js Peer count: 0
web3.eth
包含以太坊區塊鏈相關的方法
示例:
var eth = web3.eth;
web3.eth.defaultAccount
web3.eth.defaultAccount
默認的地址在使用下述方法時使用,你也可以選擇通過指定from
屬性,來覆蓋這個默認設置。
- web3.eth.sendTransaction()
- web3.eth.call()
默認值為undefined
,20字節大小,任何你有私匙的你自己的地址。
返回值:
String
- 20字節的當前設置的默認地址。
示例:
console.log("Current default: " + web3.eth.defaultAccount); web3.eth.defaultAccount = '0x8888f1f195afa192cfee860698584c030f4c9db1'; console.log("Current default: " + web3.eth.defaultAccount); $ node test.js Current default: undefined Current default: 0x8888f1f195afa192cfee860698584c030f4c9db1
web3.eth.defaultBlock
web3.eth.defaultBlock
使用下述方法時,會使用默認塊設置,你也可以通過傳入defaultBlock
來覆蓋默認配置。
- web3.eth.getBalance()
- web3.eth.getCode()
- web3.eth.getTransactionCount()
- web3.eth.getStorageAt()
- web3.eth.call()
- contract.myMethod.call()
- contract.myMethod.estimateGas()
可選的塊參數,可能下述值中的一個:
Number
- 區塊號String
-earliest
,創世塊。String
-latest
,最近剛出的最新塊,當前的區塊頭。String
-pending
,當前正在mine
的區塊,包含正在打包的交易。
默認值是latest
返回值:
Number|String
- 默認要查狀態的區塊號。
示例:
console.log("defaultBlock: " + web3.eth.defaultBlock); web3.eth.defaultBlock = 231; console.log("defaultBlock: " + web3.eth.defaultBlock); $ node test.js defaultBlock: latest defaultBlock: 231
web3.eth.syncing
同步方式:
web3.eth.syncing
異步方式:
web3.eth.getSyncing(callback(error, result){ ... })
這個屬性是只讀的。如果正在同步,返回同步對象。否則返回false
。
返回值:
Object|Boolean
- 如果正在同步,返回含下面屬性的同步對象。否則返回false
。
返回值:
startingBlock
:Number
- 同步開始區塊號currentBlock
:Number
- 節點當前正在同步的區塊號highestBlock
:Number
- 預估要同步到的區塊
var sync = web3.eth.syncing; console.log(sync); $ node test.js false //正在sync的情況 $ node test.js { startingBlock: 300, currentBlock: 312, highestBlock: 512 }
web3.eth.isSyncing
web3.eth.isSyncing(callback)
提供同步開始,更新,停止的回調函數方法。
返回值:
Object
- 一個syncing
對象,有下述方法:
syncing.addCallback()
: 增加另一個回調函數,在節點開始或停止調用時進行調用。syncing.stopWatching()
: 停止同步回調。
回調返回值:
Boolean
- 同步開始時,此值為true
,同步停止時此回調值為false
。Object
- 當正在同步時,會返回同步對象。startingBlock
:Number
- 同步開始區塊號currentBlock
:Number
- 節點當前正在同步的區塊號highestBlock
:Number
- 預估要同步到的區塊
示例:
//初始化基本對象 var Web3 = require('web3'); var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545")); var BigNumber = require('bignumber.js'); 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
異步方式:
web3.eth.getCoinbase(callback(error, result){ ... })
只讀屬性,節點配置的,如果挖礦成功獎勵的地址。
返回值:
String
- 節點的挖礦獎勵地址。
示例:
var coinbase = web3.eth.coinbase; console.log(coinbase); // "0x407d73d8a49eeb85d32cf465507dd71d507100c1"
web3.eth.mining
同步方式:
web3.eth.mining
異步方式:
web3.eth.getMining(callback(error, result){ ... })
屬性只讀,表示該節點是否配置挖礦。
返回值:
Boolean
- true
表示配置挖礦,否則表示沒有。
var mining = web3.eth.mining; console.log(mining); // true or false
web3.eth.hashrate
同步方式:
web3.eth.hashrate
異步方式:
web3.eth.getHashrate(callback(error, result){ ... })
屬性只讀,表示的是當前的每秒的哈希難度。
返回值:
Number
- 每秒的哈希數
示例:
var hashrate = web3.eth.hashrate; console.log(hashrate);
web3.eth.gasPrice
同步方式:
web3.eth.gasPrice
異步方式:
web3.eth.getGasPrice(callback(error, result){ ... })
屬性是只讀的,返回當前的gas價格。這個值由最近幾個塊的gas價格的中值6決定。
返回值:
BigNumber
- 當前的gas價格的BigNumber
實例,以wei
為單位。
var gasPrice = web3.eth.gasPrice; console.log(gasPrice.toString(10)); // "10000000000000"
web3.eth.accounts
同步方式:
web3.eth.accounts
異步方式:
web3.eth.getAccounts(callback(error, result){ ... })
只讀屬性,返回當前節點持有的帳戶列表。
返回值:
Array
- 節點持有的帳戶列表。
示例:
var accounts = web3.eth.accounts; console.log(accounts);
web3.eth.blockNumber
同步方式:
web3.eth.blockNumber
異步方式:
web3.eth.getBlockNumber(callback(error, result){ ... })
屬性只讀,返回當前區塊號。
var number = web3.eth.blockNumber; console.log(number); // 2744
web3.eth.register
web3.eth.register(addressHexString [, callback])
(暫未實現)將給定地址注冊到web3.eth.accounts
。這將允許無私匙的帳戶,如合約被關聯到有私匙的帳戶,如合約錢包。
參數:
String
- 要注冊的地址。Function
-(可選)回調函數,用於支持異步的方式執行7。
返回值:
待確定
示例:
web3.eth.register("0x407d73d8a49eeb85d32cf465507dd71d507100ca")
web3.eth.unRegister
異步方式
web3.eth.unRegister(addressHexString [, callback])
(暫未實現)取消注冊給定地址
參數:
String
- 要取消注冊的地址Function
- (可選) 回調函數,用於支持異步的方式執行7。
返回值:
待確定
示例:
web3.eth.unRegister("0x407d73d8a49eeb85d32cf465507dd71d507100ca")
web3.eth.getBalance
web3.eth.getBalance(addressHexString [, defaultBlock] [, callback])
獲得在指定區塊時給定地址的余額。
參數:
String
- 要查詢余額的地址。Number|String
-(可選)如果不設置此值使用web3.eth.defaultBlock
設定的塊,否則使用指定的塊。Funciton
- (可選)回調函數,用於支持異步的方式執行7。
返回值:
String
- 一個包含給定地址的當前余額的BigNumber
實例,單位為wei
。
示例:
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])
獲得某個地址指定位置的存儲的狀態值。
合約由控制執行的EVM字節碼和用來保存狀態的
Storage
兩部分組成。Storage
在區塊鏈上是以均為32字節的鍵,值對的形式進行存儲8。
參數:
String
- 要獲得存儲的地址。Number
- 要獲得的存儲的序號Number|String
-(可選)如果未傳遞參數,默認使用web3.eth.defaultBlock
定義的塊,否則使用指定區塊。Function
- 回調函數,用於支持異步的方式執行7。
返回值:
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
- 回調函數,用於支持異步的方式執行7。
返回值:
String
- 給定地址合約編譯后的字節代碼。
示例:
var code = web3.eth.getCode("0xd5677cf67b5aa051bb40496e68ad359eb97cfbf8"); console.log(code); // "0x600160008035811a818181146012578301005b601b6001356025565b8060005260206000f25b600060078202905091905056"
web3.eth.getBlock
web3.eth.getBlock(blockHashOrBlockNumber [, returnTransactionObjects] [, callback])
返回塊號或區塊哈希值所對應的區塊
參數:
Number|String
-(可選)如果未傳遞參數,默認使用web3.eth.defaultBlock
定義的塊,否則使用指定區塊。Boolean
-(可選)默認值為false
。true
會將區塊包含的所有交易作為對象返回。否則只返回交易的哈希。Function
- 回調函數,用於支持異步的方式執行7。
返回值 - 區塊對象:
Number
- 區塊號。當這個區塊處於pending
將會返回null
。hash
- 字符串,區塊的哈希串。當這個區塊處於pending
將會返回null
。parentHash
- 字符串,32字節的父區塊的哈希值。nonce
- 字符串,8字節。POW生成的哈希。當這個區塊處於pending
將會返回null
。sha3Uncles
- 字符串,32字節。叔區塊的哈希值。logsBloom
- 字符串,區塊日志的布隆過濾器9。當這個區塊處於pending
將會返回null
。transactionsRoot
- 字符串,32字節,區塊的交易前綴樹的根。stateRoot
- 字符串,32字節。區塊的最終狀態前綴樹的根。miner
- 字符串,20字節。這個區塊獲得獎勵的礦工。difficulty
-BigNumber
類型。當前塊的難度,整數。totalDifficulty
-BigNumber
類型。區塊鏈到當前塊的總難度,整數。extraData
- 字符串。當前塊的extra data
字段。size
-Number
。當前這個塊的字節大小。- gasLimit -
Number
,當前區塊允許使用的最大gas
。 gasUsed
- 當前區塊累計使用的總的gas
。timestamp
-Number
。區塊打包時的unix
時間戳。transactions
- 數組。交易對象。或者是32字節的交易哈希。uncles
- 數組。叔哈希的數組。
示例:
var info = web3.eth.getBlock(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])
返回指定區塊的交易數量。
參數:
Number|String
-(可選)如果未傳遞參數,默認使用web3.eth.defaultBlock
定義的塊,否則使用指定區塊。Function
- 回調函數,用於支持異步的方式執行7。
返回值:
Nubmer
- 給定區塊的交易數量。
示例:
var number = web3.eth.getBlockTransactionCount("0x407d73d8a49eeb85d32cf465507dd71d507100c1"); console.log(number); // 1
web3.eth.getUncle
web3.eth.getUncle(blockHashStringOrNumber, uncleNumber [, returnTransactionObjects] [, callback])
通過指定叔位置,返回指定叔塊。
參數:
Number|String
-(可選)如果未傳遞參數,默認使用web3.eth.defaultBlock
定義的塊,否則使用指定區塊。Number
- 叔的序號。Boolean
-(可選)默認值為false
。true
會將區塊包含的所有交易作為對象返回。否則只返回交易的哈希。Function
- 回調函數,用於支持異步的方式執行7。
返回值:
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
- 回調函數,用於支持異步的方式執行7。
返回值:
Object
- 一個交易對象
hash
:String
- 32字節,交易的哈希值。nonce
:Number
- 交易的發起者在之前進行過的交易數量。blockHash
:String
- 32字節。交易所在區塊的哈希值。當這個區塊處於pending
將會返回null
。blockNumber
:Number
- 交易所在區塊的塊號。當這個區塊處於pending
將會返回null
。transactionIndex
:Number
- 整數。交易在區塊中的序號。當這個區塊處於pending
將會返回null
。from
:String
- 20字節,交易發起者的地址。to
:String
- 20字節,交易接收者的地址。當這個區塊處於pending
將會返回null
。value
:BigNumber
- 交易附帶的貨幣量,單位為Wei
。gasPrice
:BigNumber
- 交易發起者配置的gas
價格,單位是wei
。gas
:Number
- 交易發起者提供的gas
。.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
。查看web3.eth.defaultBlock
了解可選值。Number
- 交易的序號。Function
- 回調函數,用於支持異步的方式執行7。
返回值:
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])
通過一個交易哈希,返回一個交易的收據。
備注:處於pending
狀態的交易,收據是不可用的。
參數:
String
- 交易的哈希Function
- 回調函數,用於支持異步的方式執行7。
返回值:
Object
- 交易的收據對象,如果找不到返回null
blockHash
:String
- 32字節,這個交易所在區塊的哈希。blockNumber
:Number
- 交易所在區塊的塊號。transactionHash
:String
- 32字節,交易的哈希值。transactionIndex
:Number
- 交易在區塊里面的序號,整數。from
:String
- 20字節,交易發送者的地址。to
:String
- 20字節,交易接收者的地址。如果是一個合約創建的交易,返回null
。cumulativeGasUsed
:Number
- 當前交易執行后累計花費的gas
總值10。gasUsed
:Number
- 執行當前這個交易單獨花費的gas
。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
- 回調函數,用於支持異步的方式執行7。
返回值:
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
- (可選)交易攜帶的貨幣量,以wei
為單位。如果合約創建交易,則為初始的基金。gas
:Number|String|BigNumber
- (可選)默認是自動,交易可使用的gas
,未使用的gas
會退回。gasPrice
:Number|String|BigNumber
- (可選)默認是自動確定,交易的gas
價格,默認是網絡gas
價格的平均值 。data
:String
- (可選)或者包含相關數據的字節字符串,如果是合約創建,則是初始化要用到的代碼。nonce
:Number
- (可選)整數,使用此值,可以允許你覆蓋你自己的相同nonce
的,正在pending
中的交易11。
Function
- 回調函數,用於支持異步的方式執行7。
返回值:
String
- 32字節的交易哈希串。用16進制表示。
如果交易是一個合約創建,請使用web3.eth.getTransactionReceipt()
在交易完成后獲取合約的地址。
示例:
// compiled solidity source code using https://chriseth.github.io/cpp-ethereum/ var code = "603d80600c6000396000f3007c01000000000000000000000000000000000000000000000000000000006000350463c6888fa18114602d57005b6007600435028060005260206000f3"; web3.eth.sendTransaction({data: code}, function(err, address) { if (!err) console.log(address); // "0x7f9fade1c0d57a7af66ab4ead7c2eb7b11a91385" });
web3.eth.sendRawTransaction
web3.eth.sendRawTransaction(signedTransactionData [, callback])
發送一個已經簽名的交易。比如可以用下述簽名的例子:https://github.com/SilentCicero/ethereumjs-accounts
參數:
String
- 16進制格式的簽名交易數據。Function
- 回調函數,用於支持異步的方式執行7。
返回值:
String
- 32字節的16進制格式的交易哈希串。
如果交易是一個合約創建,請使用web3.eth.getTransactionReceipt()
在交易完成后獲取合約的地址。
示例:
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.sendRawTransaction(serializedTx.toString('hex'), function(err, hash) { if (!err) console.log(hash); // "0x7f9fade1c0d57a7af66ab4ead79fade1c0d57a7af66ab4ead7c2c2eb7b11a91385" });
web3.eth.sign
web3.eth.sign(address, dataToSign, [, callback])
使用指定帳戶簽名要發送的數據,帳戶需要處於unlocked
狀態。
參數:
String
- 簽名使用的地址String
- 要簽名的數據Function
-(可選)回調函數,用於支持異步的方式執行7。
返回值:
String
- 簽名后的數據。
返回的值對應的是ECDSA(Elliptic Curve Digital Signature Algorithm)
12簽名后的字符串。
r = signature[0:64] s = signature[64:128] v = signature[128:130]
需要注意的是,如果你使用ecrecover
,這里的v
值是00
或01
,所以如果你想使用他們,你需要把這里的v
值轉成整數,再加上27
。最終你要用的值將是27
或28
13。
示例:
var result = web3.eth.sign("0x135a7de83802408321b74c322f8558db1679ac20", "0x9dd2c369a187b4e6b9c402f030e50743e619301ea62aa4c0737d4ef7e10a3d49"); // second argument is web3.sha3("xyz") console.log(result); // "0x30755ed65396facf86c53e6217c52b4daebe72aa4941d89635409de4c9c7f9466d4e9aaec7977f05e923889b33c0d0dd27d7226b6e6f56ce737465c5cfd04be400"
備注:如果你使用以太坊的客戶端進行簽名時,它們會在你要簽名的數據前增加前綴\x19Ethereum Signed Message:\n
14,感謝讀者@劉兵同學的反饋。
eth_sign
The sign method calculates an Ethereum specific signature with: sign(keccak256("\x19Ethereum Signed Message:\n" + len(message) + message))).
By adding a prefix to the message makes the calculated signature recognisable as an Ethereum specific signature. This prevents misuse where a malicious DApp can sign arbitrary data (e.g. transaction) and use the signature to impersonate the victim.
web3.eth.call
web3.eth.call(callObject [, defaultBlock] [, callback])
在節點的VM中,直接執行消息調用交易。但不會將數據合並區塊鏈中(這樣的調用不會修改狀態)。
參數:
Object
- 返回一個交易對象,同web3.eth.sendTransaction
。與sendTransaction
的區別在於,from
屬性是可選的。Number|String
-(可選)如果不設置此值使用web3.eth.defaultBlock
設定的塊,否則使用指定的塊。Function
-(可選)回調函數,用於支持異步的方式執行7。
返回值:
String
- 函數調用返回的值。
示例:
var Web3 = require('web3'); if (typeof web3 !== 'undefined') { web3 = new Web3(web3.currentProvider); } else { // set the provider you want from Web3.providers web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545")); } var from = web3.eth.accounts[0]; //部署合約的發布地址 /*合約內容如下 pragma solidity ^0.4.0; contract Calc{ function add(uint a, uint b) returns (uint){ return a + b; } } */ var to = "0xa4b813d788218df688d167102e5daff9b524a8bc"; //要發送的數據 //格式說明見: http://me.tryblockchain.org/Solidity-call-callcode-delegatecall.html var data = "0x771602f700000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002"; var result = web3.eth.call({ from : from, to : to, data : data }); //返回結果32字長的結果3 console.log(result);
web3.eth.estimateGas
web3.eth.estimateGas(callObject [, callback])
在節點的VM節點中執行一個消息調用,或交易。但是不會合入區塊鏈中。返回使用的gas
量。
參數:
同web3.eth.sendTransaction
,所有的屬性都是可選的。
返回值:
Number
- 模擬的call/transcation
花費的gas
。
示例:
var result = web3.eth.estimateGas({ to: "0xc4abd0339eb8d57087278718986382264244252f", data: "0xc6888fa10000000000000000000000000000000000000000000000000000000000000003" }); console.log(result); // "0x0000000000000000000000000000000000000000000000000000000000000015"
web3.eth.filter
參數:
String|Object
- 字符串的可取值[latest,pending]。latest
表示監聽最新的區塊變化,pending
表示監聽正在pending
的區塊。如果需要按條件對象過濾,如下:fromBlock
:Number|string
- 起始區塊號(如果使用字符串latest
,意思是最新的,正在打包的區塊),默認值是latest
。toBlock
:Number|string
- 終止區塊號(如果使用字符串latest
,意思是最新的,正在打包的區塊),默認值是latest
。address
:String
- 單個或多個地址。獲取指定帳戶的日志。topics
:String[]
- 在日志對象中必須出現的字符串數組。順序非常重要,如果你想忽略主題,使用null
。如,[null,'0x00...'],你還可以為每個主題傳遞一個單獨的可選項數組,如[null,['option1','option1']]。
返回值:
Object
- 有下述方法的過濾對象。
filter.get(callback)
: 返回滿足過濾條件的日志。filter.watch(callback)
: 監聽滿足條件的狀態變化,滿足條件時調用回調7。filter.stopWatching()
: 停止監聽,清除節點中的過濾。你應該總是在監聽完成后,執行這個操作。
監聽回調返回值:
String
- 當使用latest
參數時。返回最新的一個區塊哈希值。String
- 當使用pending
參數時。返回最新的pending
中的交易哈希值。Object
- 當使用手工過濾選項時,將返回下述的日志對象。logIndex
:Number
- 日志在區塊中的序號。如果是pending
的日志,則為null
。transactionIndex
:Number
- 產生日志的交易在區塊中的序號。如果是pending
的日志,則為null
。transactionHash
:String
,32字節 - 產生日志的交易哈希值。blockHash
:String
,32字節 - 日志所在塊的哈希。如果是pending
的日志,則為null
。blockNumber
:Number
- 日志所在塊的塊號。如果是pending
的日志,則為null
。address
:String
,32字節 - 日志產生的合約地址。data
:string
- 包含日志一個或多個32字節的非索引的參數。topics
:String[]
- 一到四個32字節的索引的日志參數數組。(在Solidity中,第一個主題是整個事件的簽名(如,Deposit(address,bytes32,uint256)
),但如果使用匿名的方式定義事件的情況除外)
事件監聽器的返回結果,見后合約對象的事件
。
示例:
var filter = web3.eth.filter('pending'); filter.watch(function (error, log) { console.log(log); // {"address":"0x0000000000000000000000000000000000000000", "data":"0x0000000000000000000000000000000000000000000000000000000000000000", ...} }); // get all past logs again. var myResults = filter.get(function(error, logs){ ... }); ... // stops and uninstalls the filter filter.stopWatching();
web3.eth.contract
web3.eth.contract(abiArray)
創建一個Solidity的合約對象,用來在某個地址上初始化合約。
參數:
Array
- 一到多個描述合約的函數,事件的ABI對象。
返回值:
Object
- 一個合約對象。
示例:
var MyContract = web3.eth.contract(abiArray); // instantiate by address var contractInstance = MyContract.at([address]); // deploy new contract var contractInstance = MyContract.new([contructorParam1] [, contructorParam2], {data: '0x12345...', from: myAccount, gas: 1000000}); // Get the data to deploy the contract manually var contractData = MyContract.new.getData([contructorParam1] [, contructorParam2], {data: '0x12345...'}); // contractData = '0x12345643213456000000000023434234'
你可以或者使用一個在某個地址上已經存在的合約,或者使用編譯后的字節碼部署一個全新的的合約。
// Instantiate from an existing address: var myContractInstance = MyContract.at(myContractAddress); // Or deploy a new contract: // Deploy the contract asyncronous from Solidity file: ... const fs = require("fs"); const solc = require('solc') let source = fs.readFileSync('nameContract.sol', 'utf8'); let compiledContract = solc.compile(source, 1); let abi = compiledContract.contracts['nameContract'].interface; let bytecode = compiledContract.contracts['nameContract'].bytecode; let gasEstimate = web3.eth.estimateGas({data: bytecode}); let MyContract = web3.eth.contract(JSON.parse(abi)); var myContractReturned = MyContract.new(param1, param2, { from:mySenderAddress, data:bytecode, gas:gasEstimate}, function(err, myContract){ if(!err) { // NOTE: The callback will fire twice! // Once the contract has the transactionHash property set and once its deployed on an address. // e.g. check tx hash on the first call (transaction send) if(!myContract.address) { console.log(myContract.transactionHash) // The hash of the transaction, which deploys the contract // check address on the second call (contract deployed) } else { console.log(myContract.address) // the contract address } // Note that the returned "myContractReturned" === "myContract", // so the returned "myContractReturned" object will also get the address set. } }); // Deploy contract syncronous: The address will be added as soon as the contract is mined. // Additionally you can watch the transaction by using the "transactionHash" property var myContractInstance = MyContract.new(param1, param2, {data: myContractCode, gas: 300000, from: mySenderAddress}); myContractInstance.transactionHash // The hash of the transaction, which created the contract myContractInstance.address // undefined at start, but will be auto-filled later
示例:
// contract abi var abi = [{ name: 'myConstantMethod', type: 'function', constant: true, inputs: [{ name: 'a', type: 'string' }], outputs: [{name: 'd', type: 'string' }] }, { name: 'myStateChangingMethod', type: 'function', constant: false, inputs: [{ name: 'a', type: 'string' }, { name: 'b', type: 'int' }], outputs: [] }, { name: 'myEvent', type: 'event', inputs: [{name: 'a', type: 'int', indexed: true},{name: 'b', type: 'bool', indexed: false}] }]; // creation of contract object var MyContract = web3.eth.contract(abi); // initiate contract for an address var myContractInstance = MyContract.at('0xc4abd0339eb8d57087278718986382264244252f'); // call constant function var result = myContractInstance.myConstantMethod('myParam'); console.log(result) // '0x25434534534' // send a transaction to a function myContractInstance.myStateChangingMethod('someParam1', 23, {value: 200, gas: 2000}); // short hand style web3.eth.contract(abi).at(address).myAwesomeMethod(...); // create filter var filter = myContractInstance.myEvent({a: 5}, function (error, result) { if (!error) console.log(result); /* { address: '0x8718986382264244252fc4abd0339eb8d5708727', topics: "0x12345678901234567890123456789012", "0x0000000000000000000000000000000000000000000000000000000000000005", data: "0x0000000000000000000000000000000000000000000000000000000000000001", ... } */ });
合約對象的方法
// Automatically determines the use of call or sendTransaction based on the method type myContractInstance.myMethod(param1 [, param2, ...] [, transactionObject] [, defaultBlock] [, callback]); // Explicitly calling this method myContractInstance.myMethod.call(param1 [, param2, ...] [, transactionObject] [, defaultBlock] [, callback]); // Explicitly sending a transaction to this method myContractInstance.myMethod.sendTransaction(param1 [, param2, ...] [, transactionObject] [, callback]); // Get the call data, so you can call the contract through some other means var myCallData = myContractInstance.myMethod.getData(param1 [, param2, ...]); // myCallData = '0x45ff3ff6000000000004545345345345..'
合約對象內封裝了使用合約的相關方法。可以通過傳入參數,和交易對象來使用方法。
參數:
String|Number
- (可選)零或多個函數參數。如果傳入一個字符串,需要使用十六進制編碼,如,0xdedbeef
。Object
- (可選)最后一個參數(如果傳了callback
,則是倒數第二個參數),可以是一個交易對象。查看web3.eth.sendTransaction
的第一個參數說明來了解更多。注意,這里不需要填data
和to
屬性。Number|String
-(可選)如果不設置此值使用web3.eth.defaultBlock
設定的塊,否則使用指定的塊。Function
-(可選)回調函數,用於支持異步的方式執行7。
返回值:
String
- 如果發起的是一個call
,對應的是返回結果。如果是transaction
,則要么是一個創建的合約地址,或者是一個transaction
的哈希值。查看web3.eth.sendTransaction
了解更多。
示例:
// creation of contract object var MyContract = web3.eth.contract(abi); // initiate contract for an address var myContractInstance = MyContract.at('0x78e97bcc5b5dd9ed228fed7a4887c0d7287344a9'); var result = myContractInstance.myConstantMethod('myParam'); console.log(result) // '0x25434534534' myContractInstance.myStateChangingMethod('someParam1', 23, {value: 200, gas: 2000}, function(err, result){ ... });
合約對象的事件
你可以像web3.eth.filter
這樣使用事件,他們有相同的方法,但需要傳遞不同的對象來創建事件過濾器。
參數:
Object
- 你想返回的索引值(過濾哪些日志)。如,{'valueA': 1, 'valueB': [myFirstAddress, mySecondAddress]}
。默認情況下,所以有過濾項被設置為null
。意味着默認匹配的是合約所有的日志。Object
- 附加的過濾選項。參見web3.eth.filter
的第一個參數。默認情況下,這個對象會設置address
為當前合約地址,同時第一個主題為事件的簽名。Function
-(可選)傳入一個回調函數,將立即開始監聽,這樣就不用主動調用myEvent.watch(function(){})
7。
回調返回值:
Object
- 事件對象,如下:
address
:String,32字節
- 日志產生的合約地址。args
:Object
- 事件的參數。blockHash
:String,32字節
- 日志所在塊的哈希。如果是pending
的日志,則為null
。blockNumber
:Number
- 日志所在塊的塊號。如果是pending
的日志,則為null
。logIndex
:Number
- 日志在區塊中的序號。如果是pending
的日志,則為null
。event
:String
- 事件名稱。removed
:bool
- 標識產生事件的這個交易是否被移除(因為孤塊),或從未生效(被拒絕的交易)。transactionIndex
:Number
- 產生日志的交易在區塊中的序號。如果是pending
的日志,則為null
。transactionHash
:String,32字節
- 產生日志的交易哈希值。
示例:
var MyContract = web3.eth.contract(abi); var myContractInstance = MyContract.at('0x78e97bcc5b5dd9ed228fed7a4887c0d7287344a9'); // watch for an event with {some: 'args'} var myEvent = myContractInstance.MyEvent({some: 'args'}, {fromBlock: 0, toBlock: 'latest'}); myEvent.watch(function(error, result){ ... }); // would get all past logs again. var myResults = myEvent.get(function(error, logs){ ... }); ... // would stop and uninstall the filter myEvent.stopWatching();
合約 allEvents
var events = myContractInstance.allEvents([additionalFilterObject]); // watch for changes events.watch(function(error, event){ if (!error) console.log(event); }); // Or pass a callback to start watching immediately var events = myContractInstance.allEvents([additionalFilterObject,] function(error, log){ if (!error) console.log(log); });
調用合約創建的所有事件的回調。
參數:
Object
- 附加的過濾選項。參見web3.eth.filter
的第一個參數。默認情況下,這個對象會設置address
為當前合約地址,同時第一個主題為事件的簽名。Function
-(可選)傳入一個回調函數,將立即開始監聽,這樣就不用主動調用myEvent.watch(function(){})
7。
回調返回值:
Object
- 詳見合約對象的事件
了解更多。
示例:
var MyContract = web3.eth.contract(abi); var myContractInstance = MyContract.at('0x78e97bcc5b5dd9ed228fed7a4887c0d7287344a9'); // watch for an event with {some: 'args'} var events = myContractInstance.allEvents({fromBlock: 0, toBlock: 'latest'}); events.watch(function(error, result){ ... }); // would get all past logs again. events.get(function(error, logs){ ... }); ... // would stop and uninstall the filter myEvent.stopWatching();
web3.eth.getCompilers
web3.eth.getCompilers([callback])
返回可用的編譯器。
參數值:
Function
-(可選)回調函數,用於支持異步的方式執行7。
返回值:
Array
- 返回一個字符串數組,可用的編譯器。
web3.eth.compile.solidity
web3.eth.compile.solidity(sourceString [, callback])
編譯Solidity源代碼。
參數:
String
- Solidity源代碼。Function
-(可選)回調函數,用於支持異步的方式執行7。
返回值:
Object
- 合約和編譯信息。
示例:
var source = "" + "contract test {\n" + " function multiply(uint a) returns(uint d) {\n" + " return a * 7;\n" + " }\n" + "}\n"; var compiled = web3.eth.compile.solidity(source); console.log(compiled); // { "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(sourceString [, callback])
編譯LLL源代碼。
參數:
String
- LLL源代碼。Function
-(可選)回調函數,用於支持異步的方式執行7。
返回值:
String
- 十六進制格式編譯后的LLL編碼。
示例:
var source = "..."; var code = web3.eth.compile.lll(source); console.log(code); // "0x603880600c6000396000f3006001600060e060020a600035048063c6888fa114601857005b6021600435602b565b8060005260206000f35b600081600702905091905056"
web3.eth.compile.serpent
web3.eth.compile.serpent(sourceString [, callback])
編譯serpent源代碼。
參數:
String
- serpent源代碼。Function
-(可選)回調函數,用於支持異步的方式執行7。
返回值:
String
- 十六進制格式的編譯后的serpent編碼。
web3.eth.namereg
web3.eth.namereg
返回一個全球注意的對象。
使用方式:
查看這里的例子:https://github.com/ethereum/web3.js/blob/master/example/namereg.html
web3.db
web3.db.putString
web3.db.putString(db, key, value)
這個方法應當在我們打算以一個本地數據庫的級別存儲一個字符串時使用。
參數:
String
- 存儲使用的數據庫。String
- 存儲的鍵。String
- 存儲的值。
返回值:
Boolean
- true
表示成功,否則返回false
。
示例:
web3.db.putString('testDB', 'key', 'myString') // true
web3.db.getString
web3.db.getString(db, key)
從本地的leveldb數據庫中返回一個字符串。
參數:
String
- 存儲使用的數據庫。String
- 存儲的鍵。
返回值:
String
- 存儲的值。
示例:
var value = web3.db.getString('testDB', 'key'); console.log(value); // "myString"
web3.db.putHex
web3.db.putHex(db, key, value)
在本地的leveldb中存儲二進制數據。
參數:
String
- 存儲使用的數據庫。String
- 存儲的鍵。String
- 十六進制格式的二進制。
返回值:
Boolean
- 成功返回true
,失敗返回false
。
示例:
web3.db.putHex('testDB', 'key', '0x4f554b443'); // true
web3.db.getHex
web3.db.getHex(db, key)
返回本地的leveldb中的二進制數據。
參數:
String
- 存儲使用的數據庫。String
- 存儲的鍵。
返回值:
String
- 存儲的十六進制值。
示例:
var value = web3.db.getHex('testDB', 'key'); console.log(value); // "0x4f554b443"
-
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify ↩
-
Big Number 文檔鏈接: https://github.com/MikeMcl/bignumber.js ↩
-
ASCII碼表 http://baike.baidu.com/link?url=fz4Ytl_tjpUhsPbUb4fa3hyXHKJDMcRB5M3K1p0VStnminbvLX4-UmwPCovk1pZUOIemosGv2hRT-r0flGMtEGk3ON8sQctG4-KU67G3fBiOJX6r1CHoKTi-K6BlEEa6egHulQju1p1n1ce1axyeBK ↩
-
http://baike.baidu.com/link?url=9QLxfeXVf7pRpSTSugt2I9ylZA9_vh3sbqs8S8J-dVaZJg9AeADF4P0HlwyOjHOsENJKQS8z7cb0YFSDVMmsYf-xgtODmMXdQNovqRqE2B7 ↩
-
參見Web3.js API 基本中的
使用callback
的章節。 ↩ -
關於
getStroageAt
的說明來源: http://ethereum.stackexchange.com/questions/5865/how-does-web3-eth-getstorageat-work ↩ -
http://ethereum.stackexchange.com/questions/3346/what-is-and-how-to-calculate-cumulative-gas-use[^cumulative]: http://ethereum.stackexchange.com/questions/3346/what-is-and-how-to-calculate-cumulative-gas-used ↩
-
http://zeltsinger.com/2016/11/07/neat-ethereum-tricks-the-transaction-nonce/ ↩
-
這里整理了一個文章,使用web3.js加密,再使用Solidity的ecrecover校驗簽名的完整過程。 http://me.tryblockchain.org/web3js-sign-ecrecover-decode.html ↩