Tapyrus Core v0.7.2リリース
Tapyrus Core v0.7.2をリリースしました。
このリリースは、セキュリティ監査で特定された脆弱性への対応と、OP_COLORの取り扱いに関するコンセンサスの変更を含む重要なアップデートです。
主な変更点
セキュリティ修正
Tapyrus Coreのセキュリティ監査で特定された以下の脆弱性を修正しました:
- 攻撃者が制御可能なブロック高が集約鍵の選択に影響を与えるCP2SHの脆弱性を修正(#411)
- NFTおよび再発行不可トークンの一意性をグローバルに保証するためのトークンリストを導入(#412)
- TPCのお釣り出力がない場合に手数料を正しく計算するようfeebumperを強化(#413)
testmempoolacceptがパッケージトランザクションを送信せずテストのみ行うよう変更、MarkBlockAsReceivedでのmapBlocksInFlightのリーク修正、トークンバケットをピアごとに分離(#418)- PSBTのデシリアライズ時にnon-witness-UTXOの境界チェックを実施(
finalizepsbt、walletprocesspsbt、combinepsbtなどに適用)(#420) - xfieldローテーションで非圧縮の集約公開鍵が受け入れられる問題、
MarkBlockAsReceivedが1つのピアのエントリしか削除しない問題、ワーカースレッドでの認証失敗によるRPCプールの飽和などを修正(#423) - RPCタイムアウトの10分上限がtimeout <= 0の場合にしか機能しない問題、
persistmempoolパラメータ設定時にメモリプールの永続化が暗黙的に無効になる問題などを修正(#425)
プロトコルの改善
- CP2SH colored coinのソフトフォークマネージャーとアクティベーション制御を追加しました(#414)。Chaintope testnet(networkId 1939510133)ではブロック693367でアクティベートされます。
バグ修正
- CVE-2024-52911:
ConnectBlockにおけるuse-after-freeによるクラッシュを修正 - reindex時にブロックファイルが16MBを超えるとファイルが切り詰められる問題を修正(macOSおよびWindowsで発生)(#404)
- reindex時にブロックインデックスの更新がスキップされた場合、genesisブロックのディスク書き込みパスでクラッシュする問題を修正
- xfieldローテーション後に
ReadBlockFromDiskが誤った集約公開鍵を使用する問題を修正 VerifyDBのレベル3検証がグローバル状態を変更してしまう問題を修正- CP2SHのUTXOに対する
listunspentのクラッシュを修正 - colored coinを含むトランザクションに対する
bumpfeeRPCが誤ってcolored coinをバーンしてしまう問題を修正 bad-txns-premature-spend-of-coinbaseで正直なリレーノードがBANされてしまう問題を修正
アップグレード方法
このリリースにはセキュリティ修正とプロトコルの改善が含まれるため、すべての既存ノードを最新リリースにアップグレードすることを推奨します。
- Testnetノード: getting_startedの手順に従って新しいv0.7.2ノードを起動してください
- プライベートネットワーク: 古いノードをシャットダウンし、完全に停止したことを確認してから新しいノードを起動してください
カスタムOP_COLORスクリプトに関する警告
Tapyrus Core v0.7.1までは、<COLOR identifier> OP_COLORパターンを持つ任意のスクリプトが許可されていました。v0.7.2からは、OP_COLORを含むスクリプトはCP2PKHとCP2SHのみが受け入れられ、それ以外の任意のスクリプトは拒否されます。
カスタムOP_COLORスクリプトを含むトランザクションがブロックチェーン上に存在するネットワークでは、v0.7.2へのアップグレード後にブロックが拒否されます。 このようなネットワークでは、以下の手順を含む慎重なアップグレード計画が必要です:
- UTXOセットおよびトランザクション履歴からカスタム
OP_COLORスクリプトを持つトランザクションをすべて特定する - CP2PKHまたはCP2SHスクリプトのみを使用した代替トランザクションを作成する
- スクリプトの変更はトランザクションIDおよびブロックハッシュの変更を伴うため、最初に拒否されるブロック以降の完全なブロックチェーンの再編成が必要になる
アップグレード後にトランザクションの欠落がなくUTXOセットが一貫していることを検証できるよう、アップグレード前にUTXOセットとトランザクションリストの監査およびバックアップを行うことを強く推奨します。
なお、この警告はカスタムOP_COLORスクリプトを使用したネットワークにのみ影響します。標準のCP2PKHおよびCP2SH colored coinスクリプトのみを使用しているネットワークは、このコンセンサス変更の影響を受けません。
詳細はcolored_coin.mdを参照してください。
互換性
- v0.5.0、v0.5.1、v0.5.2、v0.6.1、v0.7.0、v0.7.1で作成されたブロックチェーンはv0.7.2と互換性があります
- v0.5.0より前のバージョンで作成されたブロックチェーンは、ブロックヘッダーにxfieldがないため互換性がありません
- サポートプラットフォーム: Linux、macOS、Windows(x86_64およびarm64/aarch64)
ダウングレードについて
v0.7.2は多くのセキュリティ修正とより厳格なコンセンサスの適用を含むリリースであるため、アップグレード後に古いバージョンへ戻すことは推奨されません。やむを得ない理由でv0.7.1へ戻す場合、v0.7.2へのアップグレード後に新しいCP2SHトランザクションがノード/ブロックチェーンに追加されていなければ問題ありません。また、v0.5.*またはv0.6.0へのダウングレードは、ネットワークでxfieldの変更が行われていない場合に限り可能です。