Intersect が10月28日、cardano-node 11.2.0 を GitHub で先行版(pre-release)として公開しました。いちばん大きな変更は設定ファイルの読み方で、各ネットワーク向けに配布される設定ファイルが新しい形式に切り替わり、11.2 より前のノードではそれを読めなくなります。
cardano-node 11.2.0 リリースノート(GitHub・IntersectMBO)(GitHub)
リリースノートは「メインネットでの利用はまだ推奨しない」と明記しています。今すぐ入れ替える版ではありませんが、正式版が出たときに SPO・ウォレット・インデクサーのそれぞれで何が必要になるかは、この先行版の段階でほぼ読み取れます。ノードを動かす側の目線で、変更点を順に整理します。
配布の設定ファイルが、古いノードでは読めなくなります
11.2.0 から、ノードは設定を cardano-config というライブラリを通して読みます。これまでの平らな(flat)形式の設定ファイルはそのまま使えます。そこに、$schema・Version・MinNodeVersion・Configuration の4つの欄で中身を包む「エンベロープ形式」が加わり、こちらはスキーマで検証されます。
注意が要るのは配布物の側です。リリースノートの「破壊的な変更」によると、公開されている mainnet-config.json / .yaml をはじめ各ネットワークの設定ファイルはエンベロープ形式になり、11.2 より前のノードは読めません。mainnet-config.yaml からは LastKnownBlockVersion-* の項目も外れました。新しい設定ファイルだけを先に取り込み、ノード本体は古いまま、という順番で更新すると起動できなくなる、ということです。
移行の道具も用意されています。cardano-node config migrate は平らな形式をエンベロープ形式へ変換し、config schema は形式の説明を出し、config resolve は設定を確かめます。平らな形式を読んだときに新旧2つの読み取りで食い違いがあれば、起動は止めずに警告として報告します。
Docker で動かしている場合は、もう一つ確かめる点があります。CARDANO_CONFIG_JSON_MERGE は単純な深いマージなので、平らな形式に合わせて書いたマージ用の記述は、エンベロープ形式の設定に対して何も起こさずに素通りします。キーは Configuration.<セクション> の下に入れ直す必要があります。
ウォレットやインデクサーの側にも及ぶ変更
ノードと、ウォレットやインデクサーなどの手元のプログラムとの通信(node-to-client)でも、古い版の打ち切りがあります。NodeToClientV_16 から NodeToClientV_22 までが外れ、それらでしか届かなかった問い合わせ GetProposedPParamsUpdates・GetStakeDistribution・GetPoolDistr も削除されました。後の2つには、それぞれ GetStakeDistribution2 と GetPoolDistr2 という後継があります。
リリースノートによると、NodeToClientV_23 はノード 10.7.0 から同梱されています。新しい版を前提に作り直されていない道具は、11.2 のノードにつながらなくなる可能性があります。自分でインデクサーや監視の道具を動かしている SPO は、使っているライブラリの版を先に確かめておくのが安全です。
ログを読む側への変更もあります。メモリプールのログの "tx" 欄が、取引そのものを表すバイナリ形式(CBOR)の16進表記になり、委任アカウントの登録重複の失敗名が DelegAccountAlreadyRegistered に変わり、新しいログの名前空間がいくつか加わりました。ログを機械で集計している場合は、集計の条件が合うかを見直すことになります。
gRPC は TCP でも待ち受けへ、Dijkstra の下地も続く
ノードが自前で返す gRPC のインターフェースは、10.7.0 の実験版で初めて入ったものです。これまでは unix ソケットだけで待ち受けていましたが、11.2.0 では TCP のアドレスとポートでも待ち受けられるようになりました。暗号化なしの HTTP/2(h2c)と TLS のどちらでも動きます。メモリプールを読む ReadMempool・見張る WatchMempool、時代(era)の区切りを返す ReadEraSummary の3つの呼び出しも加わりました。
次の時代 Dijkstra への準備も進んでいます。cardano-cli はサブトランザクションとガード・クレデンシャルに対応し、cardano-submit-api は Dijkstra の取引を受け付けるようになりました。CIP-0168 で加わる Plutus の組み込み関数には、手数料の計算に使うコストモデルが付きました。Leios と Peras の下地も入っていますが、どちらも既定では無効です。
SPO の運用に触れる細かな変更
台帳のスナップショットは、既定で 40 * k スロット(k はチェーンの安全性を決める定数)ごと、ずらしなしで取られるようになりました。メインネットではおよそ1日1回です。起動時には実際に使うスナップショットの方針をログに出し、ネットワークのスロットの長さから見て不自然な設定なら警告します。
ブロック生成を止めているあいだのスロットは、slotsMissed_int に数えられなくなりました。生成を再開したあとの最初のリーダー判定から、新しく数え直します。生成が有効なあいだに本当に空いたスロットは、これまでどおり数えます。
BLS 鍵まわりでは、cardano-cli の node issue-pop-BLS と node key-hash-BLS が削除されました。所有の証明(proof-of-possession)は、stake-pool registration-certificate に --bls-signing-key-file を渡すと内部で組み込まれます。NixOS のサービス設定では、11.1 で入った blsKeys が単数の blsKey に置き換わりました。x86_64-linux のアーカイブに同梱される Mithril の署名プログラムは、signer 1.2.5 に上がっています。
正式版までに、空欄が埋まるか
この先行版のリリースノートには、まだ空欄が残っています。「既知の問題」、ベンチマークの報告、システムテストの結果は、いずれも記入待ちの欄のままです。承認の欄では、Intersect の技術運営委員会・プロダクト委員会・サイト信頼性エンジニア・リリースエンジニアが承認済みで、テストエンジニアと性能エンジニアは「N/A」です。
リリースノートの「System Testing」欄は 11.2.0 のタグのテスト結果ページへの案内を予定していますが、10月29日の時点でそのページはまだ公開されていません。次に確かめる点は、GitHub のリリースノートでこの欄とベンチマークの欄が埋まるか、そして「pre-release」の表記が外れるかです。正式版になった時点で、新しい設定ファイルを入れる前にノード本体を 11.2 へ上げる、という順番が SPO の作業の中心になります。
ことば
- エンベロープ形式 — 設定の中身を
Configurationの下に入れ、版や必要なノードの最低版を外側の欄に書く新しい書式。どのノードで読める設定なのかを、ファイル自体が名乗れるようになります。 - node-to-client(NtC) — 同じマシンのノードと、ウォレットやインデクサーが話すための手順。版を古い順に打ち切ることで、ノード側の保守の負担を減らしています。
- gRPC — Google が作った、プログラム同士が呼び出し合うための通信方式。TCP で待ち受けられると、別のマシンからもノードの情報を読めるようになります。
一次ソース / 関連リンク

