perpetual trading protocol @lighter_xyz が$1.5Bの評価額で$68Mを調達
出資にはFoundersFund, Ribbit Capital, HAUN Ventures, Robinhoodが参加
言わずと知れた存在だと思いますので、技術的な深堀りを。
Lighterのアーキテクチャ
Lighterは一言でいうと、App Specific ZK Rollupです。
Sequencerが低レイテンシに実行・バッチ化し、ProverがSNARKで証明、Ethereum L1上のコントラクトがstate rootと資産を保全します。
必要最小限のblob dataのみをL1へcommitしつつ、いざというときでもEscape Hatchという仕組みにより各ユーザがL1で退出できます。
以下が入金~取引の実行フローです
- 入金
ユーザは Ethereum L1の Lighter コントラクトへ入金します。このときのコントラクトが資産の保管先であり、state rootを管理しています。
- トランザクション
❶ Rollup txの場合(通常の注文など)
ユーザ署名済みリクエストが API Servers を経由してSequencer へ渡されます。
❷ Priority txの場合(出金など)
Ethereum のコントラクトに直接キューを送信します。Sequencer は期限内に処理する義務があり、未処理の場合は後述のEscape Hatch を発火します。
- Sequencer による実行・ブロック化・バッチ化
Sequencer は Rollup/Priority の両キューを監視・取り込み、ブロック→バッチへ集約します。また、オラクルの指数価格を取り込みつつ、Indexer と後述のWitness 生成系へ並行配信します。このとき、Indexer経由でAPIからユーザーにリアルタイムにデータを配信します(ソフトファイナリティの位置づけ)。
- バッチのcommit
各バッチは圧縮されたデータ blob(例:アカウントごとの増分、資金調達・マーク価格などの市場データ)を添付してEthereum L1にcommitされます。この blob だけで各ユーザは自分の状態を独立復元できる設計となっているそう。
- 証明生成
Sequencer の実行フィードから Witness(証明入力)を生成し、Prover が取引/マッチング(価格‐時間優先)/清算まで含む実行の正当性を SNARK で証明します。多数のトランザクションで並列に証明を作り、多段集約で 1 つのバッチ証明へまとめるという仕組みだそうです。
- L1 での検証
投稿された blob と実行公開データの同値性を検査し、最終的にPLONK に包んだ証明を Ethereum L1に提出し、検証します。
- 状態確定
証明がオンチェーンで検証完了すると、コントラクトがstate rootを更新します。これにより、そのバッチに含まれる約定・清算・口座更新が L1 で確定することになります。
- Escape Hatch
万が一Priority トランザクションが期限内に含まれない場合、ロールアップのstateを凍結し、新規コミットと検証を停止します。ユーザは L1 に投稿済みの blob だけを用いて自分の口座状態(残高・ポジション PnL・プール持分)を再構成し、証明を提示して直接引き出しを行うことができます。