Tapyrus Core v0.6.1リリース
Tapyrus Core v0.6.1をリリースしました。
主な変更点
ブロックサイズの動的な変更をサポート
このリリースでは、ブロックサイズを動的に変更する機能が導入されました。
これまではブロックサイズの上限は1MBに固定されていました。
ブロックサイズの変更は、ブロックヘッダー内のxfied(xfieldType = 0x02
)を使用して行われます。
チェーンを運用するフェデレーションが、xfied
で新しいブロックサイズを指定すると、
そのサイズがそれ以降作成されるブロックの最大サイズになります。
ブロックサイズの変更をトリガーできるのは、ブロックを生成するフェデレーションのみです。
- 注意:
この機能を利用してブロックサイズを変更する場合、ネットワーク内のすべてのノードが
v0.6.1
以降を使用する必要があります。 旧バージョンを使用するノードは、認識している最大ブロックサイズを超えるブロックを受け取るとそれを無効なブロックとして判断します。 フェデレーションが後続のブロックを作成しても、ブロックサイズの変更を検知できない旧ノードは、後続のチェーンを認識できなくなります。
RPC
ノードのUTXOセットをダンプするdumptxoutset
RPCが追加されました。
将来、loadtxoset
RPCが導入されると、スナップショットベースの同期が可能になる予定です。
USDTのトレースポイントを導入
開発、デバッグ、レビューおよび実稼働環境において、より詳細なモニタリングを可能にするために USDT(User Statically-Defined Tracing)のトレースポイントを導入しました (#280、 #281)。 これらのトレースポイントを使用することで内部のデータにアクセスできるようになります。 現在、提供されているトレースポイントについては、こちらで確認できます。
ビルド
その他の変更
- スレッドの同期とmutexの安定性の向上(#276)
tapyrus-genesis
コマンドで非圧縮公開鍵が指定された場合にエラーを返すようになりました(#262)- ブロック高の型を32 bitに統一(#286)
- CIの環境をUbuntu 22.04にアップグレードし、機能テストのRIPEMD160の実装を移植(#301)
セキュリティFix
Tapyrus CoreはBitcoin Coreのコードベースを元にしていますが、昨年開示された以下のBitcoin Coreの脆弱性の内、 Tapyrusにも関連する以下の脆弱性の対応を行っています。
- 巨大なGETDATAメッセージを使用したDoSへの対応(#312)
- 巨大なINVメッセージを使用したメモリDoSへの対応(#313)
- オーファンの処理による重大なDoSへの対応(#314)
- タイムスタンプの調整によるネットワーク分割への対応(#315)
- addrメッセージスパムによるリモートクラッシュへの対応(#317)
- 変異ブロックによるブロック伝播阻害への対応(#318)
- inv-to-sendの肥大化によるDoSへの対応(#319)
- CVE-2024-35202への対応(#318)
- ピアの停止によるブロック伝播の妨害への対応(#318)
バグ修正
すべての変更点については、リリースノートを参照ください。