跳转到主要内容

evm-trace:以太坊虚拟机事务跟踪工具

项目描述

快速入门

以太坊虚拟机事务跟踪工具

依赖项

安装

通过 pip

您可以通过 pip 安装最新版本

pip install evm-trace

通过 setuptools

您可以克隆存储库并使用 setuptools 获取最新版本

git clone https://github.com/ApeWorX/evm-trace.git
cd evm-trace
python3 setup.py install

快速使用

Geth 风格跟踪

如果您使用的是支持 debug_traceTransaction RPC 的节点,您可以使用 web3.py 获取跟踪帧

from web3 import HTTPProvider, Web3
from evm_trace import TraceFrame

web3 = Web3(HTTPProvider("https://path.to.my.node"))
txn_hash = "0x..."
struct_logs = web3.manager.request_blocking("debug_traceTransaction", [txn_hash]).structLogs
for item in struct_logs:
    frame = TraceFrame.model_validate(item)

如果您想获取调用树节点,您可以这样做

from evm_trace import CallType, get_calltree_from_geth_trace

root_node_kwargs = {
    "gas_cost": 10000000,
    "gas_limit": 10000000000,
    "address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
    "calldata": "0x00",
    "value": 1000,
    "call_type": CallType.CALL,
}

# Where `trace` is a `TraceFrame` (see example above)
calltree = get_calltree_from_geth_trace(trace, **root_node_kwargs)

Parity 风格跟踪

如果您正在使用支持 trace_transaction RPC 的节点,您可以使用 web3.py 获取跟踪对象

from evm_trace import CallType, ParityTraceList

raw_trace_list = web3.manager.request_blocking("trace_transaction", [txn_hash])
trace_list = ParityTraceList.model_validate(raw_trace_list)

要创建调用树节点,您可以这样做

from evm_trace import get_calltree_from_parity_trace

tree = get_calltree_from_parity_trace(trace_list)

燃气报告

如果您正在使用支持创建跟踪的节点,您可以获取燃气报告。

from evm_trace.gas import get_gas_report

# see examples above for creating a calltree
calltree = get_calltree_from_geth_trace(trace, **root_node_kwargs)

gas_report = get_gas_report(calltree)

对于更定制的报告,请使用 merge_reports 方法将报告列表合并为单个报告。传递两个或多个 Dict[Any, Dict[Any, List[int]]] 以合并报告,其中 List[int] 是使用的燃气。

相应地自定义 Any 的值

  1. 第一个 Any 代表地址的字节。
  2. 第二个 Any 代表方法选择器。

例如,您可以用代币名称替换地址,或者用签名调用字符串替换选择器字节。

如下导入方法

from evm_trace.gas import merge_reports

开发

该项目正在开发中,应被视为测试版。事物可能尚未处于最终状态,可能会发生破坏性更改。欢迎提出评论、问题、批评和拉取请求。

许可协议

该项目采用 Apache 2.0 许可。

项目详情


下载文件

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

源分布

evm-trace-0.2.3.tar.gz (771.9 kB 查看散列)

上传于 源代码

构建版本

evm_trace-0.2.3-py3-none-any.whl (20.9 kB 查看哈希值)

上传于 Python 3

支持

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