如何修复 MetaMask 无法获取错误?

问题描述 投票:0回答:3

我调用了contract.methods.ownerOf 2500次,然后我得到了MetaMask - RPC错误:无法获取。但我调用该方法大约200次,然后就没有错误了。我该如何修复该错误? (ownerOf是etherscan合约接口)

这是我的代码。

export async function list() {
  const MAX_TOKEN_ID = 2500;
  const web3 = new Web3(Web3.givenProvider ||'http://localhost:8080');
  const contract = new web3.eth.Contract(ERC721ABI as AbiItem[], CONTRACT);
  const list = new Set<number>();
  let result: object;
  for (let tokenId = 1; tokenId <= MAX_TOKEN_ID; tokenId++) {
    const address = await contract.methods.ownerOf(tokenId).call();
    list.add(address);
  }
  result = Array.from(list).map((item) => ({address: item}));
  return result;
}

以及我的错误

javascript reactjs ethereum web3js metamask
3个回答
1
投票

要发出大量 JSON-RPC 请求,您需要 托管自己的节点或购买 作为节点即服务

RPC 请求不是免费的,必须有人付费。如果您不自己付钱,那么为您服务的任何人都有权切断您的联系。


0
投票

您的 MetaMask 可能仅在当前站点上启用?因此,页面访问设置为单击时运行

这种情况的一种解决方案是启用它始终在所有站点上运行

或者在扩展程序的

站点访问
中添加https://proxy.metafi.codefi.network/*在这里解决了。


0
投票

在扩展设置上选择

Site access: On all sites
然后它就可以工作了

© www.soinside.com 2019 - 2024. All rights reserved.