Midnight のノードソフト midnight-node は9月28日(UTC)、新しい系列 2.1.0 の 3 回目のリリース候補 node-2.1.0-rc.3 を GitHub で公開しました。同じ日、TypeScript からスマートコントラクトを動かす開発キット compact-js も、3.0.0 の候補版 rc.2 を出しています。
2.1.0 は、Midnight の台帳(ledger)を 8 から 9 へ上げるハードフォークを前提にした系列です。9月26日の記事で扱った保守版 1.0.300 がその出発点にあたり、今回はノードと開発キットの両方が、切り替えの時期をまたいで動くための手直しを重ねています。rc.2 から rc.3 までに何が加わったのかを、一次のリリースノートとコードの差分から整理します。
rc.2 から rc.3 までの 8 コミット
GitHub で 2 つのタグを比べると、rc.2(9月17日)から rc.3 までに加わったコミットは 8 件で、うち 2 件はマージのための記録です。中身は次の 6 点です。
- Cardano から Midnight へのブリッジで、受け取り先のアドレスが短すぎる取引を無効として扱う修正
- ノードなどのコンテナイメージからデバッガ gdb を取り除く修正(1.0.300 と同じ安全対策)
- 台帳 8 から分岐したチェーンで、ツールキットが ecdsa: で始まる鍵の種を受け付けるようにする修正
- RPC の通信で遅延を減らす設定(TCP_NODELAY)を入れた Polkadot SDK の派生版への切り替え
- 委員会の情報を返す API がないノードで、委員会の所属を記録しようとしない修正
- コンテナの土台のイメージを更新し、深刻度 critical の unbound の脆弱性を解消
新しい機能はなく、中心はブリッジの入力の検査、運用の安全、依存関係の更新です。rc.2 のリリースノートは、この系列を「最後の正式版は node-1.0.1 で、2.0.0 は正式版を出さなかったため、2.1.0 が新しいメジャー系列の最初のリリースになる」と位置づけていました。rc.3 は、その正式版に向けた詰めの段階にあります。
候補版の中身:台帳 9 と、まだ閉じているブリッジ
rc.3 のリリースページには、2.1.0 系列でこれまでに入った変更がまとめて載っています。柱は台帳 9 への対応で、台帳 8 から 9 へ状態を移す処理をチェーン上で行う変更や、複数ブロックにまたがる移行が失敗したときにチェーンを止めずに「セーフモード」に入る変更が含まれます。
もう一つの大きな要素が、Cardano から Midnight へ資産を移すブリッジです。ブリッジ用の仕組み(パレット)や、利用者の財布から Cardano 側へ移転の取引を出すコマンドが加わっています。ただしリリースノートは、ブリッジはまだ完成しておらず、どの環境でも設定されていないと明記しています。有効にするには、アドレスとデータの起点を設定するガバナンスの操作が別に必要です。
ブリッジの修正の一つには、移転の分類に Cardano の取引のメタデータを使っていたため、リリースノートの表記で「M.R プール」への攻撃を許しうる状態だった、という説明も付いています。ブリッジを開く前の段階で、この種の穴を塞いでいることになります。
1.0.300 は正式版に
2.1.0 へ進む前提として、rc.2 のリリースノートは「チェーンがすでに 1.0.300 のランタイムで動いていること」を挙げていました。その 1.0.300 は、9月26日の記事の執筆時点では GitHub で pre-release の表示が付いたままでしたが、9月29日に確認すると表示が外れ、正式な版として扱われています。
手順としては、まず全バリデータが 1.0.300 に上がり、そのうえで 2.1.0 のハードフォークに進む順序になります。rc.3 のツールキットにも「チェーンの履歴を再生する際に 1.0.300 の版を受け付ける」変更が入っており、ノードと周辺の道具が同じ前提にそろえられています。
compact-js 3.0 rc.2:ハードフォークをまたぐ開発キット
compact-js の rc.2 は、GitHub のリリースページに説明文が付いていません。そこで、9月22日の rc.0 から rc.2 までに取り込まれたプルリクエストを読むと、狙いが見えてきます。
中心にあるのは、ハードフォークの前後で台帳が 2 つ並ぶ期間への備えです。あるプルリクエストは、「ハードフォークの期間には、状態を保つ呼び出しが台帳 8 で実行され、台帳 9 で組み立てられる」ことを挙げ、呼び出しを新しい台帳の側で組み直すための値を外から取り出せるようにしました。別の変更では、台帳の版ごとに用意した窓口を通じて、取引の組み立てと証明を台帳の違いを意識せずに行えるようにしています。
パッケージの依存関係を見ても、台帳 8 用(8.1.2)と台帳 9 用(1.0.0-rc.5 以降)のライブラリを同時に抱えています。アプリを作る側がハードフォークの当日にコードを書き換えなくても済むよう、開発キットの側で 2 つの台帳を橋渡しする設計と読めます。回路の引数と戻り値の型が unknown に崩れていた不具合の修正も含まれています。
次に見るもの
確かめる先は 3 つあります。まず GitHub の midnight-node のリリース一覧で、rc.3 の後に node-2.1.0 の正式版が出るかどうか。次に、Midnight 公式ドキュメントのリリースノートの概要ページで、2.1.0 がどの環境に適用されるかが示されるかどうか。そして midnight-sdk のリリース一覧で、compact-js 3.0.0 の正式版が出るかどうかです。正式版のリリースノートにガバナンスの操作がいつ、どの環境で必要かが書かれれば、ハードフォークの日程が見えてきます。
ことば
- ハードフォーク(台帳 8→9) — チェーンのルールを互換性のない形で切り替えること。今回は Midnight の台帳の版を 8 から 9 へ上げ、状態の移し替えをチェーン上で行う設計になっています。
- リリース候補(rc) — 正式版の直前に出す試験用の版。番号が進むごとに修正が積み重なり、問題がなければ同じ中身が正式版として出ます。
- compact-js — Midnight のスマートコントラクト言語 Compact で書いた契約を、TypeScript から実行・呼び出しするための開発キット。アプリの開発者が直接使う部品です。
一次ソース / 関連リンク
- GitHub:midnight-node リリース node-2.1.0-rc.3(2026-09-28)
https://github.com/midnightntwrk/midnight-node/releases/tag/node-2.1.0-rc.3 - GitHub:node-2.1.0-rc.2 と rc.3 の差分
https://github.com/midnightntwrk/midnight-node/compare/node-2.1.0-rc.2…node-2.1.0-rc.3 - GitHub:midnight-node リリース node-2.1.0-rc.2(2026-09-17)
https://github.com/midnightntwrk/midnight-node/releases/tag/node-2.1.0-rc.2 - GitHub:midnight-node リリース node-1.0.300
https://github.com/midnightntwrk/midnight-node/releases/tag/node-1.0.300 - GitHub:midnight-sdk リリース compact-js-v3.0.0-rc.2(2026-09-28)
https://github.com/midnightntwrk/midnight-sdk/releases/tag/compact-js-v3.0.0-rc.2 - GitHub:midnight-sdk プルリクエスト #405(ハードフォーク期間の呼び出し)
https://github.com/midnightntwrk/midnight-sdk/pull/405 - GitHub:midnight-sdk プルリクエスト #418(台帳の版ごとの窓口)
https://github.com/midnightntwrk/midnight-sdk/pull/418 - Midnight 公式ドキュメント:リリースノート概要
https://docs.midnight.network/relnotes/overview - Midnight ノード 1.0.300、全検証者の更新後にランタイム切替(SIPO.TOKYO・2026年9月26日)
https://sipo.tokyo/signal-20260926-55bcadb5/
