Web3.js API 调用有限制吗?
Posted
技术标签:
【中文标题】Web3.js API 调用有限制吗?【英文标题】:Is there a limitation on Web3.js API calls? 【发布时间】:2017-10-18 14:08:48 【问题描述】:我正在尝试遍历区块并获取他们的交易信息,如下所示:
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】:一些功能与区块链交互,这些需要一个节点。
除非您正在运行一个节点并配置 web3 以使用它,否则它可能默认使用 infura.io。
Infura 是一项付费服务,它们允许您在注册、获取密钥并在需要时升级您的计划之前进行一些免费的 API 调用来查询区块链。
【讨论】:
一般情况下,如果要进行多次调用,在本地运行自己的节点会更便宜、更容易:twitter.com/moo9000/status/1370323189486784513以上是关于Web3.js API 调用有限制吗?的主要内容,如果未能解决你的问题,请参考以下文章
关于web3.js中与交易发送交易签名智能合约函数调用相关api的理解