7つのコントラクト。 1つの数学。
プロトコル全体は7つのコントラクトであり、その2つのエンジンはいずれも同じ作り方をしている。土台に純粋な数学のライブラリを置き、それを実働コントラクトが import する。だから同じ数値がどこかで再定義されることはなく、自分で計算していない値を信頼することもない。5つがアグリゲーターを、2つがステーキングエンジンを構成する。以下のアドレスはすべて Base 上の実在する検証済みデプロイであり、同じバイトコードが Ethereum、Optimism、Arbitrum、Robinhood Chain でも動作する(完全なマトリクスは /verify にある)。
Aggregator Pentad(アグリゲーターの5コントラクト)
「5つのコントラクト。うち1つは純粋な数学であり、残りの4つがそれを import する。」Core が計算し、Hub が記憶し、Solver が決定し、Router が決済し、Quoter がプレビューする。それぞれがエラー経路を単一の小さな形でのみ公開しており、revert 面は正常系と同じだけ読みやすく保たれている。
Ω · 𝒟 · Φ · Ψ — 純粋な数学ライブラリ、ステートレス。ストレージも owner もアップグレード経路もなく、あるのは関数だけである。the Eightfold Dispatcher Ω、Deterministic Derivation 𝒟、the Iron Law Φ、the Vitality Field Ψ は、いずれも純粋な計算としてここに置かれている。他の4つが import しており、数学が他のどこかで再定義されることはない。
Ψ · レジストリ — ベニューのレジストリとバイタリティフィールド。候補プールのレジストリ(ペアごとに 16 packed slots)、バイタリティフィールド、ブリッジトークンの集合を ERC-7201 の名前空間の下に保持する。したがってそのストレージが利用側のスロットと衝突することはあり得ない。
𝒰(route) — 読み取り経路のオプティマイザ。ルート全体にわたってメタ方程式を最大化する純粋な読み取り経路のオプティマイザであり、自分で導出できない状態には一切触れない。決定はするが、決済は決してしない。
Φ · execute — アトミックな実行、資金を動かす唯一の存在。価値を動かす唯一のコントラクトであり、呼び出し側が指定した最小出力の下限のもとでアトミックに動かす。the Iron Law Φ の下限はオンチェーンで再導出されるため、汚染されたフロントエンドがそれを下げることはできない。平時には何も保持しない。
previewPlan — オフチェーンのプレビュー用ミラー。previewPlan を通じて Solver をオフチェーンのプレビュー向けにミラーし、構造上 Router が実現するのと同じ数値を返す。見積もりそのものが実行ロジックである。
5つのコントラクト。
Staking Dyad(ステーキングの2コントラクト)
同じ規律を、プロトコル自身の資本に適用したものである。純粋な数学ライブラリと、それを import するエンジン。担保と借入資産が同じトークン(BZPX)であるため、価格オラクルはどこにも存在しない。攻撃面がまるごと、構造上存在しないのである。
mulDiv · rawBalanceOf — 純粋な数学ライブラリ、インライン展開される。あらゆる比率計算が通る完全な 512-bit の乗算後除算に加え、コントラクトが自分自身の裏付けを読むための staticcall である rawBalanceOf を持つ。すべて internal であるため、エンジンのバイトコードにインライン展開される(独立したアドレスを持たない)。Core がアグリゲーターに対して占める位置とまったく同じである。
conserves — 支払能力を強制されたエンジン。多くのプロトコルが3つに分けて実装するもの、すなわち vault、レンディング市場、ロックブーストを1つのコントラクトで行い、単一の UserInfo レコードと2つのアキュムレータを通して整合させる。価値を動かす経路はすべて conserves ガードで包まれている。180M BZPX を16年にわたる隔年半減カーブで配分する。支払能力はダッシュボードの表示ではなく、revert 条件である。
2つのコントラクト。
各エンジンが立脚する1つの方程式
アグリゲーターは、候補となるルートの上でただ1つの目的関数を最大化する。ネット出力を取る。ただし the Iron Law Φ の下限をクリアしたルートからのみ取り、各プールのバイタリティで重み付けする:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"><mrow><mi>𝒰</mi><mo>(</mo><mi>route</mi><mo>)</mo><mo>=</mo><mi>𝟙</mi><mo>[</mo><msub><mi>y</mi><mtext>net</mtext></msub><mo>≥</mo><mi>Φ</mi><mo>·</mo><msub><mi>y</mi><mtext>quote</mtext></msub><mo>]</mo><mo>·</mo><msub><mi>y</mi><mtext>net</mtext></msub><mo>·</mo><munder><mo>∏</mo><mi>i</mi></munder><msubsup><mi>Ψ</mi><mi>i</mi><msub><mi>w</mi><mi>i</mi></msub></msubsup></mrow></math>
ステーキングエンジンは the Master Conservation Identity(保存の恒等式)の上に立つ。物理的な残高が台帳の負う額と一致することを、conserves ガードがトランザクションごとに強制する。したがって支払不能な状態は、単に観測できるにとどまらず、そもそも到達不可能である:
balanceOf(this) + totalBadDebt
== (totalStaked − totalDebt) + rewardReserve + protocolReserve
+ (totalRewardDistributed − totalRewardsPaid)チェーンから無料で、その場で読める: /solvency(あるいは isSolvent() · solvency() · auditInvariants())。
すべて自分で検証する
ここには信頼を求めるものは何もない。ステーキングエンジンは現時点で稼働しており、支払能力を満たしている:
cast call 0x3f60C7aa0c36a78D200405feBE143d2Cf3fA0c77 "isSolvent()(bool)" --rpc-url https://mainnet.base.org
コードのライセンス: コントラクトは 2030 年まで BUSL-1.1 である。読むこと、監査すること、検証することは自由であり、本番利用にはライセンスが必要である。クローンするのではなく、パートナーに ›