這些天,為了錄製以太坊DAPP開發實戰課程,我準備把web3文件全部翻譯一下(並做適當的補充),目前web3.js 0.20.x 版本 已經翻譯完成,歡迎大家前往查閱。
這裡還幾個實用DEMO,供大家參考:
web3.js 1.0 文件中文版 正在翻譯中,請大家關注更新。
web3介紹
Web3是一套和以太坊節點進行通訊的API,如果我們需要基於以太坊來開發去中心化應用,則web3是必須要了解的內容,例如需要通過Web3來獲取節點狀態,獲取賬號資訊,呼叫合約、監聽合約事件等等。
注: 智慧合約是執行在節點提供的虛擬機器上,因此呼叫智慧合約也需要像節點傳送請求。
Web3其實是對節點暴露出來的JSON-RPC介面進行了封裝,它有多個語言版本的實現:
- JavaScript Web3.js
- Python Web3.py
- Haskell hs-web3
- Java web3j
- Scala web3j-scala
- Purescript purescript-web3
- PHP web3.php
- PHP ethereum-php
web3.js版本說明
web3.js 有兩個不相容的版本:0.20.x 及 1.0beta,1.0對0.20版本做了重構,並且引入了Promise來簡化非同步程式設計,避免層層的回撥巢狀。
做一個對比,下面使用兩個版本來獲取當前塊號:
// 0.20 版本
web3.eth.getBlockNumber(function callback(err, value) {
console.log("BlockNumber:" + value)
});
// 1.0 版本
web3.eth.getBlockNumber().then(console.log);
在來看看獲取賬號餘額:
// 0.20 版本
web3.eth.getAccounts(function callback1(error, result){
web3.eth.getBalance(result[0], function callback2(error, value) {
console.log("value" + value);
});
})
// 1.0 版本
web3.eth.getAccounts()
.then((res) => web3.eth.getBalance(res[0]))
.then((value) => console.log(value) );
使用1.0版本程式碼上要比0.2版本簡潔一些,有一點需要特別注意,web3的多數介面都是非同步呼叫形式,通常最後一個引數是回撥函式。
再次厚臉皮的給大家推薦,
想要學習去中心化應用開發,這門課程不容錯過區塊鏈全棧-以太坊DAPP開發實戰