Suisu -- 执行层 REST

该项目旨在解决当前以太坊Execution Layer的JSON RPC API (JRA) 标准化不足的问题,通过创建一个REST API规范和一个JRA包装器的参考实现来改进。项目包括迭代JRA,发现Execution客户端的特性,制定REST API规范,并提供通用Execution客户端基础设施访问。最终目标是实现可预测和标准化的REST API,并提供相关的测试套件和EIP。

Suisu -- 执行 REST

JSON-RPC 也能做到,对吧。

主副本位于:https://github.com/tsujp/suisu/blob/master/epf/project_proposal.md

动机

当前的 JSON RPC API (以下简称:JRA)受到不完善的标准化和每个执行节点的临时扩展的影响,导致难以使用且紧密耦合的应用程序。如果 Ethereum 的目标是一个分布式且与实现无关的协议,那么当前的 JRA 虽然取得了巨大的进步,但目前未能满足这一要求。

对 JRA 进行进一步的标准化改进(例如 EIP-1474)可能 会缓解这些问题,但鉴于 Beacon 链实现了 REST API,这代表了一个很好的机会,可以通过 REST API 规范和参考 JRA 包装器实现来解决当前执行 JRA 的不足。这两个组件将(提议)扩展执行 API 协议。

项目描述

  1. 执行层的 REST API 规范。
  2. 通过包装当前的 JRA 来实现(1)的参考实现。

规范

该项目需要 3 个主要领域:

  1. JRA 的迭代,以及任何执行客户端特定的怪癖的发现;导致...
  2. REST API 规范和针对参考实现的自我测试;这需要...
  3. 一般执行客户端基础设施访问。

该项目的性质要求这 3 个领域同时且迭代地进行,因此需要 在这些项目领域之间进行仔细的组织和同步。这可以被认为是一个循环,项目时间线包括尽可能多的循环迭代。

在主项目循环之前,将对 JRA 的各个领域进行 T 恤尺寸估算,并对要转换为 REST 规范的方法进行大致的攻击顺序。

一般循环过程是:

  1. 选择 JRA 的子集来开发 REST 规范。最初,这将是最简单的明确选择,直到所有 3 个领域都建立起来,届时将根据预先的估计计划进行临时选择。

  2. 为(1)开发 REST 规范,并特别记下 JRA 或 REST 规范中任何预测的未来后果和/或受影响的项目。

  3. 为(2)实现参考 API 表面;为此选择的堆栈是 Varnish 的 VCL 配置,如果需要(或代替),则使用 Zig 编写的 API。

  4. 使用执行客户端后端为(3)实现测试,即调用在测试网和主网上运行的实际执行客户端(任何事务性端点都将仅限于测试网)。

  5. 最初,规范将与参考实现(计划用于 Varnish 的 VCL 配置)同步开发,因为进入 REST 规范的第一个 JRA 方法将是最简单的。

  6. 通过在 REST 中指定并包装更简单的 JRA 方法,将启动一个自动测试套件,以确认参考实现满足其自身规范的能力。这将包括来自生态系统提供商、测试网等的各种执行客户端后端,以针对其进行 JRA 调用。

路线图

T 恤尺寸

第 1 周和第 2 周涉及试验包装复杂性以及可以实现的 REST 端点,包括任何更改。这有助于制定一个粗略的 地图,说明要处理的内容以及处理的顺序。

测试工具

第 3 周专门用于开发测试工具,因为开发的主要手段是迭代地实现所选的 REST 规范并立即且持续地测试该实现;因此需要一个测试工具。

循环

对于项目的其余部分:

  1. 选择要实现的 REST 规范的某些部分(在 T 恤尺寸调整期间获知)。
  2. 实施。
  3. 将验证测试添加到测试工具。
  4. 返回(1)。

可能的挑战

  • 截至本项目提案,每个执行客户端的 JRA 差异的完整列表尚不清楚(对于项目参与者)。一般 差异是已知的,但所有 差异都不是,并且此过程将需要在规范开发过程中不断发现。
  • 当尝试协调执行客户端与 JRA 规范的偏差时(如果存在规范),会出现抽象泄漏和/或抽象反转。
  • 时间。该项目包含最大数量的反馈循环;虽然通常任何项目都希望具有此属性,但由于 REST API 规范的同步开发以及该规范的参考实现本身包装了当前不完善的 JRA 实现,因此这里是必需的。提前预测所有变体和相关解决方案在一般情况下是不切实际的,因此进步来自迭代,但是如果环境非常(注意:怀疑但可能)不均匀,这可能会导致参考实现花费太多时间来实现(例如,要考虑的情况太多)恰恰是因为 它必须包装现有的不完善的 API。
  • Fuzzing 可能有助于识别任何未知的非均匀性,但项目参与者没有 Fuzzing 经验,因此,如果/当需要时,将必须在没有该项目其他领域获得的准备的情况下应对任何挑战。

项目目标

  • 可预测且完全标准化的 REST API。请注意,这并不意味着 100% 包装 JRA;这意味着存在的内容的行为符合其标准并且可以安全使用。可以根据需要/想要随着时间的推移开发进一步的 JRA 覆盖范围
  • 测试套件覆盖了指定的和实现的 REST API 规范的所有(合理地)已知情况。
  • 合理的性能包装器实现。
  • 包含 REST 规范的 EIP。

合作者

研究员

可能 @Amit0617。

导师

@lightclient

资源

GitHub 仓库

词源
  • 수행(하다): (n. (v.)) 执行一项任务或执行一项任务。
  • 쉬다: (n.) 休息。

组合并缩写两个词(不注意语法)并进行罗马化以方便拼写,得到:쉬수 (Suisu)。

  • 原文链接: github.com/eth-protocol-...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

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