區塊鏈應用開發實戰[14] – DApps 開發環境 Web3.js

小明在研究 MetaMask, Cipher Browser, Trust Wallet 等可執行 DApps 的錢包時,發現網頁都是用 Web3.js 這個 JavaScript 庫來整合錢包。那什麼是 Web3.js 呢?

Web3.js

web3.js是一組用來和本地或遠程以太坊節點進行連接的js庫,以便讓 DApps 能夠訪問區塊鏈上的數據。在底層的實現上,它是通過 RPC 協議與節點通信,web3.js可以與任何對外公開 RPC 介面 的區塊鏈節點連接。

web3.js 目前最新的開發版本為尚未正式釋出的1.0版,官方文件在https://web3js.readthedocs.io/en/1.0/index.html

而在網頁中的調用非常容易上手,只要引入 web3.js 後即可創建一個實例來供調用以太坊的介面

var Web3 = require('web3');

if (typeof web3 !== 'undefined') {
  web3 = new Web3(web3.currentProvider);
} else {
  web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
}

通常若有安裝 MetaMask 或在 Cipher Browser 跟 Turst Wallet 的 DApps 瀏覽器中,錢包會自動識別為 currentProvider。

web3.js 主要提供了下列幾大類的模組:

  • web3.eth
    web3.eth這個包用來和以太坊區塊鏈與智能合約交互。
  • web3.eth.subscribe
    web3.eth.subscribe函數係列的作用是訂閱區塊鏈上的事件。
  • web3.eth.Contract
    web3.eth.Contract 簡化了與以太坊區塊鏈上合約的呼叫,web3會自動幫你將所有介面的調用轉化為底層基於 RPC的調用。這使得網頁與智能合約的整合,和呼叫其他 JavaScript 功能一樣簡單。
  • web3.eth.accounts
    web3.eth.accounts 包含了與以太坊錢包地址創建、交易和數據簽名相關的函式。
  • web3.eth.abi
    web3.eth.abi 用於將函數呼叫編碼為 ABI 格式。
  • web3.bzz
    web3-bzz 用來與去中心化文件存儲系統 Swarm 進行整合。
  • web3.shh
    web3-shh 用來與 Whisper 協議進行交互,以便進行廣播。
  • web3.utils
    web3.utils 提供以太坊 Dapps 開發相關的工具函數等。

 

Jason Chen
administrator
Jason Chen
Tech Entrepreneur | Banking and Gaming Tech Expert | C4 Certified Bitcoin Professional (CBP)

2003 ~ 2007
負責十多家銀行保險公司核心業務系統研發與建置

2008 ~ 2010
與Oracle合作台新銀行IPMS專案,獲頒2010年亞洲銀行家(The Asian Banker)「最佳分行自動化網路獎」及IDC頒發2010企業創新獎(Enterprise Innovation Award 2010)

2011 ~ 2015
加入亞洲最大博彩集團負責上百款RNG遊戲設計與研發,且全部通過GLI國際認證

2016 ~ 2018
投入新創圈,協助新創團隊將想法落實為商業模型。2016年研發多管道行銷平台通過政府SBIR補助,2017年研發聊天機器人平台被收購。目前為區塊鏈的信仰者與推廣者,協助區塊鏈生態圈的加速落地。