Repolode
ethereum

ethereum/EthLib

用 Lean 编写、经过形式化验证的以太坊基础组件库,供 Lean 项目共享复用。

Star
83
Fork
22
未关闭 Issue
25
最近提交
24小时前

这是什么?

EthLib 用 Lean 提供以太坊的定义及对应证明,让 Lean 项目可以基于同一套实现开发,而不必各自维护。其覆盖的基础组件包括 256 位 EVM 字、Keccak、secp256k1、BLS12-381、KZG 等哈希与签名原语,RLP 和 SSZ 等编码,discv4、discv5、RLPx 及 gossipsub 参数等网络模块,以及 EVM 操作码、预编译合约、状态、交易、区块和 Merkle Patricia Trie 等执行层组件。共识层部分包含配置、slot 与 epoch、委员会以及 fork choice 模型。

库按层次组织,模块只能依赖本层或更底层的模块,执行层与共识层彼此独立。部分原语通过 C 绑定导出,以太坊客户端可在原生实现出现之前临时使用,若性能足够也可长期使用。

构建需要 elan 和 Mathlib,运行 `lake build` 即可编译所有原语并检查全部证明。另有独立的测试套件用于验证 Python 绑定。

核心功能

  • 01涵盖 256 位 EVM 字、哈希函数,以及 secp256k1、BLS、KZG 等签名与承诺方案。
  • 02包含执行层与共识层使用的 RLP 和 SSZ 编码。
  • 03提供 discv4、discv5、RLPx 及 gossipsub 参数等网络层定义。
  • 04按分叉划分建模 EVM 操作码、全部 18 个预编译合约、状态、交易和区块。
  • 05部分原语通过 C 绑定导出,可供以太坊客户端调用。

适用场景

  • 在 Lean 项目中直接复用经过验证的以太坊规范,而无需自行实现。
  • 以太坊客户端在原生实现完成前,临时通过绑定调用这些原语。
  • 依据形式化定义核对 EVM 预编译合约或交易规则的行为。
  • 研究如何用定理证明器描述以太坊执行层与共识层协议。

快速上手

  1. 1

    使用 README 中的官方安装脚本安装 elan(Lean 工具链管理器)

  2. 2

    从缓存下载 Mathlib 依赖

    lake exe cache get
  3. 3

    编译基本组件并检查所有证明

    lake build

使用前须知

  • 构建需要通过 elan 安装 Lean 工具链并下载 Mathlib 依赖。
  • 使用 Python 绑定需要通过 uv 构建原生扩展。

标签

常见问题

EthLib 是什么?
用 Lean 编写、经过形式化验证的以太坊基础组件库,供 Lean 项目共享复用。 EthLib 用 Lean 提供以太坊的定义及对应证明,让 Lean 项目可以基于同一套实现开发,而不必各自维护。其覆盖的基础组件包括 256 位 EVM 字、Keccak、secp256k1、BLS12-381、KZG 等哈希与签名原语,RLP 和 SSZ 等编码,discv4、discv5、RLPx 及 gossipsub 参数等网络模块,以及 EVM 操作码、预编译合约、状态、交易、区块和 Merkle Patricia Trie 等执行层组件。共识层部分包含配置、slot 与 epoch、委员会以及 fork choice 模型。
EthLib 可以免费使用吗?用的什么许可证?
EthLib 以 CC0-1.0 许可证开源。用于商业产品前,请先确认许可证条款。
EthLib 还在维护吗?
活跃维护中。EthLib 最近一次提交是在 2026年11月6日。
EthLib 适合用来做什么?
在 Lean 项目中直接复用经过验证的以太坊规范,而无需自行实现。 以太坊客户端在原生实现完成前,临时通过绑定调用这些原语。 依据形式化定义核对 EVM 预编译合约或交易规则的行为。 研究如何用定理证明器描述以太坊执行层与共识层协议。
EthLib 怎么安装和运行?
使用 README 中的官方安装脚本安装 elan(Lean 工具链管理器) 从缓存下载 Mathlib 依赖: lake exe cache get 编译基本组件并检查所有证明: lake build
在哪里获取 EthLib?
源代码和安装说明在 GitHub 上:https://github.com/ethereum/EthLib

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目