天天看點

以太坊系列 - Web3.js

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

    truffle test

    時會用作業系統安裝的web3js版本,可以用

    truffle verson

    檢視
  • nodejs會使用package.json中指定的web3js版本号

1.x 版本的變動

  • if ('utils' in web3)

    可用此判斷web3j的版本
  • web3.sha3

    web3.utils.sha3

    取代
    • 要哈希的資料在調用web3.utils.sha3 前需要先判空:

      if (!input || !input.length) { return; }

  • web3.eth.accounts

    is deprecated. Use

    web3.eth.getAccounts()

    instead
  • 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

老的項目想通過編譯

# package.json中配置
"web3": "^0.20.0",

# npm時
npm install --force
           
往期精彩回顧:
區塊鍊知識系列
密碼學系列
零知識證明系列
共識系列
公鍊調研系列
比特币系列
以太坊系列
EOS系列
Filecoin系列
聯盟鍊系列
Fabric系列
智能合約系列
Token系列

繼續閱讀