-1

我正在做一个简单的请求,该请求使用来自多边形扫描的随机哈希从区块链返回确认号。

我遇到的问题是 while 循环,它不断循环使用相同的确认号,而不是更新区块链上表示的真实数字。

例如,当哈希确认为 100 时,它将继续打印 100,而区块链确认在 polyscan 上上升。

我希望 ctc 变量在 while 循环中更新为真正的确认。

from web3 import Web3
web3 = Web3(Web3.HTTPProvider(<APIKEY>))


check_txn_confirmations = web3.eth.blockNumber - web3.eth.getTransaction('0x7a0b596a664e5b56091b775d294d374364db00cab531b8dc18c70932896ccf44ec').blockNumber

ctc = check_txn_confirmations

    while ctc < 260:
        print("confirmations are:", ctc)
        time.sleep(10)
        print("waiting 10seconds..")
    else:
        print("confirmations are larger")
4

1 回答 1

2

这是你想做的,也是你不应该做的:

while True:

    check_txn_confirmations = web3.eth.blockNumber - web3.eth.getTransaction('0x7a0b596a664e5b56091b775d294d374364db00cab531b8dc18c70932896ccf44ec').blockNumber
    ctc = check_txn_confirmations

    if ctc < 260:
        print("confirmations are:", ctc)
        time.sleep(10)
        print("waiting 10seconds..")
    else:
        print("confirmations are larger")
        break

在 while 循环中发送请求存在许多问题。

大多数 API 都有请求限制,并且请求限制通常与按使用类型的协议付费有关。如果/当您的程序意外卡在无限 while 循环中时,您就会遇到问题。您的请求限制达到或您的余额达到 0(夸大了,但您明白了)。

相反,我建议研究回调和异步。但对于简单的应用程序,回调就足够了。

于 2021-07-08T05:52:42.320 回答