Web3.js 0.20.x API 中文版翻譯

本文首發於深刻淺出區塊鏈社區 原文連接: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

首先你須要將web3引入到應用工程中,能夠經過以下幾個方法:api

  • npm: npm install web3
  • bower: bower install web3
  • meteor: meteor add ethereum:web3
  • vanilla: link the 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();

web3.js中的大數處理

若是是一個數據類型的返回結果,一般會獲得一個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

Web3.js API列表

web3

web3.net

web3.eth

web3.db

web3.shh

本教程由**登鏈學院翻譯,由深刻淺出區塊鏈**發佈。

相關文章
相關標籤/搜索