本文首發於深刻淺出區塊鏈社區 原文連接:Web3.js 0.20.x API 中文版翻譯原文已更新,請讀者前往原文閱讀html
文檔原始連接爲:https://web3.learnblockchain.cn/0.2x.x/,歡迎你們前往查閱,本文只是節選開頭部分的介紹及API列表索引,如下爲翻譯正文:node
爲了開發一個基於以太坊的去中心化應用程序,能夠使用web3.js庫提供的web3對象, 在底層實現上,web3經過RPC調用與本地節點通訊, web3.js能夠與任何暴露了RPC接口的以太坊節點鏈接。git
web3
包含下面幾個對象:github
web3.eth
用來與以太坊區塊鏈及合約的交互web3.shh
用來與Whisper協議相關交互web3.net
用來獲取網絡相關信息web3
包含一些工具web3使用示例:web
想要學習去中心化應用(DAPP)開發,這門課程不容錯過區塊鏈全棧-以太坊DAPP開發實戰npm
首先你須要將web3引入到應用工程中,能夠經過以下幾個方法:api
npm install web3
bower install web3
meteor add ethereum:web3
dist./web3.min.js
而後你須要建立一個web3的實例,設置一個provider。爲了保證你不會覆蓋一個已有的provider(Mist瀏覽器或安裝了MetaMak的瀏覽器會提供Provider),須要先檢查是否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
對象的API了。網絡
因爲這套API被設計來與本地的RPC結點交互,全部函數默認使用同步的HTTP的請求。app
若是你想發起一個異步的請求。大多數函數容許傳一個跟在參數列表後的可選的回調函數來支持異步,回調函數支持Error-first回調的風格。
web3.eth.getBlock(48, function(error, result){ if(!error) console.log(JSON.stringify(result)); else console.error(error); })
能夠容許將多個請求放入隊列,並一次執行。
注意:批量請求並不會更快,在某些狀況下,同時發起多個異步請求,也許更快。這裏的批量請求主要目的是用來保證請求的串行執行。
var batch = web3.createBatch(); batch.add(https://web3.learnblockchain.cn/0.2x.x/web3.eth.getBalance.request('0x0000000000000000000000000000000000000000', 'latest', callback)); batch.add(https://web3.learnblockchain.cn/0.2x.x/web3.eth.contract(abi).at(address).balance.request(address, callback2)); batch.execute();
若是是一個數據類型的返回結果,一般會獲得一個BigNumber對象,由於Javascript不能正確的處理BigNumber,看看下面的例子:
"101010100324325345346456456456456456456" // "101010100324325345346456456456456456456" 101010100324325345346456456456456456456 // 1.0101010032432535e+38
因此web3.js依賴BigNumber Library,且已經自動引入。
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位以上的浮點值,仍會致使出錯。因此推薦儘可能讓賬戶餘額以wei爲單位,僅僅在須要向用戶展現時,才轉換爲其它單位。
var balance = new BigNumber('13124.234435346456466666457455567456'); balance.plus(21).toString(10); // toString(10) converts it to a number string, but can only show upto 20 digits // "13145.23443534645646666646" // your number will be truncated after the 20th digit