簡體   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