Web3js

在沒有 MetaMask 的情況下使用 web3.js

  • September 8, 2021

我有

<script src="https://cdnjs.cloudflare.com/ajax/libs/web3/1.2.9/web3.min.js"></script>

如何在沒有 MetaMask 的瀏覽器上使用這個 web3.js(用於只讀乙太坊查詢):

const web3 = new Web3(window.web3.currentProvider);

失敗,因為window.web3未定義。

我想,我可以Web3通過手動指定提供者來進行初始化。但是如何決定將什麼作為參數傳遞給new Web3(對於 mainnet 和 rinkeby)?

我需要使用自己的 Infura 帳戶嗎?也許我可以通過 MetaMask 的帳戶(合法嗎?主網和 rinkeby 的 MetaMask 提供程序 URL 是什麼)?

  1. 請注意,新的 API 可用:
// Legacy dapp browsers...
if (window.web3 !== undefined) {
   const provider = new Web3.providers.HttpProvider(window.web3.currentProvider);
   const web3 = new Web3(provider);
}

// Modern dapp browsers...
if (window.ethereum !== undefined) {
 const provider = new Web3.providers.HttpProvider(window.ethereum);
 const web3 = new Web3(provider);
}

更多細節:


  1. 在瀏覽器中,最好不要使用自己的帳戶,而只使用公共的 Infura API。
  2. 是的,您可以通過 MetaMask 的帳戶。
  3. 監聽chainChanged事件以處理鏈更改:https ://docs.metamask.io/guide/ethereum-provider.html#using-the-provider

你也可以使用infura

檢查此頁面

並使用此程式碼:

web3 = new Web3(new Web3.providers.HttpProvider("https://ropsten.infura.io/v3/3c6/*your own Id from infura site after creating project*/753")); 

引用自:https://ethereum.stackexchange.com/questions/85076