跳转到主要内容

Ethereum的自动交易机(ATxM)

项目描述

自动交易机 🏧

Tests

一个异步EVM交易重试机。以编程方式排队、广播和重试(加速)交易。交易按先入先出(FIFO)顺序排队和广播。

该机器设计用于在长期运行的过程中使用,如服务器。

Diagram

安装

pip install atxm

使用

from eth_account.local import LocalAccount
from web3 import Web3, HTTPProvider
from atxm import AutomaticTxMachine
from twisted.internet import reactor


account = LocalAccount.from_keyfile('path/to/keyfile', 'password')
w3 = Web3(HTTPProvider("http://localhost:8545"))

transaction = {
    'chainId': 80001,
    'to': '0x1234567890123456789012345678901234567890',
    'nonce': 0,
    'value': 0,
    'gas': 21000,
    'maxFeePerGas': '1',
    'maxPriorityFeePerGas': '1',
}

machine = AutomaticTxMachine(w3=w3)
future_tx = machine.queue_transaction(
    signer=account,
    params=transaction,
    on_broadcast_failure=...,
    on_fault=...,
    on_finalized=...,
    on_insufficient_funds=...,
)

reactor.run()

功能

未来

当事务被排队时,跟踪器返回一个FutureTx实例。可以使用FutureTx实例来跟踪事务的生命周期,并在事务最终确定时检索事务收据。

重试策略

跟踪器支持一个通用的可配置接口用于重试策略(AsynxTxStrategy)。这些策略用于确定何时重试事务以及如何进行重试。它们可以被配置为使用任何类型的自定义上下文,例如燃料预言机。

生命周期钩子

钩子在专门的线程中触发生命周期事件。

  • on_broadcast (可选):当事务被广播时。
  • on_broadcast_failure:当事务广播失败时。
  • on_finalized:当事务最终确定时(成功或回滚)。
  • on_fault:当事务发生错误时。
  • on_insufficient_funds:当与事务关联的账户没有足够的资金时。
容错能力

内部状态被写入文件以帮助从崩溃和重启中恢复。内部缓存LocalAccount实例在内存中,与磁盘I/O结合使用,用于从异步任务重启中恢复。

节流

有三个速率,工作(快速扫描)、空闲(慢速扫描)和睡眠(零活动)。这减少了在没有事务跟踪时资源的使用。当事务被排队时,机器会醒来并开始工作。当所有工作完成后,它会逐渐进入空闲模式,最终进入睡眠状态。

事件循环支持

目前,该机器设计用于与Twisted反应器一起工作。但是,它可以被修改以与任何事件循环一起工作。

项目详情


下载文件

下载适用于您平台的电影。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

atxm-0.5.0.tar.gz(54.7 kB 查看哈希

上传时间

构建分发

atxm-0.5.0-py3-none-any.whl(43.5 kB 查看哈希

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面