Ethereum的自动交易机(ATxM)
项目描述
自动交易机 🏧
一个异步EVM交易重试机。以编程方式排队、广播和重试(加速)交易。交易按先入先出(FIFO)顺序排队和广播。
该机器设计用于在长期运行的过程中使用,如服务器。
安装
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 查看哈希)
关闭
atxm-0.5.0.tar.gz的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7605ab9d2d56b9326511fc4e46fd543ce1369a3d0eb7ec906219de225cb7ceae |
|
MD5 | d293f5b5c08ddcb3c67f26d3d5bc4338 |
|
BLAKE2b-256 | 3314b242831de31709d03994c51994a984b01fe958d45d893915713a34dce8b6 |
关闭
atxm-0.5.0-py3-none-any.whl的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9af8663fe13e2b86d7956c1c8aa485b640bc5c08019a6b7090cfb7c6ac34acc5 |
|
MD5 | e1ad9e91f2e7d433eeffa005fa9c617e |
|
BLAKE2b-256 | 2af97d5365b5b1da294a7004db9d6babf745ffd0aadeec9bbd892dc730d4e173 |