ADAMANT Node v0.10.2はノードの活性、高速なリカバリ、安全なデータベース障害処理、充実した観測API、効率的なクライアントサブスクリプションに注力しています。アップグレードは推奨されますが、ネットワーク互換性のために必須ではありません。本リリースにはコンセンサスフォークは含まれず、ブロックやトランザクションのシリアライゼーション、署名、デリゲートの順序、報酬、手数料、有効化高さ、スロットタイミング、決定論的リプレイは一切変更されません。
同期リカバリ
同期パイプラインにおけるコールバックやデータベース障害により、ノードが同期中と永久に報告しながら進捗がない状態に陥る可能性がありました。その状態ではライブブロックを拒否し、別の同期を開始せず、手動での再起動が必要でした。v0.10.2では、5分間新しいブロックが適用されていない同期実行を検出する進捗ベースのウォッチドッグを導入しました。停止した実行は実行スコープの停止シグナルにより中止され、中止シグナル後に新しい状態変更は開始されず、ローダーが同期状態を解放する前に進行中のブロック/アカウント処理がドレインされます。拒否されたPostgreSQLクエリは、コールバックチェーンをサイレントに停止させるのではなく、ブロック検証、ブロックローディング、起動時のメモリテーブル更新を通じて伝播するようになりました。これらは活性とエラー伝播の変更のみであり、どのブロックが有効であるかを変更するものではありません。
永続化チェックポイント
ADAMANTはコンセンサス由来の状態をmem_*テーブルに保持します。これらのミラーが更新されている間にプロセスが中断された場合、ノードは正規ブロックからそれらを再構築する必要があります。v0.10.2では、派生メモリ状態用に3つのローテーティングチェックポイントスロットを追加しました。各チェックポイントはブロック高さ/ID、ラウンド、nethash、スキーマバージョン、ステータス、正規SHA-256ダイジェストを記録します。起動時はメタデータ、ダイジェスト、チェーン参照、ネットワーク、状態不変量がバリデーションを通過したチェックポイントのみを受け入れます。有効なチェックポイントが復元され、それ以降のブロックのみがリプレイされます。バリデーションや部分リプレイの失敗は、既存の完全決定論的リビルドにフォールバックします。未確認ジャンクションテーブルはチェックポイントされず、確認済み状態から再構築されます。正規ブロックと決定論的リプレイが真実の情報源であり、チェックポイントはローカルリカバリキャッシュに過ぎず、チェーン状態を再定義することはできません。
REST APIの改善
GET /api/accounts/topがすべてのノードで一貫して利用可能になり、決定論的なbalance DESC, address ASC順序、ページネーション、isDelegateフィルター、カウントメタデータ、limit=0のカウントのみリクエストに対応しました。
デリゲートAPIのいくつかのバグを修正しました。GET /api/delegates/getは再度デリゲートの実際のランク/レートと正しいアウトサイダー生産性を報告します。GET /api/delegates/votersはアドレスフィルターを失って全アカウントを返すことがなくなりました。GET /api/delegates/getNextForgersはラウンド境界で次のブロック高さを使用し、チェーンティップが存在する前に安定したローディングエラーを報告します。
ステータスおよびデリゲートAPIは、アクティブなconsensusCodeName、デフォルトおよびランタイムオーバーライド後の有効なコンセンサス有効化スケジュール、完全なブロック報酬マイルストーンスケジュール、各デリゲートの生涯forged量をbase-10整数文字列として公開するようになりました。これにより、重複したハードコードされたスケジュールへの依存が軽減され、コンセンサス動作を変更せずにノードの有効な設定が公開されます。
GET /api/blocksはnumberOfTransactions=0を尊重するようになりました。(text_generatorPublicKey, height DESC)上の新しい複合B-treeインデックスにより、不明なジェネレーターとデフォルト順序の組み合わせによる高コストなフルテーブルフィルタリングパスを防止します。レスポンス契約は変更されていません。大規模なデータベースでは、オペレーターは初回起動時にインデックスマイグレーションのための時間とディスク容量を確保する必要があります。
Socket.IOブロックおよびバランスイベント
サービスはコンパクトなnewBlockイベントおよびbalance、unconfirmedBalanceまたはその両方のbalances/changeイベントをサブスクライブできるようになりました。ノードは専用のサブスクリプションインデックスを維持し、無関係なソケットがスキャンされないようにします。バランス読み取りはブロック適用/ロールバック周りでバッチ処理され、イベント公開の失敗は状態変更から分離されます。これらのイベントはベストエフォートかつ非永続的です。クライアントは再接続後にサブスクリプションを復元し、重要な状態にはRESTによる整合性確認を使用する必要があります。
依存関係と監査のメンテナンス
ランタイムおよび開発依存関係は現在のメジャーバージョン内で更新されました。未使用の直接npmランタイム依存関係とそのバンドルされたサブツリーは削除され、狭い互換性のあるGrunt/js-yamlオーバーライドが追加されました。検証済み監査ベースラインは4件の moderate と1件の high の検出から、moderate、high、critical の検出ゼロに変更されました。暗号プロトコル、署名、ニーモニック、ピアハンドシェイク、トランザクション検証の動作は変更されていません。
オペレーター向け注意事項
Node.js 22.13.0以降を引き続き使用してください。通常の手順でデータベースをバックアップし、ノードをグレースフルに停止し、Cleaned up successfullyを待ちます。初回のv0.10.2起動でマイグレーションとチェックポイント/インデックス作成が完了するまで待ちます。3つのローテーティング派生状態チェックポイントスロットのために追加のディスク容量を計画してください。起動後、/api/node/status、同期進捗、ライブブロック処理、およびサービスが使用するREST/Socket.IO機能を検証してください。