/ home / newsletters /
Bitcoin Optech Newsletter #286
今週のニュースレターでは、修正された旧バージョンのbtcdのコンセンサス障害の発表と、 v3トランザクションリレーとエフェメラルアンカーに向けたLNの変更案、 Bitcoin関連の仕様用の新しいリポジトリの発表について掲載しています。 また、サービスとクライアントソフトウェアのアップデートや、 新しいリリースとリリース候補の発表、人気のあるBitcoinインフラストラクチャソフトウェアの注目すべき変更など 恒例のセクションも含まれています。
ニュース
-
● btcdにおける修正されたコンセンサス障害の開示: Niklas Göggeは、 以前責任を持って開示したbtcdの旧バージョンにおけるコンセンサスの障害を、 Delving Bitcoinで発表しました。相対的タイムロックは、 トランザクションのインプットのシーケンス番号にコンセンサスの適用を追加することで、 ソフトフォークでBitcoinに追加されました。 フォーク前に作成された署名済みのトランザクションが無効にならないようにするため、 相対的タイムロックはバージョン番号が2以上のトランザクションにのみ適用され、 元のデフォルトのバージョン1のトランザクションは、どのインプットに対しても有効なままです。 ただし、オリジナルのBitcoinソフトウェアでは、バージョン番号は符号付き整数で、負のバージョンが可能です。 BIP68の参照実装セクションでは、「バージョン2以降」というのは、 符号付き整数から符号なし整数にキャストされたバージョン番号に適用されることを意図しており、 バージョン0および1ではないすべてのトランザクションにルールが適用されることが保証されると記述されています。
Göggeは、btcdがこの符号付きから符号なし整数への変換を実装していないことを発見しました。 このため、Bitcoin CoreではBIP68ルールに従うもののbtcdではそうではない 負のバージョン番号を持つトランザクションを構築することが可能でした。 この場合、あるノードがトランザクション(そしてそのトランザクションを含むブロック)を拒否し、 別のノードはそのトランザクション(およびそのブロック)を受け入れる可能性があり、 チェーンの分岐につながります。攻撃者はこれを利用して、 btcdノード(またはbtcdノードに接続しているソフトウェア)のオペレーターを騙して 無効なビットコインを受け入れさせる可能性があります。
このバグはbtcdのメンテナーに非公開で開示され、最近のv0.24.0のリリースで修正されました。 コンセンサスの適用にbtcdを使用している人には、アップグレードを強く推奨します。 さらに、Chris Stewartは、bitcoin-sライブラリの同じ障害に対するパッチを Delving Bitcoinのスレッドに返信しました。 BIP68の相対的タイムロックを検証するために使用される可能性のあるコードの作成者は、 コードに同じ欠陥がないかどうか確認することをお勧めします。
-
● v3リレーおよびエフェメラルアンカーのためのLNの変更提案: Bastien Teinturierは、 v3トランザクションリレーおよび エフェメラルアンカーを効率的に使用するために LN仕様に加える必要があると考えられる変更についてDelving Bitcoinに投稿しました。 変更はシンプルです:
-
● アンカースワップ: CPFP carve outポリシーの下、 CPFPによる手数料の引き上げ機能を保証するために使用されている コミットメントトランザクションの2つの現在のアンカーアウトプットが削除され、 代わりに1つのエフェメラルアンカーが追加されます。
-
● 遅延の削減: コミットメントトランザクションの余分な1ブロックの遅延が削除されます。 これらは、CPFP carve outが常に機能することを保証するために追加されましたが、v3リレーポリシーでは必要ありません。
-
● トリミングのリダイレクト: トリミングされるHTLCののすべての金額を、コミットメントトランザクションの手数料にする代わりに、 合計された値がアンカーアウトプットの金額に追加され、 追加手数料がコミットメントとエフェメラルアンカーの両方の承認を保証するために使用されるようになります( 議論については、先週のニュースレターをご覧ください)。
-
● その他の変更: いくつかの小さな変更と、簡素化が行われます。
その後の議論では、提案された変更がもたらすいくつかの興味深い結果が検討されました:
-
● UTXO要件の削減: 余分な1ブロックの遅延がなくなるため、 正しいチャネル状態を確実にオンチェーン化することが容易になります。 障害のある参加者が失効したコミットメントトランザクションをブロードキャストした場合、 もう一方の参加者はそのコミットメントからメインのアウトプットを使用して、 失効したコミットメントのCPFPによる手数料の引き上げに使用できます。 その目的のために、別の承認済みUTXOを保持する必要はありません。これを安全に行うため、 BOLT2で定義されている最低1%では手数料を賄うのに十分ではない可能性があるため、 参加者は十分な準備金を残高として保持する必要があります。十分な準備金を保持している非転送ノードの場合、 セキュリティ上の理由から別のUTXOが必要になるのは、支払いを受け入れる時だけです。
-
● v3ロジックの組み込み: LNがこれらの変更を設計、実装、 展開するには長い時間がかかるのではないかというLN仕様会議で表明された懸念に応えて、 Gregory Sandersは、現在のアンカースタイルのLNコミットメントトランザクションのようなトランザクションを一時的に特別扱いし、 Bitcoin CoreがLN開発によってブロックされることなくクラスターmempoolをデプロイできるようにする中間段階を提案しました。 それらが広く展開され、すべてのLN実装がそれらを使用するようにアップグレードされた時、 この一時的な特殊ルールは削除することができます。
-
● 子トランザクションの最大サイズの要求: v3リレーのドラフト提案では、未承認トランザクションの子のサイズを1,000 vbyteに設定しています。 このサイズを大きくすると、正直なユーザーはトランザクションのPinningを克服するために、 より多くの手数料を支払う必要があります(ニュースレター #283参照)。 このサイズを小さくすると、正直なユーザーが手数料を付与するために使用できるインプットが少なくなります。
-
-
● 新しいドキュメントリポジトリ: Anthony Townsは、 プロトコル仕様の新しいリポジトリ BINANA (Bitcoin Inquisition Numbers And Names Authority)の発表を Bitcoin-Devメーリングリストに投稿しました。この記事の執筆時点で、 以下の4つの仕様がリポジトリで利用可能です:
-
● BIN24-1 Ethan HeilmanおよびArmin Sabouriによる
OP_CAT
。 ニュースレター #274の彼らのソフトフォークの提案の説明をご覧ください。 -
● BIN24-2 Anthony TownsによるHeretical Deploymentsでは、 提案中のソフトフォークやその他の変更のためにデフォルトsignet上での Bitcoin Inquisitionの使用について説明しています。 ニュースレター #232の詳しい説明をご覧ください。
-
● BIN24-3 Brandon Blackによる
OP_CHECKSIGFROMSTACK
は、 長年提案されてきたアイディアを定義しています。 このopcodeをLNHANCEのソフトフォークのバンドルの一部にするというBlackの提案については、 先週のニュースレターをご覧ください。 -
● BIN24-4 Brandon Blackによる
OP_INTERNALKEY
は、 スクリプトインタプリタからTaprootの内部鍵を取得するためのopcodeを定義しています。 これも、先週のニュースレターにLNHANCEのソフトフォークのバンドルの一部として記載されています。
Bitcoin Optechは、更新をチェックするドキュメントソースのリスト(BIPやBOLTおよびBLIP)にBINANAリポジトリを追加しました。 今後の更新は、注目すべきコードとドキュメントの変更 セクションに記載されます。
-
サービスとクライアントソフトウェアの変更
この毎月の特集では、Bitcoinのウォレットやサービスの興味深いアップデートを取り上げています。
-
● Envoy 1.5リリース: Envoy 1.5では、バグ修正やその他の更新に加えて、 Taprootの送受信のサポートが追加され、 経済合理性のないアウトプットの処理方法が変更されています。
-
● Liana v4.0リリース: Liana v4.0がリリースされ、RBFによる手数料の引き上げ、 RBFを利用したトランザクションのキャンセル、自動コイン選択および ハードウェア署名デバイスのアドレス検証のサポートが含まれています。
-
● Mercury Layerの発表: Mercury Layerは、MuSig2の変形を使用して、 ステートチェーンオペレーターによるブラインド署名を実現する ステートチェーンの実装です。
-
● AQUA walletの発表: AQUA walletは、Bitcoin、LightningおよびLiquidサイドチェーンをサポートする オープンソースのモバイルウォレットです。
-
● Samourai Walletがアトミックスワップ機能を発表: 以前の研究に基づいたクロスチェーンアトミックスワップ機能により、 BitcoinとMoneroのチェーン間でピアツーピアのコインスワップが可能になります。
リリースとリリース候補
人気のBitcoinインフラストラクチャプロジェクトの新しいリリースとリリース候補。 新しいリリースにアップグレードしたり、リリース候補のテストを支援することを検討してください。
-
● LDK 0.0.120は、LN対応アプリケーションを構築するためのこのライブラリのセキュリティリリースです。 これは「
UserConfig::manually_accept_inbound_channels
オプションが有効になっている場合に、 ピアからの信頼できない入力から到達できるサービス拒否の脆弱性が修正されています」。 他にもいくつかのバグ修正と小さな改善が含まれています。 -
● HWI 2.4.0-rc1は、複数の異なるハードウェア署名デバイスに共通のインターフェースを提供する、 このパッケージの次期バージョンのリリース候補です。
注目すべきコードとドキュメントの変更
今週のBitcoin Core、Core Lightning、Eclair、LDK、 LND、libsecp256k1、Hardware Wallet Interface (HWI)、Rust Bitcoin、BTCPay Server、BDK、Bitcoin Improvement Proposals(BIP)、Lightning BOLTsおよび Bitcoin Inquisitionの注目すべき変更点。
-
● Bitcoin Core #29239は、
-v2transport
の設定が有効な場合に、addnode
RPCがv2トランスポートプロトコルで接続するよう更新されました。 -
● Eclair #2810は、トランポリンルーティングの Onion暗号化情報で400 byteを超える使用が可能になりました。 最大サイズは、BOLT4の1,300 byteです。400 byte未満のトランポリンルーティングは、 400 byteにパディングされます。
-
● LDK #2791、#2801および#2812は、 ルートブラインドのサポートの追加を完了し、 その機能ビットをアドバタイズするようになりました。
-
● Rust Bitcoin #2230は、インプットの実効値を計算する関数を追加しました。 これは、インプットの値から使用コストを差し引いたものです。