Signal
📡 Signal|Midnight、Ledger 9 でコントラクト間の呼び出しに対応
Midnight が11月6日にメインネットを Ledger 9 へ切り替え、同じ取引内でのコントラクト間呼び出しに対応。第1段階は公開データ限定。

Cardano のパートナーチェーン Midnight は11月6日、メインネットの台帳 (ledger) を Ledger 8 から Ledger 9 へ切り替えた。あるスマートコントラクトが別のコントラクトを、同じ取引の中で呼び出せるようになった。
公式の開発者向け資料は、これを最初の段階と位置づけ、対象を公開 (unshielded) のデータに限っている。秘匿したまま呼び合う機能はまだ入っていない。それでも、別々に動いていたコントラクトが一つの取引の中で組み合わさる土台が、メインネットに入ったことになる。
Ledger 9 で何が変わったか
公式ドキュメントの Ledger 9 アップグレードのページによると、メインネットの台帳は 9.1.0.1、ノードは 2.1.101 になった。新しく入った機能は大きく4つある。
- コントラクト間の呼び出し — 一つのコントラクトが、同じ取引の中で別のコントラクトの関数を実行させる。公式ブログは、呼ばれた側が「どのコントラクトから呼ばれたか」を確かめ、それを使って操作を許可できるとも書いている
- イベントの発行 — コントラクトが短い公開の通知を出し、ウォレットやエクスプローラーがインデクサーを通じて受け取る。こちらも最初の段階は公開のイベントだけ
- 署名とハッシュ — ECDSA 署名の検証、Keccak ハッシュ、secp256k1 がコントラクトから使える
- ZKIR 3 — ゼロ知識証明の中間表現が第3版になり、証明の仕組みと開発ツールの全体が移る
手数料の計算も変わった。最低価格の下限 min_block_price が10に設定され、切り替え後の最初のブロックから効く。資料は手数料が「わずかに上がる」と説明している。
切り替えは決まったブロック高で起きる仕組みではなく、評議会と技術委員会がランタイムの更新を承認するガバナンスの手続きで行われる。Ledger 8 形式の取引は Ledger 9 では読めないため、アプリはウォレット SDK 2.0.0 と Midnight.js 5.0.0 への移行を求められる。
前倒しと、飛ばしたテスト環境
Cardano の開発企業 IOG (Input Output) の公式 X は11月7日、「早めに出した。メインネットで稼働中」と投稿した。IOG が引用したセバスチャン・ギユモ氏の投稿は、加速の計画がうまくいき、想定より早く出せたと書く。同氏は10月2日の時点では、コントラクトの組み合わせとイベントは「年内」に Ledger 9 で入ると予告していた。
公式ブログはもう一つの事情を書いている。今回は通常の手順と違い、テストネットの Preprod での展開と様子見の期間を経ずに、メインネットへ直接入れた。セキュリティの修正に、より管理された公開の経路が必要な場合にとる方法だという。Ledger 9 は、Ledger 8 の 8.1.2 と 8.1.3 としてメインネットに出したセキュリティ修正も引き継いでいる。
その結果、11月6日の時点で Preprod は Ledger 8 のまま残り、公開テストネットの Preview は Ledger 9 の新しいチェーンとしてリセットされた。新機能の技術文書の一部は、今後数週間でそろえるとブログは書く。速さと引き換えに、公開テストネットで新しい台帳を先に動かす段階は省かれた。
EVM では当たり前の機能が、なぜ今なのか
Ethereum では、コントラクトが別のコントラクトを呼ぶのは2015年の稼働当初からの基本の動作だ。DEX の集約や、貸し借りと交換を一度に済ませる取引は、この呼び出しの連鎖の上に成り立っている。
Midnight の仕組みは違う。コントラクトの処理は利用者の側でゼロ知識証明を作り、チェーンはその証明と公開部分の記録を検証する。呼び出しを連ねるには、複数のコントラクトの証明と状態の変化を一つの取引の中で矛盾なく束ねる必要がある。秘匿のデータまで絡めば、誰が何を知ってよいかの線引きも加わる。Ledger 9 がまず公開のデータに範囲を絞ったのは、この難しさの表れと読める。
ECDSA と Keccak の追加も、同じ方向を向く。公式ブログは、Bitcoin や Ethereum が使う署名形式に対応することで大手のカストディ事業者が接続でき、Keccak はチェーンをまたぐ入金に役立つと説明している。単独で閉じた秘匿のチェーンから、既存のチェーンや事業者とつながるチェーンへの準備が、台帳の層で進んでいる。
入っていないもの
アップグレードのページは、Ledger 9 に含まれないものも明記している。Cardano 側の cNIGHT を Midnight 側の mNIGHT へ移すブリッジは、今回はメインネットで有効になっていない。有効化は別のガバナンス手続きで、時期は別途告知するという。ブロック生成の報酬も Ledger 9 の範囲外だ。
既知の不具合のうち、コントラクトの開発者に関わる主なものは2件ある。コントラクトが持つ秘匿のコインを使い、おつりを書き戻す呼び出しがガス不足で拒否される問題と、手数料を DUST の支払い1回で払うと拒否されうる問題だ。どちらも次のリリースで直す予定とされる。
公式ブログは、今回の段階が秘匿の DeFi の改善に向けた土台を敷くと書く。秘匿したままのコントラクト間呼び出しが入るかどうかが、Midnight の設計の本題に届くかの分かれ目になる。
確認できる次の一点
midnight-ledger の GitHub のリリース一覧で、既知の不具合 #839 と #838 を直す次の Ledger 9 系のリリースを見る。同時に、公式ドキュメントの Ledger 9 アップグレードのページで、Preprod の切り替え日と、ブリッジ有効化のガバナンス手続きが告知されるかを確かめる。
ことば
- コントラクト間の呼び出し (コンポーザビリティ) — あるコントラクトが別のコントラクトの機能を、同じ取引の中で使うこと。部品を組み合わせて新しいサービスを作れるため、DeFi の広がりを支えてきた。
- DUST — Midnight の手数料に使う資源。登録した NIGHT から時間とともに生まれ、上限まで貯まる。Ledger 9 の切り替えでは一度リセットされ、メインネットでは登録が自動で上限まで戻された。
- Preprod — Midnight の公開テストネットの一つ。通常は新しい台帳をここで先に動かして様子を見るが、今回の Ledger 9 はここを経ずにメインネットへ入った。
🔗 一次ソース
- Midnight 公式ドキュメント「Ledger 9 upgrade」 — 11月6日の切り替え、4つの新機能、公開データ限定の第1段階、ブリッジと報酬が範囲外、既知の不具合docs.midnight.network
- Midnight 公式ドキュメント「Ledger v9.1.0.1 release notes」 — メインネットが動かす台帳の版、手数料の下限、DUST の一度きりのリセットdocs.midnight.network
- Midnight 公式ブログ「Ledger 9 upgrade unlocks signature support and composable contracts on mainnet」 — 呼び出し元の確認、Preprod を経ない直接展開の理由、ECDSA と Keccak の位置づけmidnight.network
- Midnight 公式ドキュメント「Compatibility matrix」 — メインネットと Preview は Ledger 9、Preprod は Ledger 8docs.midnight.network
midnight-ledger の GitHub リリース「ledger-9.1.0.0」 — 11月4日付のリリースノート、セキュリティ修正の引き継ぎ、既知の不具合 #839 と #838GitHub
- IOG 公式 X の告知 (11月7日)
- セバスチャン・ギユモ氏の X の投稿 (11月7日)