リリースノート - v0.70.8
v0.70.8
Section titled “v0.70.8”タイトル: 検証、同期、ネットワークの安全性、APIの信頼性を改善
日付: Not provided
バージョン: v0.70.8
リリース: v0.70.8
このリリースでは、Dingoノードとライブラリ利用者向けに、ブロックとスナップショットの検証、peerの安全性、チェーン同期、API入力処理、復旧動作を改善します。
推奨ネットワーク互換性 ⚠️
Section titled “推奨ネットワーク互換性 ⚠️”| Network | Compatible |
|---|---|
| mainnet | ⛔ |
| preprod-testnet | ✅ |
| preview-testnet | ✅ |
| musashi | ✅ |
-
強化: 受信ブロックの検証でByronブロック本文のproofとgenesisの
maxHeaderSizeおよびmaxBlockSizeを確認し、wire CBORを持たない構造化ブロックは引き続き受け入れるようにしました。 -
同期: マニフェストを公開する前にスナップショットのバックアップファイルと保存先ディレクトリを同期し、復元時に不完全なスナップショットを拒否するようにしました。
-
適用: relay sourceと再接続をまたいで、各
(slot, issuer)に対するLeios announcementの2つの異なる値の上限を適用し、重複announcementによる上限回避を防ぎました。 -
フィルタリング: 双方向のpeer sharingで、routableでないアドレスまたはport
0のアドレスを除外し、IPv6 ORCHIDv2も対象にしました。 -
拒否: UTxO-RPCの
WaitForTx参照が正確に32バイトでない場合、後続処理の前にInvalidArgumentを返すようにしました。 -
安定化: peerが同じtipを通知し、保持履歴に矛盾がない場合のチェーン選択で、peer間の不要な切り替えを防ぎました。
-
保持: ノード終了までledgerが最初に報告した致命的エラーを保持し、呼び出し元が元のエラーを受け取れるようにしました。
-
維持: トランザクション拒否で使用するera値を完全な
uint16として保持し、切り詰めないようにしました。 -
更新: rollback時に追跡中のChainSync client stateをアトミックに更新し、削除済みclientを再作成しないようにしました。
-
秘匿: token registry同期のログとエラー文字列からcredentialを秘匿し、エラーのunwrappingは維持しました。
-
更新: ネストされたGov Lens exampleの依存関係を
golang.org/x/text v0.41.0およびgolang.org/x/sync v0.22.0に更新しました。 -
検証:
Node.Newの設定を、呼び出し元が所有するPrometheus registryを変更する前に検証するようにしました。 -
リセット: SQLite conformance backendをインプレースでリセットし、migration stateを保持しながらblobを消去するようにしました。
-
拒否: transactionのデコード前に、予算を超えたTxSubmission replyを拒否するようにしました。
-
制限: LeiosFetchのvote ID requestを1 requestあたり1,000件に制限し、これを超えるrequestではbatch処理を必要とするようにしました。
-
防止: DRep expiryの算術オーバーフローを防ぎ、保存済みの値を変更しないようにしました。
-
強化: CBOR decoding、SQL range、blob timestamp、ブロック検証を強化し、UTxO-by-address APIの
maxResultsに正の値を要求し、transaction panic errorを標準化しました。 -
拒否: 不正なMesh construction elementと
uint32を超えるinput indexを拒否するようにしました。 -
固定: 中断されたsyncまたはimportの再開時にMithril artifact identityを固定し、秘匿されたdigest mismatchの診断を改善しました。
-
上限設定: UTxO-RPCの
FollowTipとWatchTxのintersection listを設定されたMaxBlockRefsで制限し、既定値を100としました。 -
抑制: Koios account parity checkpointの保持を4 epochに制限し、zero-reward summaryを保持し、pruning failureを致命的でないものとして扱うようにしました。
-
解決: Mithril anchorより前にある過去のpool VRF keyの欠落を、bootstrap専用ケースに限ってlive registrationから解決するようにしました。
-
防止: genesis selection stateを一貫した1つのsnapshotとして公開し、同期処理中にselection stateでブロックしないようにして、deadlockによるチェーン同期の恒久的な停止を防ぎました。
-
改良: 評価ごとにPlutus cost model dataを分離し、rootとAntithesis moduleでの同時validation conflictを防ぎました。
-
初期化: decoded Ouroboros blockとheaderを共有cacheへ公開する前にhashを初期化し、対応するすべてのdecode経路で初回同時利用時のhash不整合を防ぎました。
-
更新: leader electionのcancelとrestartで各generationの終了を待ってからstateを再利用するようにし、
StopとStartの相互作用を安全にしました。 -
修正: immutable chunk boundaryとtrailing empty chunkの扱いを修正し、
GetBlockとtruncationでslotとhashの完全一致を検証し、partial truncation errorに削除件数を含めました。 -
一致: UTxO-RPCの
MintsAsset結果をsigned nonzeroのmintおよびburn quantityと一致させ、policy-only patternを含めて、transferが一致しないようにしました。 -
変更: Mesh
/network/statusのSyncedを、optionalMeshSyncProgressが正確に1を報告した場合だけtrueにしました。progressがmissing、unknown、またはbehindの場合はfalseになり、このstatusはreadiness checkではありません。 -
直列化:
Node.Stopを実行中のRestore、Truncate、Snapshot操作と1つのshutdown deadlineの下で直列化し、早期cancel、lifecycle gateの取得を待ち、lifecycle-gate timeout後も再試行できるshutdownを実現しました。 -
検証: AWS/GCS reverse-key spool frameの長さをallocation前に検証し、不正なframeを処理せずに拒否してstorage reliabilityを改善しました。
-
安定化: Koios parity cache writerを単一SQLite connectionで直列化し、legacy schema migration checkを修正して、
SQLITE_BUSYfailureとmigration hangを防ぎました。
完全な変更履歴: v0.70.7…v0.70.8
Docs authored by Doc Holiday