引擎 API -- EIP-7805

EIP-7805 引入了 Engine API 的修改,扩展了 engine_newPayloadV5 方法的参数列表,新增了 engine_getInclusionListV1engine_updatePayloadWithInclusionListV1 方法,并更新了先前版本的方法,以支持 FOCIL (Fork Choice Inclusion List) 有效负载的处理。

Engine API -- EIP-7805

EIP-7805 中引入的 Engine API 变更。

本规范基于并扩展了 Engine API - Osaka 规范。

目录

<!-- START doctoc generated TOC please keep comment here to allow auto update --> <!-- 不要编辑本节,请重新运行 doctoc 以更新 -->

<!-- END doctoc generated TOC please keep comment here to allow auto update -->

常量

名称
MAX_BYTES_PER_INCLUSION_LIST uint64(8192) = 2**13

方法

engine_newPayloadV5

方法参数列表通过 inclusionList 扩展。

请求
  • 方法: engine_newPayloadV5
  • 参数:
    1. executionPayload: ExecutionPayloadV3.
    2. expectedBlobVersionedHashes: Array of DATA, 32 字节 - 用于验证的预期 blob versioned hashes 数组。
    3. parentBeaconBlockRoot: DATA, 32 字节 - 父信标块的根。
    4. executionRequests: Array of DATA - 执行层触发的请求列表。每个列表元素都是一个 requests 字节数组,由 EIP-7685 定义。每个元素的第一个字节是 request_type,其余字节是 request_data。列表的元素必须request_type 升序排列。具有空 request_data 的元素必须从列表中排除。
    5. inclusionList: Array of DATA - 交易对象数组,每个对象是一个字节列表 (DATA),表示 EIP-2718 中定义的 TransactionType || TransactionPayloadLegacyTransaction
响应

请参阅 engine_newPayloadV4 的响应。

规范

此方法遵循与 engine_newPayloadV4 相同的规范,但有以下更改:

  1. 如果 inclusionList 中有任何交易不属于 executionPayload,即使它们可以附加到 executionPayload 的末尾,客户端软件必须返回 {status: INVALID_INCLUSION_LIST, latestValidHash: null, validationError: null}

engine_getInclusionListV1

请求
  • 方法: engine_getInclusionListV1
  • 参数:
    1. parentHash: DATA, 32 字节 - 应该在其上构建返回的 inclusion list 的父哈希。
  • 超时: 1s
响应
  • 结果: inclusionList: Array of DATA - 交易对象数组,每个对象是一个字节列表 (DATA),表示 EIP-2718 中定义的 TransactionType || TransactionPayloadLegacyTransaction
  • 错误: 在获取 inclusion list 时发生异常的情况下设置的代码和消息。
规范
  1. 客户端软件必须根据 mempool 的本地视图和配置规范提供 inclusion list 的交易列表。

  2. 客户端软件必须提供一个上限为 MAX_BYTES_PER_INCLUSION_LIST 的交易列表。

  3. 客户端软件不得在提供的列表中包含任何 blob transaction

engine_updatePayloadWithInclusionListV1

请求
  • 方法: engine_updatePayloadWithInclusionListV1
  • 参数:
    1. payloadId: DATA, 8 字节 - payload 构建过程的标识符。
    2. inclusionList: inclusionList: Array of DATA - 交易对象数组,每个对象是一个字节列表 (DATA),表示 EIP-2718 中定义的 TransactionType || TransactionPayloadLegacyTransaction
  • 超时: 1s
响应
  • 结果: payloadId: DATA|null, 8 字节 - payload 构建过程的标识符或 null
  • 错误: 在获取 inclusion list 时发生异常的情况下设置的代码和消息。
规范
  1. 给定 payloadId,客户端软件必须使用 inclusionList 更新 payload 构建过程。除非交易在 payload 末尾包含失败,否则必须是 execution payload 的一部分。

  2. 客户端软件在更新 execution payload 时应该忽略 inclusionList 中存在的任何 blob transactions

更新先前分叉的方法

本文档定义了 Prague API 应如何处理 FOCIL payload。

对于以下方法:

必须添加验证:

  1. 如果 payload 或 payloadAttributes 的 timestamp 大于或等于 FOCIL 激活时间戳,则客户端软件必须返回 -38005: Unsupported fork 错误。
  • 原文链接: github.com/jihoonsong/ex...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
jihoonsong
jihoonsong
江湖只有他的大名,没有他的介绍。