使用 metamask 時,我的 Dapp 是否需要單獨的乙太坊提供商?
我正在開發一個 Dapp,它將使用 Metamask 進行使用者互動。
我有兩個相關的問題:
似乎 Metamask 擴展已經附帶了一個注入到瀏覽器中的乙太坊提供程序。我在這一點上是對的嗎?
如果是這種情況,我真的需要一個單獨的乙太坊提供商,例如 ethers.js ( https://docs.ethers.io/ ) 嗎?
Metamask
ethereum
在您的瀏覽器 JS API 中提供對像以與錢包進行互動。有了它,您可以發送交易並與鏈進行互動。見https://docs.metamask.io/guide/https://docs.metamask.io/guide/getting-started.html#basic-considerations
安裝並執行 MetaMask 後,您應該會發現新的瀏覽器選項卡在開發人員控制台中有一個可用的 window.ethereum 對象。這就是您的網站與 MetaMask 互動的方式。
您可以在此處查看該對象的完整 API。請注意,在 2020 年期間,我們將對此 API 進行重大更改,我們建議您參考其文件。
但在某些時候,您將不得不呼叫合約方法並使用 ABI 建構數據,這就是庫將提供幫助的地方:https ://docs.metamask.io/guide/initializing-dapps.html#the-contract-abi
合約 ABI 在乙太坊中,ABI 規範 (opens new window) 是一種以使用者界面可以理解的方式對智能合約界面進行編碼的方法。它是一個描述方法的對像數組,當你將這個和地址輸入合約抽像庫時,這個 ABI 會告訴這些庫要提供哪些方法,以及如何編寫事務來呼叫這些方法。
範例庫包括:
ethers(打開新視窗) web3.js(打開新視窗) Embark(打開新視窗) ethjs(打開新視窗) truffle
否則,您將不得不自己建構數據以將其提供給 Metamask 乙太坊對象。不是很方便。
所以 Metamask 對象就足夠了,但是有一個庫更好。