我正在尝试遍历这些块并获取它们的事务信息,如下所示:
var endOfLoop = app.web3.eth.blockNumber;
var latestBlockNumberInDb = 1;
for (var i = latestBlockNumberInDb; i <= endOfLoop; i++) {
var block = app.web3.eth.getBlock(i, true);
console.log(i);
if (block.transactions.length) {
/*TODO*/
}
else {
/*TODO*/
}
}问题是我正确地获得了525-545块,然后,app.web3.eth.getBlock(i)调用阻塞了执行。循环卡住了。可能使进程出错的不是传入的块,因为当我从块1000开始循环时,它会正确地获取块1000 - 1540,并在154时阻塞。
另外,app.web3.eth.blockNumber大约是300万,无论如何,问题不是关于终止循环。
有趣的是,循环上的迭代计数并不稳定。它总是在525-545之间变化。
我试图在请求之间设置延迟,但也不起作用。
同样,当我将API调用加倍时,如下所示:
var block = app.web3.eth.getBlock(i, true);
block = app.web3.eth.getBlock(i, true);循环迭代大约270次。
API调用有限制吗?如果是这样的话,它如何被超越?
发布于 2021-08-08 05:49:49
一些功能与区块链交互,这些功能需要一个节点。
除非您正在运行一个节点并将web3配置为使用它,否则默认情况下它可能会使用infura.io。
Infura是一项付费服务,他们允许你在注册、获取密钥和根据需要升级计划之前,通过一些免费的API调用来查询区块链。
https://stackoverflow.com/questions/44053200
复制相似问题