リリースノート - v0.46.0
v0.46.0
Section titled “v0.46.0”タイトル: 信頼性の高い処理、ログ制御、各プラットフォームのインストーラー
バージョン: v0.46.0
比較: v0.45.0…v0.46.0
このリリースでは、プラグインとパイプラインの動作、ログ設定、イベント処理、各プラットフォームのインストーラー、トレイの信頼性、ガバナンスデータ処理、関連ドキュメントを改善します。
✨ ハイライト
Section titled “✨ ハイライト”-
設定の優先順位と保存: 明示的な CLI フラグが最も優先され、次に環境変数、YAML 設定、デフォルト値の順に適用されます。Adder はアトミックな設定保存を直列化し、並行更新時により安全に同期します。
-
チェーンロールバック通知:
Chain rollbacks設定とウィザードのコントロールで、Blocks minted通知とは独立してロールバック通知を管理できるようになりました。 -
アプリケーションアーキテクチャ: アーキテクチャガイダンスで、処理パイプライン、プラグインモデル、設定の優先順位、並行処理、シャットダウン動作、トレイと API の連携について説明します。
-
Cardano プールフィルタリング: プールフィルターが SPO の投票手続きに一致するようになり、stake credential がない場合に一致したり安全でないアクセスを発生させたりしなくなりました。
-
運用ログ: 構造化フィールドとコンポーネント単位のロガーにより、起動、チェーン同期、push、Telegram、webhook の出力を解釈しやすくなりました。Adderはログに含まれる機密性の高いFCMトークン、webhookのURLやペイロードの出力を減らします。
-
プラグインオプションの解析: Cardano フィルター、イベントタイプ、ChainSync の交差点に指定するカンマ区切り値で、前後の空白と空の項目を無視するようになりました。これにより YAML のブロック形式リストでも設定値が正しく一致し、空の交差点値は
--input-chainsync-intersect-tipで設定された動作に従います。 -
Telegram 配信の再試行: Telegram のロングポーリングがレート制限を受けた場合、Telegram が示す
retry_afterの時間を待ってから再試行するため、早すぎる再試行を減らします。 -
API ドキュメントのパス: API クライアントは
/ping、/healthcheck、/eventsにルートからアクセスでき、/v1/fcmと/v1/qrcodeは/v1配下に残ります。Swagger は/swagger/で利用できます。 -
FCM トークン入力: API リクエストは処理前に
fcmTokenを検証します。 -
Telegram multipart アップロード: Telegram 出力は HTTP/2 GOAWAY 応答を再試行でき、フィールドのない呼び出しでは空の multipart ボディを抑制し、リクエストフィールドをより正確に数えます。バッファリングされたアップロードでは、より多くのメモリを使用する場合があります。
-
管理対象プラグインのライフサイクル: カスタム Go プラグインの作成者は
plugin.ManagedPluginライフサイクル契約と共有実装plugin.Baseに移行する必要があります。従来のライフサイクル接続は機能しなくなります。 -
パイプラインの処理順序: Adder はプラグイン間の接続を検証し、コンシューマーをプロデューサーより先に起動し、設定されたフィルター順序を維持して、コンポーネントを逆順に停止します。
-
プラグインの致命的な失敗: 致命的な失敗が発生すると、パイプラインがすぐに停止し、パイプラインの状態から失敗したコンポーネントとエラーを確認できます。
-
キャンセル中の ChainSync 再接続: パイプラインの停止時に、ChainSync は接続ハンドシェイクと再接続の試行を終了します。
-
シャットダウン中の UTxORPC 再接続: パイプラインの停止時に、UTxORPC は再試行間の待機を終了します。
-
キャンセル中の Push 配信: パイプラインの停止時に、Push 通知のトークン取得と FCM 送信を停止します。
-
キャンセル後の webhook 再試行: パイプラインの停止時に webhook 配信の再試行を終了し、キャンセルを配信エラーとして報告しません。
-
選択したネットワークに対する ChainSync のエポック: ChainSync の状態が、設定されたネットワークの era 境界からエポック番号を計算するようになりました。
-
失敗した WebSocket アップグレード: クライアントが WebSocket アップグレードを要求した場合、イベントストリーミングは SSE に暗黙に切り替えず、WebSocket エラーを返します。
-
従来のログ設定: Adder は
--logging-levelと関連するトップレベルのログ設定を受け付けません。Adder は選択した出力のログをoutput.log.levelまたは--output-log-levelで制御します。
⚠️ イベント互換性
Section titled “⚠️ イベント互換性”-
生成 API 連携: 生成された OpenAPI モジュールを
github.com/blinklabs-io/adder/openapiからインポートできるようになりました。 -
webhook イベント処理: 形式不正または未知のイベントが webhook 出力で panic を引き起こさなくなりました。Adder はエラーをプラグインエラーチャネルに渡し、終了と再試行を安全に調整します。
-
ガバナンスのデポジット値: ガバナンス証明書のデポジットが、符号付き64ビット整数に制限されず、符号なし64ビット値の全範囲を保持するようになりました。
-
トレイプロセスの蓄積: トレイから起動したフォルダー、URL、インストーラーが非同期で完了するようになり、子プロセスが残り続けることを防ぎます。
-
Windows トレイの動作: トレイが Windows のログファイルに診断情報を記録し、起動時の panic から復旧し、セッションごとに1つのインスタンスだけを許可します。サービス登録、プロセスの識別、再起動もより確実に管理します。
-
トレイのイベントと通知の動作: 初回のイベント接続ではバッファー済みイベントを再生せずライブイベントを受信でき、再接続時には再生を復元します。エクスプローラーのリンクは選択したネットワーク上の正しいトランザクションまたはブロックを開き、追跡中のプールと DRep には該当する通知だけを追跡中の DRep のガバナンス投票とともに表示します。
-
FreeBSD リリースアーティファクトのトレイ: FreeBSD の
amd64とarm64パッケージには、トレイコンポーネントが含まれなくなりました。 -
トレイのダウンロードにおける
crypto/x509の脆弱性: ビルドで Go1.27.3を使用し、Go1.26.10を要求するようになりました。
📚 ドキュメント
Section titled “📚 ドキュメント”-
ライブラリ例: 公開ドキュメントサイトで、製品ガイダンスとともに Adder ライブラリの例を参照できるようになりました。
-
ガバナンスイベントリファレンス:
input.governanceのフィールド、サポートされるアクションタイプ、ネストされた構造、フィルタリング例をドキュメントで説明し、スキーマ例を出力されるイベントデータに合わせました。 -
Dingo パイプライン検証: Docker と macOS のワークフローは、Cardano のプレビューネットワーク上で共有接続を使って Adder と Dingo を接続し、Adder がチェーンの最新位置から再開することを検証します。ローカル実行ではコンテナログの増加も制限します。
-
トラブルシューティングガイド: ドキュメントで接続、設定、フィルター、FCM、webhook の診断、一般的なエラーメッセージ、Go 1.26 の
GOEXPERIMENT=goroutineleakprofileを使用した goroutine リークのプロファイリングを説明します。 -
フィルターとガバナンスの例: README で
--filter-address、--filter-pool、--filter-drepと環境変数および設定キーの対応を示し、カンマ区切り値と AND/OR の動作を説明します。また、stake アドレスと payment アドレス、bech32 と 16 進数の DRep 識別子に対するガバナンスイベントの一致規則を記載します。
Docs authored by Doc Holiday