Blink Labs が Go 言語で開発する Cardano ノード「Dingo」は、10 月 17 日(協定世界時)に v0.85.0 を公開しました。ウォレットや dApp が使う Blockfrost 互換のクエリのうち、これまで「未実装」を返していた操作に一斉に対応し、ガバナンスやエポックの履歴を問い合わせる操作も加わっています。
多くのアプリは Blockfrost という外部の API サービスを通じてチェーンのデータを読んでいます。同じ形の問い合わせに自前のノードが答えられるようになれば、アプリの側は接続先を差し替えるだけで済みます。cardano-node 以外の実装を育てる「ノードの多様性」が、ブロック生成だけでなくアプリの足回りにも広がり始めたリリースです。
「501」を返していた 29 の操作
v0.85.0 の中心は、Blockfrost の仕様(OpenAPI)に沿った 2 本の機能追加です。1 本目は、ウォレットと dApp 向けの操作です。プルリクエストの説明によれば、これまで HTTP 501(未実装)を返していた 29 の操作に処理が入りました。対象は次の 5 分野です。
- ブロック: 前後のブロックへの移動、スロット番号からの検索、含まれる取引や関係するアドレスの一覧
- アドレス: 詳細情報、合計、特定の資産を含む UTxO の一覧
- 資産: 一覧、ポリシー単位の検索、発行と焼却の履歴
- スクリプトとデータム: 一覧、詳細、リディーマー(スクリプトに渡す引数)、参照スクリプトを持つ UTxO
- メモリプール: 取引の一覧と、アドレスごとの検索
対応のきっかけになった課題(issue)には、これらが欠けていたためにクライアントが Dingo を Blockfrost の完全な代わりとして使えなかった、と書かれています。今回の追加は、その穴を埋めるものです。
ガバナンスとプールの履歴も問い合わせ可能に
2 本目は、履歴とガバナンスの操作です。エポックごとのステークや生成ブロック、アカウントの履歴、プールの退役・リレー・委任者・投票、そして憲法委員会の投票、DRep の委任者と投票、ガバナンスアクションの詳細や投票まで、Blockfrost の仕様 0.1.93 にある操作が加わりました。
そのために、API 用の保存モードでは一部のデータを以前より長く残すように変わっています。ノードが持っていない古い履歴を聞かれた場合は、空の一覧や途中までの一覧ではなく「保持していない」(404)と答える設計です。空の答えを「該当なし」と取り違えないための作り方といえます。
ドキュメントによれば、これらのアプリ向け API は保存モードを api にしたときに使え、Blockfrost 互換の API は既定でポート 3000 で待ち受けます。
Midnight の認証トークンと、ブロック生成の判定
v0.85.0 には、Midnight 関連の修正も入りました。Dingo の Midnight 用インデクサーは、認証トークンを資産名だけで照合していたため、別のポリシーで発行された同じ名前のトークンでも条件を満たしてしまう状態でした。今回から、ポリシー ID と資産名を必ず組で設定する必要があり、資産名だけを設定した構成は起動時にエラーになります。プルリクエストには、ネットワークの既定値では資産名を設定していないことも書かれています。
このほか、チェーン選択で keepalive のタイムアウトを守るようにした修正や、起動時のログから秘密の引数を伏せる修正が含まれます。
前日の v0.84.0 では、ブロック生成者に選ばれるかどうかの判定を、理想的な実数で引いた境界から、Cardano が使う有限精度の判定式(プルリクエストでは「E34」と表記)に切り替えました。cardano-node の丸めた計算と Dingo の判定が食い違わないようにするための変更で、保存済みのスケジュールは計算し直されます。
メインネットでのブロック生成はまだ先
Dingo の README は現在も、メインネットでのブロック生成にはまだ使えないと明記しています。使ってよいのはテストネット(preview・preprod・musashi)と開発用ネットワークです。10 月 15 日の記事で取り上げた v0.79.0〜v0.83.0 の 10 本に続き、この 1 週間でさらに版を重ねたことになります。
SPO にとって直接の作業が発生するリリースではありません。一方で、Blockfrost 互換の API を自分のノードで出せるようになると、dApp を運営する側は外部サービスに頼らない選択肢を持てます。次に確かめたいのは、11 月 12〜13 日にロンドンで開かれる Node Diversity Workshop で、cardano-node 以外の実装の現状がどう共有されるかです。リリースそのものは、GitHub の Dingo リリースページで追えます。
ことば
- Dingo — Blink Labs が Go 言語で書いている Cardano ノード。cardano-node と同じ取引を同じように検証できるかを試験しながら、毎日のように版を重ねています。
- Blockfrost — 多くのウォレットや dApp がチェーンのデータを読むのに使う API サービス。仕様が公開されているため、同じ形で答える自前の実装を用意すれば、接続先を差し替えるだけで移れます。
- HTTP 501 — 「その操作はまだ実装されていない」を表す応答。今回の 29 操作は、これまで Dingo に問い合わせてもこの応答が返っていました。
一次ソース / 関連リンク
Dingo v0.85.0 リリースノート(GitHub)(GitHub)
Dingo v0.84.0 リリースノート(GitHub)(GitHub)
Dingo APIs and Archive Services(Blink Labs ドキュメント)(Blink Labs)

Intersect Weekly Update #133(Node Diversity Workshop の告知を含む)
intersectmbo.org
