LIVE ADA-- MCAP-- TVL-- STAKE-- EPOCH-- Cardano & Midnight 総合情報ポータル
SIPO
HOME › Signal › midnight-js 5.0.0-rc.4、破壊的変更を7件追加
Signal

midnight-js 5.0.0-rc.4、破壊的変更を7件追加

2026-10-10SIPO #Midnight

Midnight のアプリ開発に使う TypeScript のライブラリ midnight-js は、日本時間 10 月 9 日 20 時 49 分、プレリリースの v5.0.0-rc.4 を GitHub で公開しました。9 月 30 日に rc.0〜rc.3 が続けて出てから 9 日ぶりのリリース候補で、今回だけで 7 件の破壊的変更が加わっています。

midnight-js v5.0.0-rc.4 リリースノート (GitHub)(GitHub)

v5 は、Midnight の台帳 (ledger) が v8 から v9 へ移るハードフォークの前に、アプリ側が乗り換えておくべき版と位置づけられています。リリース候補の段階で破壊的変更がまだ増えていることは、正式版の形が詰めの段階にあることを示しています。何が変わり、いま本番のネットワークで使えるのはどの版なのかを、リリースノートと公式の互換表で整理します。

rc.4 で加わった 7 件の破壊的変更

リリースノートの「BREAKING CHANGES」には、次の 7 件が並んでいます。

  • 設定の置き場所 — MidnightProviders に MidnightConfig を導入し、ネットワーク ID を個別に設定する仕組みを非推奨に (#1435)
  • エラーの型 — ライブラリが投げるエラーを MidnightJsError にまとめる (#1440)
  • ストリームの中身 — コントラクトと残高のストリームが、位置情報の付いたレコードを返すように (#1425)
  • ストリームの供給元 — すべてのコントラクトのストリームを、コントラクトごとの操作フィードから配信するように (#1428)
  • ブロック情報 — queryBlock がブロックのプロトコルバージョンを返すように (#1397)
  • 証明の待ち時間 — dApp コネクタ経由の証明プロバイダでは、proveTxConfig.timeout の指定を受け付けないように (#1451)
  • 内部データの形 — フォーク前の時代 (retained era) のハンドルの配置を保ちつつ、シリアライズしたメンバーの名前を bytes に統一 (#1430)

このうちアプリのコードへの影響が広いのは、最初の設定の変更です。v5 の文書は、これまでの全体設定 setNetworkId() と 1 時間固定の有効期限に代わって、ネットワーク ID と有効期限 (秒) を持つ config をすべてのプロバイダの定義に足すよう求めています。新機能としては、起動時にプロバイダ一式がそろっているかを確かめる createMidnightProviders も加わりました。

不具合修正には、4.x のクライアントが保存した署名鍵を読めるようにする修正 (#1414) や、フォーク前に配備したコントラクトを再コンパイルした成果物でも見つけられるようにする修正 (#1416) が入っています。v4 からの移行と、フォークをまたいだ運用を意識した修正です。

v5 は台帳 v9 のハードフォークの前に乗る版

v5 全体の位置づけは、リポジトリの v5.0.0 の文書に書かれています。

v5.0.0 is the major a dApp must be on before the ledger v8 to v9 hard fork.

文書によると、v5 はオンチェーンのプロトコルの結び付け先を ledger-v8 / onchain-runtime-v3 から ledger-v9 / onchain-runtime-v4 へ移します。旧プロトコルで保存した状態とは互換がなく、署名鍵の表し方も、ただの 16 進数の文字列から { tag, value } の形に変わります。パッケージは ESM 専用になり、Node.js 22.12 以上と TypeScript 5.8 以上が必要です。文書は移行の難しさを「Significant (大きい)」としています。

そのうえで文書は、この移行を済ませれば、フォークをまたぐのに追加のコード変更は要らないと書いています。フォーク前に配備したコントラクトはフォーク後も呼び出せ、境目で呼ぶ新しい API もありません。変わるのはリリースの時期や、何をもって取引の完了とみなすかといった運用の側で、移行ガイドの 14 番目の手順がそれを扱っています。

新機能の柱は、複数のコントラクトにまたがる呼び出しの組み立て・証明・送信 (クロスコントラクト呼び出し) と、コントラクトのイベントを読み出す仕組みです。Midnight 財団の CTO が 10 月 1 日に年内の見込みを示した「v9」のコンポーザビリティと中身が重なりますが、両者の対応関係をリリースノートは直接書いていません。

本番のネットワークは、まだ 4.1.1

開発者がいま確かめておくべきなのは、使える版の線引きです。Midnight の公式ドキュメントの互換表 (10 月 9 日更新) では、Preview・Preprod・メインネットの 3 つのネットワークはいずれも ledger 8 で動いており、対応する midnight-js は 4.1.1 です。ノードは 1.0.400、Compact のツールチェーンは 0.31.1、ウォレット SDK は 1.2.0、証明サーバーは 8.1.3 となっています。

互換表は、ledger 9 を対象にした Compact のツールチェーン 0.34.0 と 0.35.0 でコンパイルしたコントラクトについて、ledger 8 が初期状態を読めないため、これらのネットワークには配備できないと注意しています。npm でも、@midnight-ntwrk/midnight-js-contracts の latest は 4.1.1 のままで、5.0.0-rc.4 は rc のタグで配布されています。

つまり、いまメインネットに出すアプリは 4.1.1 の系統で作り、v5 はハードフォークに備えてテスト環境で試す段階です。10 月 2 日にメインネットでコントラクトの配備が審査なしになった直後でもあり、これから配備するアプリは、配備したその先で v5 への移行を見込んでおく必要があります。

次に見るもの

一つ目は、v5.0.0 の正式版のリリースです。midnight-js の GitHub のリリース一覧で、rc の付かない 5.0.0 が出るかどうかが最初の節目になります。正式版の公開日は、今回読んだ範囲には示されていません。

二つ目は、台帳の v8 から v9 へのハードフォークの日程です。Midnight の公式ドキュメントの互換表が ledger 9 の行と midnight-js 5.x を載せた時点で、ネットワーク側の切り替えが近いと判断できます。アプリを運用しているチームは、それまでに v5 の移行ガイドの手順 14 (フォークをまたぐ運用) を読んでおくと、切り替え当日の判断が楽になります。

ことば

  • midnight-js — Midnight 上のアプリをブラウザや Node.js から動かすための TypeScript のライブラリ群。コントラクトの呼び出し、証明の作成、取引の送信、チェーンのデータの読み出しを担います。v5 で台帳 v9 に対応します。
  • 破壊的変更 — 更新すると既存のコードがそのままでは動かなくなる変更。リリースノートで別枠に書かれ、利用者は移行ガイドに沿ってコードを書き換える必要があります。今回の rc.4 だけで 7 件あります。
  • リリース候補 (rc) — 正式版の直前に、機能をほぼ固めて試してもらうための版。rc の番号が進むあいだは、今回のように破壊的変更が加わることもあります。本番での利用は正式版を待つのが基本です。

一次ソース / 関連リンク

Midnight 公式ドキュメント: 互換表 (Support matrix)(docs.midnight.network)

npm: @midnight-ntwrk/midnight-js-contracts(npmjs.com)

タグ: #Midnight