Go 製ノード Dingo を開発する Blink Labs が 10 月 3 日、Haskell で書かれた参照実装の cardano-node 以外で動くブロック生成プールとして、ZW3RK・TSUNA・OTG の 3 つを X で紹介しました。ブロックヘッダーに残る実装の番号をオンチェーンで確かめると、参照実装とは違う番号を記録しているのは ZW3RK と OTG の 2 プールで、TSUNA のブロックにはその番号が見当たりませんでした。
一つの実装の不具合がネットワーク全体を止めないことは、ブロックチェーンを分散させる目的そのものです。その多様性が「誰が言ったか」ではなく「チェーンに何が残っているか」で測れる段階に入りつつあります。この記事では、3 つのプールのブロックを 1 本ずつ確かめた結果と、ステークプール運営者が別実装の採用を考える前に見ておきたい点を整理します。
Blink Labs が挙げた 3 プールと 3 つの実装
Blink Labs の投稿は、次の 3 つの組み合わせを挙げています。
- ZW3RK — cardano-bean (Java)
- TSUNA — Tsunagi (Zig)
- OTG — Dingo (Go)
投稿は「これらは参照実装の Haskell ノード以外のノードを使ってメインネットで稼働しているブロック生成ノードです」と説明し、「ノードの多様性はもう来ている」と結んでいます。
このうち Dingo については、Cardano のハードフォーク準備を担う Intersect の Hard Fork Working Group が 9 月 22 日の議事録で、Preview・Preprod・Musashi・Prime テストネットに加えて Cardano メインネットでもブロックを生成したと記録しています。同じ議事録は、メインネットでブロックを生成している実装を Haskell と Dingo、メインネットでの生成に向かっている途中の実装を Amaru と Gerolamo と整理しており、ノード実装の一覧には TSUNAGI (Zig) や Yano (Java) も名前を連ねています。cardano-bean については、編集部では仕様や配布元を説明した公開資料を確認できませんでした。
ブロックヘッダーの実装番号で確かめる
Cardano のブロックヘッダーには、プロトコルのバージョンを示す「メジャー」と「マイナー」の 2 つの数字が入っています。台帳のルールが参照するのはメジャーだけで、マイナーはブロックの有効性に影響しません。この空いている欄を使って、どの実装がそのブロックを作ったかを記録する慣行が生まれています。
その慣行を規格にしようとしているのが、レビュー中の CIP-203 (Block Producer Identifier Registry) です。草案では、マイナーの下位 8 ビットを実装の識別番号とし、登録簿に Gerolamo = 67、Dingo = 69 を載せています。値 1〜15 は、従来の cardano-node がリリース番号を入れてきた範囲として予約されています。この CIP については、10 月 2 日の Deep Dive「CIP-202と203で読むCardanoの多様性」で詳しく扱いました。
編集部で 3 プールのブロックを、エポック 630 以降について 1 本ずつ確かめた結果は次のとおりです (日本時間 10 月 4 日 1 時 30 分時点・エポック 659 は進行中)。
- ZW3RK — 7 月 22 日 (エポック 644) 以降に生成した 26 ブロックすべてに、マイナー値 67 が入っています。それ以前のブロックは 8 や 0 でした
- OTG — 9 月 16 日 (エポック 655) から 10 月 1 日までに、マイナー値 69 のブロックが 19 本あります。同じ期間には 0 や 1 のブロックも混ざっており、10 月 2 日以降の 3 ブロックはいずれも 1 です
- TSUNA — これまでに生成した 3 ブロック (7 月 21 日・9 月 27 日・9 月 30 日) のマイナー値は 0・0・2 で、識別番号の範囲の値はありませんでした
メインネットの全履歴で 67 と 69 の値を持つブロックを出したのは、ZW3RK と OTG の 2 プールだけでした。
番号は自己申告で、まだ重なりうる
読み方に注意が要るのは ZW3RK です。ZW3RK のブロックに入っている 67 は、CIP-203 草案の登録簿では Gerolamo (TypeScript) の番号です。一方、Blink Labs の投稿は ZW3RK の実装を cardano-bean (Java) としています。ZW3RK が 67 を使い始めたのは 7 月 22 日で、登録簿への Gerolamo の記載 (9 月 21 日付) より前です。また Hard Fork Working Group の議事録は、9 月 22 日の時点で Gerolamo を「メインネットでの生成に向かっている途中」に分類しています。ZW3RK の 67 は Gerolamo とは別の実装が同じ番号を使っている可能性が高い一方、どの実装なのかをチェーンの記録だけで決めることはできません。
そもそもマイナー値は、ブロックを作った側が自分で書き込む値です。ブロック生成者の署名で守られてはいますが、実際に動いているソフトの証明ではありません。登録簿がないと番号が衝突し、多様性を測る物差しとして使えなくなる。CIP-203 が提案の動機に挙げているのは、まさにこの状態です。
TSUNA についても、二つの情報が並んでいます。TSUNAGI の公式サイトのメインネットのページは、メインネットでは読み取り専用のフォロワーとして動かしており、ブロック生成の経路は止めてあると説明しています。メインネットでの生成は別の認定プログラムを経てから、という位置づけです。TSUNA のブロックのマイナー値が従来の cardano-node の範囲にとどまっていることは、この説明と食い違いません。
多様性が分散にもたらすもの
これまで Cardano のブロックは、事実上すべて一つの実装から生まれてきました。その実装に不具合があれば、全プールが同時に同じ影響を受けます。複数の実装が並んで動いていれば、一方の不具合でもう一方は止まらず、チェーンは生成を続けられます。
この安全網は、別実装がどれだけのブロックを担っているかに比例して太くなります。識別番号つきのブロックは、最も多かったエポック 658 でも 2 プール合わせて 15 本でした。同じエポックの全ブロックは 21,383 本なので、割合としてはまだごくわずかです。それでも、テストネットだけでなく本番のチェーンで別実装のブロックが受け入れられ続けていることは、実装どうしの互換性を示す実地の証拠になります。
SPO が採用を判断する前に見る点
委任を受けて運用するプールにとって、別実装への切り替えは慎重に考える必要があります。現時点で各プロジェクト自身が示している位置づけは次のとおりです。
- Dingo の GitHub の説明は、まだ本番運用の準備ができておらず、テストネットと開発用ネットワークでのみ使い、実資金のあるメインネットでは使わないよう警告しています。OTG のような先行例は、開発チームが告知する実地検証の段階と読むのが自然です
- TSUNAGI は公式サイトで、メインネットでのブロック生成を認定の対象外と明記しています (7 月の更新時点の記載)
- Amaru は、Hard Fork Working Group の議事録でブロック生成機能の最小構成プレリリースを 10 月 1 日、ベータ版を 10 月 29 日と予定しています
まずはリレーや観測用のノードとして別実装を併走させ、参照実装と同じチェーンを追えるかを確かめる。ブロック生成ノードを任せるのはその後、という順番が現実的です。
次に見るもの
確かめどころは四つあります。一つ目は CIP-203 のプルリクエスト (cardano-foundation/CIPs #1276) で、67 の番号がどう扱われるか。二つ目は OTG のブロックで、エポック 659 以降に 69 の値が戻るか。三つ目は 10 月 29 日に予定されている Amaru のベータ版で、メインネットに Amaru の識別番号が現れるかです。四つ目は 11 月 12〜13 日にロンドンで予定されているノード多様性ワークショップで、議事録はそこで実装間の適合性を主要な論点にするとしています。二つ目と三つ目は、エクスプローラでプールのブロック一覧を開けば誰でも同じ値を確かめられます。
ことば
- 参照実装 (cardano-node) — Haskell で書かれた Cardano の標準ノード。これまでメインネットのほぼすべてのブロックはこの実装から生まれており、別実装の正しさもこの実装と同じチェーンを追えるかで確かめられます。
- マイナー値 (protocol_version の minor) — ブロックヘッダーにある数字で、台帳のルールは参照しません。次の Dijkstra 時代のヘッダーでは「自己申告のソフトウェアタグ」という名前に変わる予定で、実装の識別に使う流れが仕様の側でも明確になります。
- CIP-203 — マイナー値を「実装番号 8 ビット + 実装ごとの追加情報 22 ビット + 方式の版 2 ビット」に分け、番号の登録簿を設ける提案。ハードフォーク不要で、各実装が任意に採用します。
一次ソース / 関連リンク
- Blink Labs の投稿 (2026 年 10 月 3 日)
https://x.com/blinklabs_io/status/2106333984779043237 - Intersect Hard Fork Working Group 議事録 (2026 年 9 月 22 日)
https://cardanoupgrades.docs.intersectmbo.org/general/hard-fork-working-group-meeting-minutes/22nd-september-2026 - CIP-203 Block Producer Identifier Registry (レビュー中のプルリクエスト)
https://github.com/cardano-foundation/CIPs/pull/1276 - Dingo (Blink Labs・GitHub)
https://github.com/blinklabs-io/dingo - TSUNAGI 公式サイト「On Mainnet」
https://tsunagi.tech/mainnet/ - ZW3RK のプールページ (Cardanoscan)
https://cardanoscan.io/pool/pool1utqhj9g53a5cwg7tyd8neky7jvjlgzuf470adc0e69cp5uuquzx - TSUNA のプールページ (Cardanoscan)
https://cardanoscan.io/pool/pool1hnmcevsa69k88nh4d6ud5qyykwmgzrg6crju79zsv2uu65mkgr8 - OTG のプールページ (Cardanoscan)
https://cardanoscan.io/pool/pool1eqj3dzpkcklc2r0v8pt8adrhrshq8m4zsev072ga7a52uj5wv5c
