# OptiVaults > Cardano ブロックチェーン上のノンカストディアル自動利回りステーブルコイン・ヴォールト。**V1 は公開ローンチ候補版**:設計 + Aiken 実装完了(17 の論理 validator + 4 の NFT ミンティングポリシー + 1 DEX adapter = 22 のコンパイル済みアーテファクト)、外部監査目標 Q2-Q3 2027、公開ローンチは監査通過後。V1 は多ラウンドの内部監査を経たアーキテクチャを継承。公開ローンチ時は事前監査 100K USDCx TVL 上限を設定予定。 OptiVaults V1 は Cardano 上に構築された DeFi 利回り集約プロトコルで、スマートコントラクトには Aiken PlutusV3 を採用しています。ユーザーが USDCx ステーブルコイン(Circle が xReserve 経由で発行)を預け入れると、自動複利で価値が積み上がっていく vUSDCx シェアトークンが発行されます。自動キーパーは Liqwid Finance のステーブルコイン市場(DJED、USDM)や Minswap V2 のルート(ref-script SwapAdapter dispatch)に資金を回します。会計、手数料の差し引き、スリッページ上限、セキュリティ不変条件はすべてオンチェーンのコントラクト側で担保されます。 ## 主要情報 - ブロックチェーン:Cardano(eUTXO モデル) - スマートコントラクト:Aiken PlutusV3 - 現在のバージョン:**V1 ローンチ前**(設計 + Aiken 実装完了;外部監査目標 Q2-Q3 2027) - 内部監査の経緯:V1 アーキテクチャは複数ラウンドの内部監査を経ており、指摘事項はすべて対応済み。直近では R72(クロス validator バインディングのすき間)、R73(MergeUtxo の受け入れチェック)、R74(Minswap V2 LP 名フォーマット)の修正を完了 - アーキテクチャ:Withdraw-Zero Forwarding Pattern。vault_proxy から 10 個のステーキング validator(vault_user / vault_keeper_hot / vault_batcher / vault_swap_ada / vault_protocol / vault_recall / vault_liqwid / vault_gov_policy / vault_gov_emergency / vault_admin_deploy)に dispatch する構成です。さらに V1 で追加された keeper_stake_script(週次ローテーション)、オンチェーン treasury(4 カテゴリ予算)、Minswap V2 SwapAdapter(ref-script dispatch)が加わります - シェアトークン:vUSDCx(Cardano ネイティブアセット) - 預入資産:USDCx——**Circle** が **xReserve** クロスチェーン準備機構経由で発行(2026 年 2 月 Cardano ローンチ)、xReserve スマートコントラクト内にロックされた USDC により 1:1 担保;USDC 自体は米ドル準備で裏付け、Deloitte 月次 attestation - 最低預入額:V1 ローンチ予定 10 USDCx - ウォレットサポート:CIP-30(Eternl、Nami、Lace、Flint、Yoroi、Vespr) - ライセンス:**Apache License 2.0**(permissive オープンソース、OSI-approved——fork + 商用利用 + 競合製品を許可) - 戦略:ガバナンスで設定可能;ローンチデフォルト 30% USDCx バッファ + 45% Liqwid DJED + 25% Liqwid USDM - 推定 APY:変動制(Liqwid 市場の状況に依存、保証はありません。直近の Liqwid データではブレンド総利回り約 6.66%、ネット約 6.36% で、参考値としてのみ提示しています) - 事前監査 TVL 上限:100,000 USDCx(Q2-Q3 2027 の第三者監査が完了するまで、運営側で制限) - Phase 1 想定 TVL:$5K-$25K(あくまで概算で、予測値ではありません) - V1 テストスイート:`aiken check` を実行するたびに **235 件のユニット・プロパティテスト / 730 件のランダム化チェック** がすべてパスします(8 件のプロパティテストはそれぞれ最大 100 反復、加えて決定論的ケースで R72・R73・R74 の回帰を網羅。R74 だけで `minswap_v2_adapter` 内に 24 件のインラインテスト、`tests/r74_test.ak` に 10 件の構造テストを追加) - 内部監査:複数ラウンドの内部監査で指摘事項は対応済み。V1 固有の内部監査(カバレッジ領域 A-F)と第三者外部監査(目標 Q2-Q3 2027)はいずれも公開ローンチの前提条件です - 監査費用の目安:$50K-$150K(Anastasia Labs、MLabs、Certik-Cardano、TxPipe が 2025-2026 年に公開している Plutus V3 案件の価格をベースに算出) - ウェブサイト:https://optivaults.app - ソース:https://github.com/OptiVaults/optivaults-protocol ## V1 アーキテクチャ(17 論理 validator + 4 NFT ミンティングポリシー + 1 DEX adapter = 22 コンパイル済みアーテファクト) ### 論理 Validators(staking + spending) 1. **vault_proxy** — ヴォールト UTXO を保持する軽量 spend validator。コンパイル時パラメータは **11 個**(10 個のステーキング validator hash と vault_nft_policy)、Withdraw-Zero 経路は **10 本**(UseUser / UseKeeperHot / UseBatcher / UseSwapAda / UseProtocol / UseRecall / UseLiqwid / UseGovPolicy / UseGovEmergency / UseAdminDeploy)。`withdrawal_count == 1` であること、continuing output が存在すること、Vault Identity NFT が保持されていることを検証します 2. **vault_user** — 誰でも呼べるユーザー経路のステーキング validator:Deposit、Withdraw(繰延利回りに伴う 0.1% 手数料)、CommunitySunset(Layer 3 の 90 日パーミッションレス dead-man-switch) 3. **vault_keeper_hot** — Keeper のホットパスとなるステーキング validator(keeper 認可必須):Compound(3 方向の手数料分割。R72 F-1 で `ReceiveCompoundShare` をクロス validator バインディングする)、RebalanceBuffer 4. **vault_batcher** — Keeper のバッチ処理用ステーキング validator:BatchProcess(同時並行の deposit/withdraw 注文をまとめて処理。R51 H-1 の `no_vusdcx_leak` ガード付き) 5. **vault_swap_ada** — Keeper SwapAda のステーキング validator:Tier-1 のデュアルフィード oracle で価格を取り、ADA を USDCx に補充します(V1 ローンチ時点では未起動。ガバナンスが `registry.asset_oracles` に ADA エントリを入れて初めて動きます) 6. **vault_protocol** — Keeper-with-fallback のプロトコルステーキング validator:DeployToProtocol を SwapAdapter の ref-script dispatch 経由で実行(peg-floor と Tier-1 oracle 上限の両方をチェック、§5.4) 7. **vault_recall** — Keeper-with-fallback の recall ステーキング validator:RecallFromProtocol、MergeUtxo(R56 M-1 のセカンダリトークン許可リストと R73 F-1 の受け入れチェック付き) 8. **vault_liqwid** — Keeper-with-fallback の Liqwid ステーキング validator:SupplyToLiqwid(`no_duplicate_market` を要求)、RecallFromLiqwid(受け取り額 ≥ supplied_value を厳密に要求) 9. **vault_gov_policy** — ポリシー変更系ガバナンスのステーキング validator:UpdateStrategy(7d)、UpdateFee(14d)、UpdateFeeSplit(21d、最長)、UpdateSlippagePolicy(48h)、publish(Deregister) 10. **vault_gov_emergency** — 緊急時ガバナンスのステーキング validator:EmergencyWithdraw(0d、即時。Layer 1 として凍結のみ可能)、publish(Deregister) 11. **vault_admin_deploy** — Admin deploy 用のステーキング validator:AdminDeployNonDeposit(7d Keeper 非稼働、21d Registry 安定、許可リスト掲載の 3 条件をすべて満たす場合のみ実行可能)、publish(Deregister)。Phase 77c で vault_gov_emergency から切り出しました 12. **keeper_stake_script** — Keeper 認可レイヤー。3 つの RegistrationMode(GovernanceOnly / Mixed / PermissionlessWithBond)に対応し、週次ラウンドロビン(周期 7 日、30 分フェイルオーバー)で運用。A-Plain 認可(TX ごとに keeper_auth UTXO を消費)を採用しています 13. **treasury** — オンチェーン 4 カテゴリ予算。ローンチ時 treasury に入る 60% の内訳は、**監査準備 40% / 運用 25% / R&D 25% / バッファ 10%** です(監査準備の累積率は総手数料の 24% になります)。Receive と Spend(24h クールダウン、月次上限、監査下限、invoice-ref 必須)、ReceiveGovForfeit(multisig_gov とのクロス validator バインディング)、UpdateParams(180d クールダウン)を備えます 14. **multisig_gov** — m-of-n ガバナンス。7-21d のタイムロックと 1-of-n のキャンセル拒否を備え、Governance NFT を保持します。ローンチ時の構成は 3-of-3(創設者 1 名と独立 Cardano SPO 2 名)。QueueAction / ExecuteAction / CancelAction / RotateSigners / Heartbeat / DistributeSignerCompensation(90d)/ ReceiveCompoundShare の各 redeemer をまとめます 15. **registry** — 9 フィールドの datum(gov policy/name、protocol_hashes、stable_tokens、liqwid_markets、asset_oracles、swap_adapter_hashes、last_update_time、keeper_pkh)。UpdateRegistry(7d + 1h クールダウン)、KeeperToggleMarket(1h)、FastUpdateMarkets(1h)の 3 redeemer に対応します 16. **order** — バッチ注文キュー:Process(keeper)、Cancel(ユーザー本人)、Expire(誰でも実行可能で全額返金。R65 N-2 準拠) 17. **vusdcx** — シェアトークンのミンティングポリシー。ヴォールトアイデンティティへコンパイル時にアンカー(R55)、初回預入上限は 10^18(R68)に設定 ### NFT ミンティングポリシー(one-shot + soul-bound) 1. **vault_nft** — Vault Identity NFT。one-shot UTXO-ref ミントで、vault_proxy / vusdcx / order にコンパイル時アンカーされます(R55 ファントムヴォールト防御) 2. **governance_nft** — One-shot UTXO-ref ミント。multisig_gov が保持 3. **registry_auth_nft** — One-shot UTXO-ref ミント。registry が保持 4. **gov_signer_nft** — Soul-bound ミント。名誉的役割のみで金融的価値はなく、ローテーションで降板する際に焼却されます ### DEX Adapter(B@launch=1 — ref-script dispatch) 1. **minswap_v2_adapter** — 独立した Minswap V2 SwapAdapter のステーキング validator(無パラメータ、1,457 B)。R74 F-1 で hop_chain commitment を採用し、各ホップの LP 名を Minswap の正規化公式(sha3_256-of-sha3_256)でオンチェーン側で再計算します。**ローンチ後に新しい DEX を追加したい場合は、ガバナンスの UpdateRegistry(14d タイムロック)で adapter hash を `registry.swap_adapter_hashes` に追記するだけで済み、V1 vault を再デプロイする必要はありません。** **VaultDatum:** 全 29 フィールドのうち 15 個が不変。Phase 87 で追加された `community_sunset_triggered`(idx 28)が Layer 3 dead-man-switch のフラグになります。Policy グループにある `max_slippage_bps`(上限 500、すなわち 5%)と `min_swap_peg_bps`(区間 [9300, 9950])が §5.4 のオンチェーンスリッページ判定を担います。 **A2 `publish` ハンドラを備えるステーキングクレデンシャル(計 12 個):** Withdraw-Zero で dispatch される 10 個の validator に加え、keeper_stake_script と minswap_v2_adapter。これらのステーキング登録デポジットは sunset 時にガバナンス Deregister で取り戻せます。 ## V1 固有機能(内部検証継承を超える) - **3 方向 Compound 手数料分割**:ローンチ時は **40% keeper / 0% gov / 60% treasury**。ハードキャップは **keeper ≤ 40%、gov ≤ 10%、合計 ≤ 50%、treasury 下限 ≥ 50%**。Keeper の取り分をあえて validator のハードキャップに合わせているのは、「公共財」として運営しても第三者 keeper(オープンソース)が現実的に回せるラインを確保するためです - **UpdateFeeSplit redeemer**:21 日タイムロック(ガバナンスアクションの中で最長。署名者の自己取引(self-dealing)を防ぐためです) - **UpdateSlippagePolicy redeemer**:48 時間タイムロックで、1-of-n のキャンセル権も維持。`max_slippage_bps ≤ 500 bps`(Tier-1 oracle 上限)と `min_swap_peg_bps ∈ [9300, 9950]`(Tier-2 peg-floor)の両方を上限としてかけます - **ガバナンスを vault_gov_policy + vault_gov_emergency + vault_admin_deploy に分離**:「応答スピードの違い」を軸に切り分けています。緊急経路(EmergencyWithdraw freeze-only)をポリシー変更(UpdateStrategy/Fee/FeeSplit/SlippagePolicy)や管理動作(AdminDeployNonDeposit)から切り離しているため、今後ポリシー機能を追加しても緊急経路の攻撃面が広がる心配はありません - **Phase 1 三層構成のガバナンス安全策**:Layer 1 は EmergencyWithdraw による凍結のみ、Layer 2 は凍結状態でも DeployToProtocol 経由で USDCx を引き出せる、Layer 3 は `vault_user.CommunitySunset` で発動する 90 日パーミッションレス dead-man-switch——SPO 共同署名者が全員オフラインで、単一署名者によるガバナンス障害が起きた場合でも、預金者の損失を抑え込めます - **週次 keeper ローテーション**:時間に基づくモジュラー演算で主担当を決定。周期は 7 日、フェイルオーバーは 30 分。bond-weighted モードは Phase 3+ で有効化されます - **A-Plain keeper 認可**:keeper TX のたびに keeper_auth UTXO を消費し、last_successful_tx_at を更新します - **四半期ガバナンス報酬**:signer_compensation_pool が Compound のたびに積み上がり、90 日ごとに DistributeSignerCompensation(1-of-n)で配分されます - **X3 ハイブリッド資格**:四半期を満任していて、なおかつその四半期内にガバナンス TX を 1 件以上署名するか Heartbeat を出していれば資格を得ます - **Y1 没収フロー**:資格を満たさない署名者の取り分は ReceiveGovForfeit によるクロス validator バインディングを通じて Treasury の監査準備に振り替えられます - **Soul-bound Gov Signer NFT**:名誉的な意味合いのみ。Governance NFT ポリシーに紐付き、ローテーションで降板する際に焼却されます ## 仕組み(V1 公開ローンチ時) 1. ユーザーが USDCx を預け入れる → API がサーバー側で TX を組み立てる → ユーザーが CIP-30 ウォレットで署名 → vUSDCx シェアが mint される 2. Keeper が Minswap V2 の swap ルート(ref-script SwapAdapter dispatch)を経由して、Liqwid(DJED、USDM)へ自動で資金を投入 3. Keeper が利回りを複利化 → 成果報酬を 3 方向に分配(keeper 40% / ガバナンスプール 0%(ローンチ時)/ treasury 60%)→ シェア価格が上昇 4. ユーザーが引き出す → 直接(即時。ただし 0.1% 手数料はシェア価格に上乗せされ、残存保有者へ還元)またはキュー(無料、約 5 分) ## 手数料 - **成果報酬:** 利回りに対して 4.5%(元本には一切かかりません)。オンチェーンで 4.5% のハードキャップが効いています - **手数料分配:** keeper 40% / ガバナンスプール 0%(ローンチ時)/ treasury 60%(Phase 2+ では UpdateFeeSplit の 21 日タイムロックを通じてガバナンスプールを 5-10% に引き上げ可能。treasury 下限 ≥ 50% は常に維持) - **直接引出手数料:** 0.1%。この 0.1% は外部に支払われず、ヴォールトに残ったまま残存保有者のシェア価格収益として積み上がります。Keeper が 7 日連続で動かなければ自動的に免除されます - **キュー引出:** 無料 - **預入手数料:** なし ## セキュリティ機能 - **15 個の不変 datum フィールド** と **コンパイル時の Vault NFT アンカー** をペアで配置 - **Vault Identity NFT**(one-shot UTXO-ref ミント。proxy/vusdcx/order にコンパイル時に焼き込み)— ファントムヴォールト注入を排除 - **Withdraw-Zero Forwarding Pattern**(10 経路)— proxy 側で「承認された withdrawal がただ 1 つあること」と continuing output の存在を確認。`withdrawal_count == 1` の不変条件は経路数とともにスケールします - **MultisigGov** — m-of-n マルチシグに 7-21d のタイムロックと 1-of-n のキャンセル拒否を組み合わせ - **UpdateFeeSplit の 21 日タイムロック** — 全アクションの中で最長。署名者の自己取引を防ぐためです - **UpdateSlippagePolicy の 48 時間タイムロック** — デペグ時に素早く対応しつつ、預金者が退出するための時間も確保 - **オンチェーンスリッページ上限**(§5.4 Phase 1+2 は実装済み。P3-P5 の Tier-1 oracle、Minswap デコーダ、デュアルフィード対応は 6-12 週で実装予定):`max_slippage_bps ≤ 500 bps`、`min_swap_peg_bps ∈ [9300, 9950]` - **Phase 1 三層構成のガバナンス安全策** — Layer 1 は凍結のみ、Layer 2 は凍結中でも USDCx を引き出せる、Layer 3 は 90 日パーミッションレスの CommunitySunset - **役割分離** — ガバナンス、keeper、fee-collector の各鍵を厳密に分離(mainnet ローンチ時には 6 つの異なるアイデンティティ) - **週次 keeper ローテーション** — 単一の keeper が独占できない設計、フェイルオーバーは 30 分 - **ガバナンスは USDCx や ADA を奪えない** — AdminDeployNonDeposit 経由で取り出せるのは塩漬けの非預入トークンだけ。しかも 7d Keeper 非稼働、21d Registry タイムロック、許可リストの 3 つを同時に満たす必要があります - **R72 F-1 クロス validator バインディング** — Compound の gov_share 経路では、gov input の spend redeemer が `ReceiveCompoundShare` であることを必ず確認します。他の GovRedeemer と組み合わさって資金が gov UTxO に取り残されてしまう事故を防ぎます - **R73 F-1 MergeUtxo の受け入れチェック** — 寄付では `valid_allocs` の不変条件を壊せないようにガード - **R74 F-1 Minswap V2 hop_chain commitment** — Adapter は Minswap の正規化公式(sha3_256-of-sha3_256)で各ホップの LP 名を検算します。実際の mainnet サンプルにバイト単位で照合済みです - **二重充足防止** — 該当する redeemer に `receiver_output_idx`、`fee_output_idx`、`dest_output_idx`、`payout_output_index` を持たせています - **繰延された早期引出手数料** — 0.1% は外に出ず、ヴォールトに留まってシェア価格に積み上がります - **オンチェーンでの利回り計算** — Keeper には利回りを偽装する余地がありません(`yield = idle_buffer + non_deposit_value + Σ liqwid_positions.supplied_value − total_deposited`) - **Liqwid 市場ごとのポジション追跡** — qToken レートのインフレ攻撃を防止 - **緊急退出機構** — Keeper が 7 日続けて止まると、直接引出の手数料が自動で免除されます ## 言語 - English:https://optivaults.app/llms.txt - 繁體中文:https://optivaults.app/llms-zh.txt - 日本語(このファイル):https://optivaults.app/llms-ja.txt - 完全技術リファレンス:https://optivaults.app/llms-full.txt ## 連絡先 - ウェブサイト:https://optivaults.app - メール:optivaults@gmail.com - GitHub:https://github.com/OptiVaults/optivaults-protocol