You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用web3.py等待交易确认且避免多余等待耗时

Web3.py 等待交易确认无额外损耗实现方案

直接使用web3.py内置的交易回执等待方法即可,不需要自定义固定时长的sleep逻辑,该方法会在交易完成确认的第一时间返回结果,几乎无额外等待损耗。

实现代码

修改你的交易发送逻辑,在拿到交易哈希后调用等待方法即可:

sign_txn = web3.eth.account.signTransaction(token_tx, private_key=private_key)
tx_hash = web3.eth.sendRawTransaction(sign_txn.rawTransaction)

# 等待交易上链确认
tx_receipt = web3.eth.wait_for_transaction_receipt(
    transaction_hash=tx_hash,
    timeout=120,  # 最长等待超时时间,单位秒,可根据链的出块速度调整
    poll_latency=0.1  # 状态查询间隔,单位秒,0.1秒的间隔几乎感知不到等待延迟
)

# 必须校验交易执行状态,链上打包不代表交易执行成功
if tx_receipt.status != 1:
    raise RuntimeError(f"交易执行失败,哈希: {tx_hash.hex()}")

# 后续业务逻辑直接写在此处,交易确认完成后会立刻执行到这一步

参数说明

  • timeout:超过该时长交易还未被打包则抛出超时异常,以太坊主网可设为180,BSC、Polygon等快链设为60即可
  • poll_latency:轮询链上状态的间隔,设为0.1时,交易确认到脚本继续执行的延迟不超过100毫秒,不会产生可感知的等待损耗
  • 如果需要多区块确认(比如等6个区块确认保证交易最终性),在拿到交易回执后,监听最新区块高度,当最新区块号 >= tx_receipt.blockNumber + 目标确认数 - 1时即可判定确认完成,同样没有额外等待。

注意事项

禁止使用固定时长的time.sleep()逻辑等待交易,这类逻辑要么等待时长不足导致后续逻辑执行时交易还未确认,要么等待时长远超交易实际确认时间,产生无意义的时间损耗。

内容的提问来源于stack exchange,提问作者Wade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 00:45:49