Midnight の公式アカウントは日本時間 11 月 7 日 6 時 41 分、台帳を Ledger 8 から Ledger 9 へ上げるハードフォークをメインネットで完了したと発表しました。通常の Preprod での配備と試験期間を省いた適用で、公式はこの経路を、セキュリティ修正のために統制された公開が必要なときのものと説明しています。
NIGHT を持っているだけの方に、対応は求められていません。一方で dApp の開発者には Midnight.js 5 への更新が、試験用ネットワークの利用者には DUST の登録のやり直しが必要です。初期報のあと、公式ブログと互換表で確かめられたことを立場ごとに整理します。
立場ごとに求められていること
- メインネットで cNIGHT を持っている方 — DUST 生成の登録は自動で引き継がれ、公式ブログは「No action is required on your part」と書いています。残高と配備済みのコントラクトも自動で移行しました
- dApp の開発者 — 配備済みのコントラクトはそのまま動きますが、アプリは Midnight.js 5 への更新が必要です。まだ配備していないコントラクトは、Ledger 9 向けの Compact ツールチェーン (互換表では 0.36.0) でコンパイルします
- Preview と Preprod の開発者 — tNIGHT を登録し直すまで、DUST の生成は再開しません。Preview は 11 月 6 日に Ledger 9 の新しいチェーンとしてリセットされたので、それ以前に配備したコントラクトは配備し直しになります
- メインネットのノードとインデクサーの運用者 — 互換表は、Node 2.1.101 への更新、片道の更新なので事前にデータディレクトリのスナップショットを取ること、インデクサーをジェネシスから索引し直すことを挙げています
公式の説明では自動のはずの DUST ですが、ウォレットの Lace は同じ朝、生成されないときの手順を案内しました。Midnight のアカウントカードを開いて「Generate DUST」を選び、NIGHT を指定し直す、というものです。手元の DUST が増えていないときは、この順に確かめてください。
Preprod が本番より一世代古い並び
公式の互換表は、11 月 7 日 14 時台の時点で次の組み合わせになっています。
- Mainnet と Preview — Ledger 9、Node 2.1.101、Midnight.js 5.0.0、Wallet SDK 2.0.0、Proof Server 9.0.0
- Preprod — Ledger 8、Node 1.0.400、Midnight.js 4.1.1、Wallet SDK 1.2.0、Proof Server 8.1.3
本番の直前に試すための Preprod が、本番より古い台帳に残っている形です。開発者にとっては、Preprod で動いたことが Ledger 9 での動作確認にならないことを意味します。Ledger 9 で試す場は、当面リセット後の Preview になります。
配布の面でも、追いついていない部分があります。GitHub の midnight-node で公開されている最新のリリースは 10 月 6 日の node-1.0.400 で、互換表にある 2.1.101 のタグは 14 時半の時点で見当たりません。Preprod のインデクサー 4.3.302 についても、互換表自身が公開のタグやイメージがまだないと注記しています。
どの修正のための経路か、公式は名指ししていない
公式ブログが書いているのは「security improvements」までで、個別の脆弱性は挙げていません。手がかりになるのは、11 月 5 日に公開された Ledger 9.1.0.0 のリリースノートです。ここには、メインネットに 8.1.2 と 8.1.3 として先に出したセキュリティ修正を引き継ぐとあります。低レベルの復号の強化と、コントラクト呼び出しの記録に正規の値を求める修正です。
後者に対応する重大度 critical の勧告 GHSA-wr7g-rr4v-jmj8 は、10 月に公開済みです。node-1.0.400 のリリースノートによると、修正はすでに Preview、Preprod、Mainnet で動いていました。すでに本番へ届いている修正なので、今回 Preprod を省いた理由をこれだけで説明することはできません。14 時半の時点で、Midnight のリポジトリに 11 月の日付の勧告は公開されていません。
統制された公開は、一般に修正の中身を先に広げないために選ばれます。今回もそうであれば、説明はこの先に出てくることになります。
Ledger 9 で増える機能と、残っている不具合
開発者向けに増えるのは、Compact で使える Keccak-256 と ECDSA、ウォレットや保管業者の既存のソフトと合わせやすくする BIP-44 のアドレス導出、同じ取引の中でのコントラクト同士の呼び出し、ウォレットやエクスプローラーが読めるコントラクトのイベントです。証明と検証鍵は ZKIR V3 へ移りました。
リリース時点の既知の不具合も 2 件あります。1 つは、手数料を DUST の支払い 1 件で払う呼び出しが OutsideTimeToDismiss で拒否されることがある問題 (#838) で、2 件以上に分けると避けられます。もう 1 つは、保有する秘匿コインを使って書き戻す呼び出しがガス不足で拒否されることがある問題 (#839) です。台帳と移行作業の詳細は、11 月 5 日の Signal と 11 月 6 日の Signal にまとめています。
次に開くページ
確かめる先は 3 つです。セキュリティの中身は midnight-ledger の Security Advisories に、2.1.101 の公開は midnight-node の Releases に出るはずです。Preprod がいつ Ledger 9 へ上がるかは、今回読んだ資料に日付がないので、互換表の Preprod の列を見ることになります。公式はブログで、新機能の技術文書を今後数週間で順に出すとしています。開発者の方は、この 3 つを一度開いておくと、動く順番を決めやすくなります。
ことば
- Preprod — Midnight の本番前の試験用ネットワーク。通常はここで一定期間動かしてから本番へ進みますが、今回は順番が逆になり、Ledger 8 のまま残っています。
- cNIGHT と tNIGHT — cNIGHT は Cardano 上の NIGHT、tNIGHT は試験用ネットワークの NIGHT です。今回、登録のやり直しが求められたのは tNIGHT の側でした。
- DUST — Midnight の手数料に使う資源で、登録した NIGHT から生成されます。台帳が変わっても、メインネットの登録は自動で再現されると公式は説明しています。
一次ソース / 関連リンク
- Midnight 公式 X: Ledger 9 のメインネット稼働の発表
https://x.com/MidnightNtwrk/status/2118820990373220618 - Midnight 公式 X: 新機能と保有者への案内 (スレッド 2 本目)
https://x.com/MidnightNtwrk/status/2118820994164859168
Midnight 公式ブログ: Ledger 9 upgrade on mainnet(midnight.network)
Midnight 公式ドキュメント: 互換表(docs.midnight.network)
セキュリティ勧告 GHSA-wr7g-rr4v-jmj8 (GitHub)(GitHub)
- Lace 公式 X: Midnight のアップグレード後の案内
https://x.com/lace_io/status/2118828868345979071

