【发布时间】:2021-12-28 22:37:55
【问题描述】:
我正在尝试获取智能合约变量的更新值。我这样做的方式是有一个 while 循环不断检查这个变量的值。
while(true) {
const value = await contract.readVariable().call();
}
这工作得很好,但直到下一个开采的区块,我才得到结果,这大约需要 15 秒。我想知道如何在不等待下一个块的情况下第二次更新结果。这是我测试的确切结果。
我检测到12/28/2021, 3:02:42 block number 13895772 处的值已更改,但新值是在块13895771 at 08:02:26 PM +UTC 中挖掘的。如您所见,从我拿到它到实际开采它之间有 16 秒的延迟。
【问题讨论】:
-
16s 似乎是从挖矿到确认并通过网络共享它的正常时间,但我对 web3 的参与并不多
-
@PLASMAchicken 如果一个区块被挖出,这算不算在网络上共享?
-
矿工获取(一些)未决交易,验证它们,将它们放在一个块中,在块上运行算法,如果结果是好的,它是“挖掘的”,然后他们发送它到其他节点/矿工进行验证,然后正式完成
-
@PLASMAchicken 这是否意味着我获得更新值所需的时间是预期的,我看到的是一个完整的块稍后我得到更新的值。
标签: blockchain ethereum web3 web3js