Cardano と Midnight 向けの開発を手がける ODATANO の開発者 Max 氏が、日本時間 11 月 15 日未明、NEAR Protocol と Midnight を結ぶブリッジ「LIGHTSOUT」のコードを GitHub で公開しました。運営者も委員会も、TEE (信頼できる実行環境) のような特別なハードウェアも置かず、両側のチェーンがお互いの状態を自分で検証する作りで、いまは NEAR のテストネットと Midnight の preview ネットワークで動いています。
ブリッジは、異なるチェーンの間で資産を動かすたびに「誰を信じるか」が問われる場所です。LIGHTSOUT はその答えを人や組織ではなく、Midnight のゼロ知識証明と Cardano から証明される委員会の情報に置いています。Midnight のプライバシーが、Cardano の外のチェーンとどうつながりうるかを示す試作として読むと、仕組みの一つひとつの意味が見えてきます。
NEAR から Midnight へ: 署名をゼロ知識で検証する
NEAR から入る向きでは、利用者が NEAR をロックします。Midnight 側のコントラクトは、NEAR のブロック生成者が署名したブロックヘッダーを受け取り、その ed25519 署名を Compact (Midnight のスマートコントラクト言語) の回路の中で検証します。ロックがそのヘッダーの下で確かに起きたと証明できたときだけ、同じ量の wNEAR を発行します。発行された wNEAR は、Midnight 上でシールドされた (中身が外から見えない) トークンになります。
ロックの単位は 0.1・0.5・1 NEAR の 3 種類に固定されています。金額から誰のロックかを絞り込まれにくくするための設計で、README は「ロックとバーンの間はすべてシールドされる」と説明しています。一方、バーン (払い戻し) の額は 0.1 wNEAR 以上で自由に選べるため、珍しい額を使うとロックと突き合わされうる点も、README 自身が明記しています。
この向きには前提条件があります。NEAR のヘッダーを受け入れるには、Compact の ed25519 回路を検証できる Midnight の台帳 (ledger) 9.1.0.0 以降が必要で、README によれば preview とメインネットはすでに 9.1.0.1 で動いています。11 月 8 日の Daily Intel で扱った Ledger 9 への移行が、こうした外部チェーンの検証を可能にする土台になっています。
Midnight から NEAR へ: Cardano から証明した委員会を追う
逆の向きでは、利用者が Midnight 上で wNEAR をバーンします。NEAR 側のコントラクトは、Midnight の確定性 (finality) を起点のブロックから追い続け、Midnight のブロックを確定させる委員会の情報を Cardano から証明して保持しています。確定した Midnight のブロックの中にバーンの取引があると証明できたものだけに、NEAR を払い出します。リポジトリには、Midnight の確定性を追う GRANDPA や、Cardano の Mithril の多重署名を扱う Rust のライブラリが含まれています。
証明を運ぶ中継役 (リレー) は誰でも動かせ、運ぶ以外の権限を持ちません。3 つのコントラクトにはどれも管理者の鍵がなく、誰も差し替えられないと README は説明しています。これは npm run status で両方のチェーンから読み取って確かめられる、という作りです。
上に載った最初の用途: AI エージェントの匿名の質問ボード
LIGHTSOUT は、ブリッジの上に「ボード」と呼ぶ Midnight のコントラクトを載せています。AI エージェントが NEAR AI のモデルへの質問に報酬を付けて投稿すると、投稿者は「メンバーの誰か」としか表示されません。別のメンバーが NEAR AI でその質問を実行し、答えを暗号化してボードに置きます。ボードは、モデルが動く TEE がその質問とその答えに署名したことを回路で検証してから報酬を払い、同じ処理の中で答えを開く鍵を質問者に渡します。期限までに答えが来なければ、質問者は報酬を取り戻せます。
報酬の支払いは Midnight 上のシールドされた wNEAR で行われます。質問の文面そのものはボードで公開されるため、README は「人名を書かないように」と注意しています。匿名性は参加者の数に依存し、メンバーが 2 人しかいなければ誰が質問したかは分かってしまう、という限界も書かれています。README に掲載された status の読み取り例では、質問 7 件のうち 6 件に回答が付き、1 件は返金されていました。
README は、NEAR が本番で提供している Confidential Intents とも並べて比べています。あちらは許可制のバリデータによる非公開のシャードと TEE ベースのブリッジで動くのに対し、LIGHTSOUT はゼロ知識証明と両側のライトクライアントで動く、という違いです。両者は競合せず、LIGHTSOUT は運営者や TEE に頼れない取引のためのもの、という位置づけです。
テストネットに限られる理由
コードは NEAR のハッカソンの期間中に書かれ、Apache-2.0 ライセンスで公開されています。スマートコントラクトは監査を受けておらず、README は「テスト用の資金だけで動いている。メインネットでは使わないでほしい」と明記しています。
仕組みの上の限界も示されています。Midnight は preview で 30 分ごとにバリデータを交代させており、通常の交代は確定性によって証明されます。ただし、強制的な交代や遅れた交代はこの方法では証明できず、その後にバーンされた wNEAR は払い出されません。preview ではまだ起きていないとのことです。また、Midnight の新しいランタイムへの投票が行われてから、ブリッジがその版の対応表を持つまでの間は、新しい NEAR の受け入れが止まり、払い出しも待ちになります。
試してみたい方向けに、公開のサンドボックス (lightsout.odatano.dev) が用意されています。ブラウザで用意済みのエージェントを借り、質問の投稿から引き出しまでを、NEAR のテストネットと Midnight の preview で実際の証明付きで動かせます。
次に確かめること
確認できる次の一点は、Midnight で次のランタイム更新の投票が行われたときに、ブリッジがいったん受け入れを止め、新しい版に追随して再開できるかどうかです。README の手順にある npm run status の出力で、ランタイムの番号と「新しいロックを受け付けているか」が読み取れます。あわせて、リポジトリの Status 節にある「Not on mainnet」の記載と、監査についての一文が変わるかどうかも、メインネットへ近づく目安になります。
ことば
- ライトクライアント — チェーンの全データを持たずに、ブロックヘッダーと署名だけで「この取引は確定している」と確かめる仕組み。LIGHTSOUT では、相手のチェーンのライトクライアントを各チェーンのコントラクトの中に置いています。
- wNEAR — ロックされた NEAR と 1 対 1 で Midnight 上に発行されるトークン。シールドされたまま Midnight 上で受け渡しでき、バーンすると NEAR 側で払い出されます。
- TEE (信頼できる実行環境) — CPU の中で外から中身を覗けない領域を作り、そこで動いた処理に署名を付ける技術。ボードは、NEAR AI の TEE の署名を回路で検証してから報酬を払います。
一次ソース / 関連リンク
- 開発者 Max 氏の X での公開告知
https://x.com/maxalexweber/status/2121629954764943549

lightsout.odatano.dev

