我试图遍历块并获取这样的交易信息:
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并在1540处卡住。
同样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调用是否有限制?如果是这样,怎么能超越呢?
答案 0 :(得分:0)
一些功能与区块链交互,这些需要一个节点。
除非您正在运行一个节点并配置 web3 来使用它,否则它可能会默认使用 infura.io。
Infura 是一项付费服务,它们允许您调用一些免费的 API 来查询区块链,然后再注册、获取密钥并在需要时升级您的计划。