Web3.js
web3.js是一組用來和本地或遠端以太坊節點進行互動的js庫,它可以使用HTTP或IPC建立與以太坊節點旳連接配接。
底層實作上,它通過RPC 調用與本地或遠端節點通信。web3.js可以與任何暴露了RPC接口的以太坊節點連接配接。
Installation
npm install web3
Usage
// In Node.js
const Web3 = require('web3');
let web3 = new Web3('ws://localhost:8546');
console.log(web3);
> {
eth: ... ,
shh: ... ,
utils: ...,
...
}
0.20.X 與 1.X 版本的差別
這是 web3.js主要的兩類版本
- 用
或truffle migrate
時會用作業系統安裝的web3js版本,可以用truffle test
檢視truffle verson
- nodejs會使用package.json中指定的web3js版本号
1.x 版本的變動
-
可用此判斷web3j的版本if ('utils' in web3)
-
被web3.sha3
取代web3.utils.sha3
- 要哈希的資料在調用web3.utils.sha3 前需要先判空:
if (!input || !input.length) { return; }
- 要哈希的資料在調用web3.utils.sha3 前需要先判空:
-
is deprecated. Useweb3.eth.accounts
insteadweb3.eth.getAccounts()
-
被web3.fromWei
取代web3.utils.fromWei
-
被web3.toWei
取代web3.utils.toWei
-
不再支援.watch
-
被myContract.EventName([params]).watch([callback])
取代myContract.EventName([params],[callback])
-
- The HTTP provider is deprecated, as it won’t work for subscriptions.得改用websocket
- truffle-config.js中
websockets: true
- HttpProvider 被 WebsocketProvider 取代, 端口号不用變
- network_local.json 中的 rpcUrl 配置成
ws://127.0.0.1:9545
- truffle-config.js中
老的項目想通過編譯
# package.json中配置
"web3": "^0.20.0",
# npm時
npm install --force
- 往期精彩回顧:
- 區塊鍊知識系列
- 密碼學系列
- 零知識證明系列
- 共識系列
- 公鍊調研系列
- 比特币系列
- 以太坊系列
- EOS系列
- Filecoin系列
- 聯盟鍊系列
- Fabric系列
- 智能合約系列
- Token系列