Skip to content

Leviathanをノード化 #78

Description

@nezu511

[Phase 1] ABCIサーバーのモック構築とCometBFT通信の開通

Objective (目的)
CometBFTノードとLeviathan(Rust)をTCP/Socketで接続し、ABCI(Application Blockchain Interface)プロトコル経由でブロック生成のシグナルを受信できる「空箱の土管」を構築する。

Tasks (タスク)

  • tendermint-abci (または rs-abci) クレートを依存関係に追加する。
  • ABCIアプリケーションの必須トレイト(info, check_tx, finalize_block, commit)を実装したモック構造体を作成する。
  • 各メソッドが呼び出された際に、引数の中身を標準出力(tracing / log)にダンプする処理を記述する。
  • ローカル環境でCometBFTのシングルノードを起動し、作成したRustのABCIサーバーと接続させる(ポート26658等)。

Acceptance Criteria (受け入れ条件)

  • ローカルのCometBFTがブロック生成を開始し、Rust側のコンソールに FinalizeBlock リクエストのログが定期的に流れること。

[Phase 2] Leviathan実行エンジンΠ関数のマウント

Objective (目的)
ABCIで受信したトランザクションのバイト列をパースし、LeviathanのEVMコアに流し込んでトランザクションを実行($\Pi$)させる。DBへの永続化は行わず、オンメモリでの検証に留める。

Tasks (タスク)

  • finalize_block で受信した生のトランザクションデータ(バイト列)を、Ethereumのトランザクションフォーマットにデコードする処理を実装。
  • デコードしたトランザクションを、Leviathanのメイン実行ループ(EVM::run)にルーティングする。
  • 実行中の状態変化(残高変更、コントラクトのストレージ変更)を、オンメモリの Cache に書き込む。
  • カスタムプレコンパイル(RSA、ZK検証)が正常に呼び出され、ガス計算が正しく行われることを確認する。

Acceptance Criteria (受け入れ条件)

  • CometBFT経由で送信したトランザクション(Ethereum互換フォーマット)が、Leviathan上でRevertされることなく成功(Success)のステータスを返すこと。

[Phase 3] 既存ライブラリを利用したステート管理Φ関数とAppHashの返却

Objective (目的)
Leviathanのオンメモリ実行結果(ジャーナル)を、MemoryDBEthTrie などの既存ライブラリを活用してMerkle Patricia Trie (MPT) にコミットし、最終的なStateRoot(Φ)をCometBFTに返却して状態を確証する。

Tasks (タスク)

  • finalize_block 完了後、Leviathanの Cache に溜まった変更差分を抽出する。
  • 抽出した差分を、既存の EthTrie 実装(バックエンドは MemoryDB 等を使用)に適用し、MPTを更新する。
  • 更新後のMPTから、32バイトのStateRoot(ハッシュ値)を算出する。
  • ABCIの commit メソッドの戻り値として、算出したStateRootを AppHash フィールドにセットしてCometBFTへ返す。

Acceptance Criteria (受け入れ条件)

  • トランザクション処理後に計算された AppHash がCometBFTのブロックヘッダに正しく記録されること。
  • ノードを再起動しても、MPTの最新状態から処理が再開できること。

Phase 4] Behemoth Protocol(キルスイッチ)の統合

Objective (目的)
行政インフラのフェイルセーフとして機能する特権コントラクト用のネットワーク停止機構(Behemoth Protocol)を、ABCI層と連携して実装する。

Tasks (タスク)

  • Leviathanのオペコードセットに独自の HALT_NETWORK (例: 0xBE)を追加し、ガス代やスタック操作を定義する。
  • EVM::run のメインループ内で HALT_NETWORK が発火した際、即座に実行を中断し、特殊なエラー型(例: ExecutionError::HaltNetwork)を親へ伝播させる。
  • ABCIの finalize_block 内でこの特殊エラーを捕捉した場合、Rustの panic! を発生させるか、ABCIのレスポンスコードとして致命的エラーをCometBFTに返す。

Acceptance Criteria (受け入れ条件)

  • Behemothコントラクトから HALT_NETWORK を発火させるトランザクションを送信した直後、CometBFTのブロック生成(合意形成プロセス)が完全に停止すること。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions