该项目旨在增强 Geth 的 JSON-RPC API,通过实现新的trace_*
命名空间,特别是trace_filter
,引入eth_getTransactionBySenderAndNonce
来增强交易查询功能,标准化错误代码,并使用flood进行基准测试和优化,从而提高互操作性和性能。项目将涉及数据库索引的创建,性能优化,以及与其他以太坊客户端的合作。
增强 Geth 中的 JSON-RPC 功能,以实现更好的跟踪、交易查询以及跨客户端的标准化。
当前 Geth 中 JSON-RPC 的实现缺乏某些高级功能和标准化。本项目旨在解决以下问题:
trace_*
命名空间,特别是 trace_filter
,这需要在数据库中添加一个额外的索引。此功能对于需要详细交易跟踪的开发人员和分析师至关重要。eth_getTransactionBySenderAndNonce
以增强交易查询功能,该功能可用于按 EOA 地址及其 nonce(随机数) 查询交易。本项目建议通过实现新功能、标准化错误代码和优化现有方法来显着增强 Geth 中的 JSON-RPC API。以下是每个组件的详细描述:
trace_*
命名空间实现trace_*
命名空间提供交易的详细执行跟踪,这对于开发人员、审计人员和分析师调试和分析智能合约至关重要。 当前的 Geth 实现包括跟踪器的基本构建块,但缺乏其他客户端(例如:erigon, reth)中可用的全面 trace_filter
、trace_block
方法。
实现 trace_*
涉及创建一个额外的索引和额外的存储空间,用于将原始数据存储在 Geth 数据库中,以有效地支持过滤操作。由于跟踪结果是与区块生成实时生成的,因此我们需要存储不同跟踪器的所有结果(例如:callTracer、prestateTracer...),并且应优化存储以处理大量数据。我们还需要考虑链重组。
trace_filter
: 此方法将允许用户根据诸如 from/to 地址之类的条件来过滤跟踪。trace_block
: 此方法将允许用户获取区块的跟踪。eth_getTransactionBySenderAndNonce
eth_getTransactionBySenderAndNonce
方法将允许用户根据发送者的地址和 nonce(随机数) 检索交易。此功能对于需要有效管理和跟踪用户交易的钱包和应用程序特别有用。
我们可以首先在交易池中查找 sender+nonce 作为短路,如果未找到,则我们可以在数据库中查找,在数据库端,我们可以构建一个诸如 sender+nonce -> txhash
的索引,该索引可以与 tx-lookup 或新区块的挖掘一起更新。
目前,不同的以太坊客户端在大多数情况下对成功结果返回相同的响应,但对于类似错误情况可能会返回不同的错误代码和消息,从而导致为构建跨客户端应用程序的开发人员带来不一致和混乱。本项目旨在跨 JSON-RPC 客户端标准化错误代码。
让我们协作并维护 execution-apis 以包含大部分错误代码。
这是可选的,如果我们有足够的时间,我们可以采用它。
性能对于 JSON-RPC API 至关重要,尤其是在它们被与以太坊网络交互的应用程序广泛使用时。 本项目将对 Geth 的 JSON-RPC 方法进行基准测试,并对其进行优化以获得更好的性能。
trace_*
命名空间trace_filter
。debug_trace
功能兼容。eth_getTransactionBySenderAndNonce
第 1 个月:
trace_*
命名空间中实现 trace_filter
,trace_block
。eth_getTransactionBySenderAndNonce
。第 2 个月:
eth_getTransactionBySenderAndNonce
的实现。第 3 个月:
第 4 个月:
第 5 个月:
trace_filter
,而不会显着影响性能。本项目的成功将通过以下方式定义:
trace_*
命名空间中的trace_filter
,trace_block
。eth_getTransactionBySenderAndNonce
方法的可用性。trace
Module · OpenEthereum Documentation
- 原文链接: github.com/eth-protocol-...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!