Repolode
ethereum

ethereum/EthLib

Leanで記述された形式検証済みのEthereumプリミティブを提供する、Leanプロジェクト向けの仕様と証明の共通ライブラリです。

スター
83
フォーク
22
未解決の Issue
25
最終コミット
20 時間前

これは何?

EthLibはEthereumの定義とその証明をLeanで提供し、各Leanプロジェクトが独自の実装を保守する代わりに、共通の実装を基盤として利用できるようにします。プロトコルの構成要素として、256-bitワード、Keccak、secp256k1、BLS12-381、KZGなどのハッシュ・署名プリミティブ、RLPやSSZなどのエンコーディング、discv4、discv5、RLPx、gossipsubのパラメーターを含むネットワーク機能、さらにEVMオペコード、precompile、state、transaction、block、Merkle Patricia Trieなどの実行レイヤーの要素を網羅しています。コンセンサスレイヤーの定義には、設定、slotとepoch、committee、fork choiceのモデルが含まれます。

ライブラリはレイヤー構造になっており、各モジュールが自分と同じレイヤーか下位のレイヤーだけをimportするように設計されています。また、実行レイヤーとコンセンサスレイヤーは分離されています。一部のプリミティブはC bindings経由で公開されており、Ethereumクライアントではネイティブ実装ができるまでの暫定手段として、または性能が十分であれば恒久的な実装として利用できます。

ビルドにはelanとMathlibが必要です。`lake build`でプリミティブをコンパイルし、すべての証明を検証できます。Python bindingsを実行するためのテストスイートも別途用意されています。

主な機能

  • 01256-bitのEVMワード、暗号学的ハッシュ、secp256k1、BLS、KZGなどの署名方式を網羅しています。
  • 02実行レイヤーとコンセンサスレイヤーで使われるRLPとSSZのシリアライズを含みます。
  • 03discv4、discv5、RLPx、gossipsubのパラメーターに関するネットワーク定義を提供します。
  • 04EVMオペコード、18種類すべてのprecompile、state、transaction、forkごとのblockをモデル化しています。
  • 05一部のプリミティブを、Ethereumクライアントから利用できるC bindings経由で公開しています。

ユースケース

  • 独自実装の代わりに、検証済みのEthereum仕様を必要とするLeanプロジェクトの構築。
  • ネイティブ実装ができるまでの暫定手段として、Ethereumクライアントでbindingsを利用する。
  • 形式定義に照らして、EVM precompileやtransactionルールの挙動を検証する。
  • 定理証明支援系でEthereumの実行プロトコルとコンセンサスプロトコルがどのように仕様化されているかを学ぶ。

クイックスタート

  1. 1

    README に記載されている公式インストールスクリプトを使って、Lean のツールチェーンマネージャー elan をインストールします

  2. 2

    キャッシュから Mathlib の依存関係をダウンロードします

    lake exe cache get
  3. 3

    プリミティブをコンパイルし、すべての証明を検証します

    lake build

使う前に知っておきたいこと

  • ビルドには elan 経由の Lean ツールチェーンと Mathlib の依存関係が必要です。
  • Python バインディングを使用するには、uv でネイティブ拡張をビルドする必要があります。

トピック

よくある質問

EthLib とは?
Leanで記述された形式検証済みのEthereumプリミティブを提供する、Leanプロジェクト向けの仕様と証明の共通ライブラリです。 EthLibはEthereumの定義とその証明をLeanで提供し、各Leanプロジェクトが独自の実装を保守する代わりに、共通の実装を基盤として利用できるようにします。プロトコルの構成要素として、256-bitワード、Keccak、secp256k1、BLS12-381、KZGなどのハッシュ・署名プリミティブ、RLPやSSZなどのエンコーディング、discv4、discv5、RLPx、gossipsubのパラメーターを含むネットワーク機能、さらにEVMオペコード、precompile、state、transaction、block、Merkle Patricia Trieなどの実行レイヤーの要素を網羅しています。コンセンサスレイヤーの定義には、設定、slotとepoch、committee、fork choiceのモデルが含まれます。
EthLib は無料で使えますか?ライセンスは?
EthLib は CC0-1.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
EthLib は今もメンテナンスされていますか?
活発にメンテナンス中。EthLib の最終コミットは 2026年11月6日 です。
EthLib は何に使えますか?
独自実装の代わりに、検証済みのEthereum仕様を必要とするLeanプロジェクトの構築。 ネイティブ実装ができるまでの暫定手段として、Ethereumクライアントでbindingsを利用する。 形式定義に照らして、EVM precompileやtransactionルールの挙動を検証する。 定理証明支援系でEthereumの実行プロトコルとコンセンサスプロトコルがどのように仕様化されているかを学ぶ。
EthLib のインストール方法は?
README に記載されている公式インストールスクリプトを使って、Lean のツールチェーンマネージャー elan をインストールします キャッシュから Mathlib の依存関係をダウンロードします: lake exe cache get プリミティブをコンパイルし、すべての証明を検証します: lake build
EthLib はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/ethereum/EthLib

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト