web3.js是開發以太坊去中心化應用(DApp)必備的JavaScript庫。那麼,web3.js的做用是什麼?它的實現原理又是什麼?javascript
以太坊網絡是由衆多彼此平等的節點組成的P2P網絡,其中每一個節點都有整個區塊鏈的拷貝。當你但願調用鏈上一個智能合約的方法時,須要鏈接到其中的某個節點並告知節點智能合約的地址、 你但願調用的方法以及向該方法傳入的參數java
不過以太坊節點只能理解JSON-PRC,這是一種遠程調用協議,這種協議對人而言並非很友好、易讀。你發送給節點的對合約方法的調用請求看起來就像這樣:web
// Yeah... Good luck writing all your function calls this way! {"jsonrpc":"2.0","method":"eth_sendTransaction","params":[{"from":"0xb60e8dd61c5d32be8058bb8eb970870f07233155","to":"0xd46e8dd67c5d32be8058bb8eb970870f07244567","gas":"0x76c0","gasPrice":"0x9184e72a000","value":"0x9184e72a","data":"0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"}],"id":1}
看起來不那麼爽,對吧?json
幸運的是,web3.js把這些複雜的調用請求封裝起來,讓你只須要經過更加友好的javascript接口來和以太坊節點交互。使用web3.js時,你要發送上面的JSON-PRC請求,只須要相似於以下的如下代碼:網絡
CryptoZombies.methods.createRandomZombie("Vitalik Nakamoto ") .send({ from: "0xb60e8dd61c5d32be8058bb8eb970870f07233155", gas: "3000000" })
是否是看起來更熟悉一些 ?dom
若是你但願立刻開始學習以太坊DApp開發,能夠訪問匯智網提供的出色的在線互動教程:學習