we3.js 是一個JavaScript的套裝library,允許開發者利用HTTP, IPC 或WebSocket與本地或遠程以太坊節點進行交互。常用於 Dapp 網站的前端部分。
web3.js的模組
web3-eth :用於以太坊(Ethereum)區塊鏈和智能合約。
web3-shh :用於whisper協議,用於p2p(Peer-to-Peer)和廣播通信。
web3-bzz :用於swarm協議,去中心化文件存儲。
web3-utils :包含對 Dapp 開發人員有用的幫助函數。
名詞介紹:
ENS(Ethereum Name Service)
ENS是一個基以以太坊區塊鏈的分散式、開放和可擴展的命名系統。
https://ens.domains/
http://docs.ens.domains/en/latest/
whisper通訊協議
是完全基於ID的訊息系統,它的設計目的是形成一套p2p節點間的非同步廣播系統。
whisper網路上的訊息是加密傳送的,完全可以暴露在公網進行傳輸。
為了防範DDos攻擊,它使用了proof-of-work(PoW)工作量證明提高訊息傳送門檻。
Swarm(去中心化的内容儲存和分發網路)
是建立在以太坊區塊鏈之上的社交網絡。它允許用戶使用智能合約相互交互,並提供一個接口來訪問運行在以太坊主網上的dApps。
Promise
代表一個即將完成、或失敗的非同步操作,以及它所產生的值。
API 有分成同步和非同步的呼叫,非同步呼叫採用的是 Error-First Callback 的方式。
ABI (Application Binary Interface)
指兩程式模組間的介面。通常其中一個程式模組會是函式庫或作業系統所提供的服務,而另一邊的模組則是使用者所執行的程式。
EIP-1193
一個 JavaScript Ethereum Provider API,用於跨客戶端和應用程序的一致性。
https://eips.ethereum.org/EIPS/eip-1193
添加 web3.js
首先,需要將 web3.js 放入項目中。這可以使用以下方法完成:
npm:npm install web3
yarn:yarn add web3
pure js::連接 dist/web3.min.js
之後,需要創建一個 web3 實例並設置一個提供程序。
大多數以太坊支持的瀏覽器(如:MetaMask小狐狸錢包)都有一個符合EIP-1193的提供程序,位於window.ethereum
對於 web3.js,檢查 Web3.givenProvider
如果此屬性是null(空),你應該連接到遠程/本地節點。
現在可以使用該web3對象了。
web3.js 官方網站
https://web3js.readthedocs.io/en/v1.8.0/