リリースノート - v0.202.1
v0.202.1(2026年8月27日)
Section titled “v0.202.1(2026年8月27日)”タイトル: Byron の信頼ルート検証とデコードの安全性を改善
日付: 2026年8月27日
バージョン: v0.202.1
このリリースでは、デコーダーが不正な入力によってパニックすることを防ぎ、説明的なエラーを返すようになりました。また、Byron の信頼ルートとネットワークタイミング設定を使用前に追加検証します。
- 改善 不正な CBOR の処理: 台帳の CBOR デコードとブロック本文の解析で、インデックス参照前にデコード済み配列の形状を検証するようになりました。
ApplyTxError.UnmarshalCBORは、2要素未満のUtxowFailure配列を説明的なエラーで拒否します。OutsideValidityIntervalUtxo.Errorは、具体的なValidityIntervalの値が[]anyであることを確認し、デコード後の長さも検証します。GetTxBodiesは、最小フィールド数を示すインデックス付きエラーを返して空のトランザクション行を拒否しますが、本文のみを含む行は受け入れます。回帰テストで、短いUtxowFailure配列、形式不正なValidityIntervalの形状、空のトランザクション行、本文のみの行を対象にしています。
⚠️ 破壊的変更
Section titled “⚠️ 破壊的変更”- 強化 Byron の信頼ルートとタイミングの検証: Byron ヘッダーは、genesis の信頼ルートが空の場合に安全側に倒れ、
ErrGenesisIssuerSetEmptyを報告するようになりました。ComputeGenesisWindowは(uint64, error)を返し、securityParamがゼロ、activeSlotCoeffが nil または範囲外、あるいはオーバーフローとなる入力を拒否します。NewGenesisSelectorは(*GenesisSelector, error)を返し、不足している genesis ウィンドウを計算するとともに、不一致を拒否します。NewNetworkConfigFromReaderは、securityParam、ActiveSlotCoeff、整数ナノ秒で表せるslotLength、time.Durationの範囲、epochLength、SlotsPerKESPeriod、MaxKESEvolutionsを検証します。SlotDurationは変換結果を表現できない場合にゼロを返し、cbor.Ratの JSON デコードは分母がゼロの場合に拒否します。破壊的変更: 呼び出し側では、ComputeGenesisWindowとNewGenesisSelectorが返すエラーを処理する必要があります。無効な Byron、ネットワーク、genesis の設定は、安全でない値のまま処理を続行せず、安全に失敗するようになりました。
変更内容の比較: v0.202.0…v0.202.1
Docs authored by Doc Holiday