Web3.js API调用是否有限制?

时间:2017-05-18 16:25:41

标签: ethereum web3js

我试图遍历块并获取这样的交易信息:

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调用是否有限制?如果是这样,怎么能超越呢?

1 个答案:

答案 0 :(得分:0)

一些功能与区块链交互,这些需要一个节点。

除非您正在运行一个节点并配置 web3 来使用它,否则它可能会默认使用 infura.io。

Infura 是一项付费服务​​,它们允许您调用一些免费的 API 来查询区块链,然后再注册、获取密钥并在需要时升级您的计划。