/ home / newsletters /
Bitcoin Optech Newsletter #155
今週のニュースレターは、Taprootのウォレットサポートに関連する2つのBIP提案の要約と、 Bitcoin Stack Exchangeから厳選された質問とその回答や、Taprootの準備方法、 人気のあるBitcoinインフラストラクチャプロジェクトの注目すべき変更点などの恒例のセクションを掲載しています。
ニュース
-
● Taproot用のPSBT拡張: Andrew Chowは、 Taprootのアウトプットを使用するもしくは作成する際に使用するPSBTの新しいフィールドを定義する BIPの提案をBitcoin-Devメーリングリストに投稿しました。 このフィールドは、元のバージョン0のPSBTと提案されているバージョン2のPSBT(ニュースレター #128参照)の両方を拡張します。 keypathおよびscriptpathの両方の使用がサポートされています。
また、提案されているBIPでは、Taprootがv0 segwitインプットに対する手数料の過払い攻撃への対策をしているため (ニュースレター #101参照)、 PSBTのP2TRインプットが参照するトランザクションのコピーを省略できることを推奨しています。
-
● P2TRのシングルシグ用の鍵導出パス: Andrew Chowは シングルシグ用のTaprootアドレスを作成するウォレットで使用するBIP32導出パスを提案する2つめのBIP提案も Bitcoin-Devメーリングリストに投稿しました。 Chowは、このBIPがP2SHでラップしたP2WPKHアドレス用のBIP49や、 ネイティブP2WPKHアドレス用のBIP84とよく似ていると指摘しています。
Bitcoin Stack Exchangeから選ばれたQ&A
Bitcoin Stack ExchangeはOptech Contributor達が疑問に対して答えを探しに(もしくは他のユーザーの質問に答える時間がある場合に)アクセスする、 数少ない情報ソースです。この月刊セクションでは、前回アップデート以降にされた、最も票を集めた質問・答えを紹介しています。
-
● 将来のソフトフォークで潜在的に最適でない、または使用されていないopcodeを有効にすることにはどんなデメリットがありますか? G. Maxwellは、コンセンサスに影響を与えるopcodeを有効にする際に考慮すべき点を以下のようにまとめています:
-
初期および継続的なメンテナンスコスト
-
opcodeのユーザーだけでなくネットワーク全体に対する潜在的なリスク
-
ノードソフトウェアのカスタマイズや再実装の阻害要因となる複雑さの増加
-
将来のより良い代替機能を邪魔する部分的もしくは非効率な機能
-
誤って逆方向のインセンティブを生み出す
-
-
● ブロック全体の署名集約がAdaptor Signatureの妨げになるのはなぜですか? Pieter Wuilleは、横断的なインプットの署名集約がAdaptor Signatureや、 Scriptless Scriptのような技術を阻害する要因を次のように説明してます。 「ブロック全体の署名集約をした場合、ブロック全体に対して単一の署名が存在することになります。 その単一の署名には、複数の個別のシークレットを複数の個別の参加者に公開するためのスペースは単純に存在しません。」
-
● Bitcoin Coreウォレット(または任意のウォレット)は、ユーザーがアクティベーション前にTaprootアドレスに資金を送るのを防ぐべきですか? Murchは、ウォレットソフトウェアがユーザーに将来のBIP173 segwitアウトプットタイプへの送金を許可する必要がある理由を説明しています。 使用可能なアドレスを提供する責任を受信者に負わせることで、 エコシステムはbech32/bech32mの上位互換性を活用して、 新しいアウトプットタイプを即座に利用することができます。
-
● Schnorr署名でwitnessが分離されているのはどうしてですか? Dalit Sairioは、Schnorr署名はECDSA署名のようなマリアビリティに悩まされないのに、 Schnorr署名が引き続き分離されている理由について尋ねています。 Darosiorは、マリアビリティはsegwitの多くの利点の1つに過ぎないと指摘しています。 Pieter Wuilleは、署名のマリアビリティはより広範なスクリプトのマリアビリティの一部に過ぎないと付け加えています。
-
● MuSigで可能な署名の量は? Nicklerは、MuSigとMuSig2の両方において、 署名者の数は実質的に無限であることを説明し、100万人の署名者のベンチマークが 彼のラップトップ上で約130秒で実行されることを指摘しています。
-
● P2WSHでラップされたP2TRアドレスのサポート? BIP341の衝突セキュリティの懸念に加えて、 jnewberyは、追加のアウトプットタイプを持つことによるプライバシーの課題を指摘しています。 また、bech32が既に広くエコシステムに採用されていることを考えると、 ラップされたTaprootアウトプットの必要性には疑問が残ります。
Taprootの準備 #2: Taprootはシングルシグでも価値があるか?
ブロック高709,632のTaprootのアクティベーションに向けて、 開発者やサービスプロバイダーがどのような準備をすればよいかについての週刊シリーズです。
OptechのTransaction size calculatorを使用すると、 さまざまななタイプのシングルシグ・トランザクションのサイズを比較できます。 予想どおり、P2WPKHのインプットとアウトプットを使用したトランザクションは、 P2PKHのインプットとアウトプットを使用したトランザクションよりもはるかに小さいですが、 意外なことに、P2TRのトランザクションは同等のP2WPKHのトランザクションよりもわずかに大きくなります。
P2PKH (legacy) | P2WPKH (segwit v0) | P2TR (taproot/segwit v1) | |
---|---|---|---|
Output | 34 | 31 | 43 |
Input | 148 | 68 | 57.5 |
2-in, 2-out tx | 374 | 208.5 | 211.5 |
そのため、シングルシグのウォレットがブロック709,632 に備えてTaprootの送信を実装するのは逆効果のように思えるかもしれません。 しかし、よく見てみると、ウォレットのユーザーにとってもネットワーク全体にとっても、 シングルシグにP2TRを使用するのは多くのメリットがあります。
-
使用料が安い: シングルシグのP2TR UTXOを使用する際のインプットレベルのコストは、 P2WPKH UTXOを使用する際のコストよりも約15%低くなります。 上の表のような単純な分析では、使用者が支払いを要求されているアドレスを選択できないという詳細が隠されています。 つまり、あなたがP2WPKHのままで他のユーザーがP2TRにアップグレードした場合、 あなたの2-in-2-outトランザクションの実際の典型的なサイズは、232.5 vbyteになりますが、 すべてP2TRのトランザクションは211.5 vbyteのままです。
-
プライバシー: アーリーアダプターが新しいスクリプトフォーマットに変更すると一部のプライバシーが失われますが、 Taprootに切り替えたユーザーはすぐにプライバシーが強化されます。 あなたのトランザクションは、新しいLNチャネルや、より効率的なDLC、 安全なマルチシグ、さまざまな賢いウォレットバックアップリカバリー方式、 その他の100の先駆的な開発に取り組んでいる人たちと見分けがつかなくなります。
P2TRをシングルシグに使用することで、既存のユーザーのプライバシーに影響を与えることなく、 ウォレットをマルチシグやTapscript、LNサポート、またはその他の機能に後でアップグレードすることも可能です。 UTXOがソフトウェアの旧バージョンと新バージョンのどちらで受信されたかは問題になりません。 どちらのUTXOもオンチェーンでは同じように見えます。
-
ハードウェア署名デバイスの利便性の向上: 手数料の過払い攻撃が再発見されてから、 いくつかのハードウェア署名デバイスは、トランザクションで使用される各UTXOに、 そのUTXOを生成したトランザクション全体の重要な部分のコピーを含むメタデータが提供されない限り、 トランザクションへの署名を拒否します。 これにより、ハードウェア署名者が実行しなければならない最悪のケースの処理が大幅に増え、 特に限られたサイズのQRコードを主な通信媒体として使用するハードウェア署名者にとっては問題になります。 Taprootは、手数料の過払い攻撃の原因となる脆弱性を排除し、ハードウェア署名者のパフォーマンスを大幅に向上させます。
-
より予測可能な手数料率: P2PKHおよびP2WPKH UTXOのECDSA署名は、サイズが異なる場合があります(ニュースレター #3参照)。 ウォレットは署名を作成する前にトランザクションの手数料率を選択する必要があるため、 ほとんどのウォレットは、最悪のケースの署名サイズを想定し、 それより小さな署名が生成された場合に手数料率が若干オーバーするのを許容します。 P2TRでは、署名の正確なサイズが事前に分かるため、ウォレットは正確な手数料率を確実に選択することができます。
-
フルノードの支援: Bitcoinシステムの全体的なセキュリティは、かなりの割合のBitcoinユーザーが自身のノードで 承認済みの各トランザクションを検証することに依存しています。 これにはあなたのウォレットが作成するトランザクションの検証も含まれます。 TaprootのSchnorr署名は、効率的なバッチ検証が可能で、 前のブロックをキャッチアップする過程で署名を検証する際にノードが費やす必要のあるCPUサイクル数を約1/2に削減します。 このリストの他のすべてのポイントを拒否したとしても、 フルノードを実行する人々の利益のためにTaprootを使用する準備をご検討ください。
注目すべきコードとドキュメントの変更
今週のBitcoin Core、 C-Lightning、Eclair、LND、 Rust-Lightning、libsecp256k1、 Hardware Wallet Interface (HWI)、 Rust Bitcoin、BTCPay Server、 Bitcoin Improvement Proposals(BIP)、および Lightning BOLTsの注目すべき変更点。
-
● Bitcoin Core #22154では、ブロック709,632でTaprootがアクティベートされた後に、 例えば
getnewaddress "" bech32m
を呼び出すことで、 ユーザーがP2TRスクリプト用のbech32mアドレスを生成できるようにするコードが追加されています。 Taprootのアクティベート後、トランザクションにbech32mアドレスが含まれている場合、 Descriptor WalletもP2TRのお釣り用アウトプットを使用します。 この機能は、Taproot descriptorを持つウォレットにのみ適用されます(ニュースレター #152参照)。 -
● Bitcoin Core #22166では、アウトプットからTaprootの
tr()
descriptorを推論する機能が追加され、 基本的なTaproot descriptorのサポートが完了しました。 descriptorの推論は、listunspent
のようなRPCコールへの応答で より正確な情報を提供するために使用されます。 -
● Bitcoin Core #20966は、保存されているbanlistファイルの名前とフォーマットを (シリアライズされたP2Pプロトコルの
addr
メッセージをベースにした)banlist.dat
からbanlist.json
に変更しました。 ファイルフォーマットの変更により、Tor v3のピアや他のネットワークのピアでオリジナルのaddr
メッセージに含められる最大値である128 bit幅を超えるアドレスの禁止エントリを保存できるようになりました。 -
● Bitcoin Core #21056は、
bitcoin-cli
に新しい-rpcwaittimeout
パラメーターを追加しました。 既存の-rpcwait
パラメーターは、bitcoind
サーバーが起動するまでコマンド(RPCコール)の送信を遅らせます。 新しいパラメーターは、指定された秒数後に待機を止め、エラーを返します。 -
● C-Lightning #4606では、 LNDでの同様の変更(ニュースレター #93参照)と次のセクションで説明する仕様変更を受けて、 約0.043 BTC以上のインボイスの作成が可能になりました。
-
● BOLTs #877では、実装のバグによる大きな損失を避けるために導入されたプロトコルレベルでの支払い毎の金額制限を撤廃しました。 これは、2020年に
option_support_large_channel
が広く実装されたことを受けたもので、 これが有効になるとチャネル毎の金額制限がなくなります。 この2つの制限の詳細についてはLarge channelsのトピックをご覧ください。