繁体   English   中英

Web3 getPastEvents 返回错误:超出限制

[英]Web3 getPastEvents Returned error: limit exceeded

我正在使用 web3 function getPastEvents并且出现错误:返回错误:超出限制我也更改了 RPC url 但他们发生了同样的错误。 还有其他方法可以获取事件数据吗?

这是我的代码:

const http = require("http");
const cron = require('node-cron');
const { randomBytes } = require("crypto");
const web3 = new Web3("https://bsc-dataseed.binance.org/");
//console.log("Hello This",web3);
//console.log("hello");
const dexABI =contractAbi;
const contract_address = "0xd19EA9d72828444BC7bAE231fBa66F8050e72b1b";
const contract = new web3.eth.Contract(dexABI, contract_address);

async function generateEventQuery(result) {
  console.log(result);
  return ;
}


http
  .createServer((req, res) => {
     web3.eth
      .getBlockNumber()
      .then((d) => {
        let current_block = d;
        console.log(current_block);
       contract
      .getPastEvents({
        fromBlock: Number(23390147),
        toBlock: Number(23390147)+100,
      })
      .then( async(events) => {
      let resu = await generateEventQuery(events);
     
      })
      .catch((e) => {
          console.log("Err",e)
        res.write("Err:" + JSON.stringify(e));
        res.end();
      });
      })
      .catch((e) => e);
    })
  
  
  .listen(8080);

在 function getPastEvents() 中,您必须将第一个参数作为您要获取数据的事件名称。 该名称应与您的合同中的名称相同,并传递到一个字符串中。

实际上,这是一个 RPC 问题。 我将https://bsc-dataseed.binance.org/替换为https://bscrpc.com 现在它工作正常。

公共 RPC URL,如https://bsc-dataseed.binance.org/https://bscrpc.com具有速率限制,以防止人们过度使用它。

测试没问题,但在生产中,您应该使用自己的节点或区块链 API,例如 Infura、Alchemy、QuickNode 或任何其他节点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM