今年は、ビットコインブロック内の限られたスペースに対する需要が大幅に増加し、オンチェーン取引の手数料が高くなっています。 需要の多くは、 碑文を明らかにする取引です。 これらの碑文の内容は、ビットコイン取引の証人データ1の一部として明らかにされます。 この監視データ1は、他のトランザクション・データのコストの4分の1に割り引かれます。 なぜこれらの碑文を割引するのですか? 証人割引をソフトフォークすべきか?
一部のバイトが他のバイトよりも安いのはなぜですか?
一般的にお金、特にビットコインは、人間のインセンティブを背景に動いています。 ビットコインは、ネイティブのビットコイントークンを使用して、マイナーが構築するブロックに特定のトランザクションを含めることに対してマイナーに支払うことで、マイナーとトランザクションのインセンティブを調整します。 ノードランナーのインセンティブをマイナーやトランザクションに合わせることや、送信者と受信者のインセンティブを一致させることについても同じことが言えません。
現在までに、ビットコインのインセンティブの連携には3つの大きな改善がありました。
ブロック・サイズの制限
複雑なスクリプトのコストを送信者から受信者にシフトする(P2SH)
ノードランナーとトランザクタ間のデータコストの調整(SegWit)
トランザクションは多くの取引を行い、マイナーは多くの取引手数料を徴収したいと考えています。しかし、ノードランナーは、そのすべてのトランザクションデータを中継、検証、保存する必要があり、マイナーのように報酬は支払われません。 ビットコインの歴史の初期に、サトシは固定ブロックサイズ制限(ノードによって強制される)を追加することでこれに対処しました。 制限はブロックあたり100万バイトで、ノードがダウンロードして検証する必要があるデータの量に上限を設けました。 当時、サトシは「必要に近づいたら、後で段階的に変化を起こすことができる」 と書いていました。 その後、制限を引き上げるパッチに言及し、「このパッチを使わないと、ネットワークとの互換性がなくなる」と述べ、ブロックサイズの制限を増やすことはハードフォークの変更であり、ソフトフォークよりも多くの調整が必要であることを意味しました。 その後の数年間、ビットコインはこのような互換性のないハードフォークの変更を意図的に回避し、100万バイトのブロックサイズ制限を維持することも意味しました。
ビットコインはロックスクリプトによって保護されているため、マルチシグを含む高度なスクリプトでロックすることは常に可能でした。 当初の設計では、ビットコイン取引の送信者は、受取人の完全なロックスクリプトをトランザクションに配置し、そのロックスクリプトをブロックに含めるために手数料を支払います。 開発者は、料金が増加すると、送信者がより大きなロックスクリプトのユーザーに支払うコストが高くなるため、それらのユーザーへの支払いを躊躇する可能性があることに気付きました。 これらの複雑なロックスクリプトは、アドレスにエンコードし、QRコードなどの低帯域幅メカニズムを介して共有する場合にも問題を引き起こしました。
これを解決するために、 P2SH がソフトフォークとしてビットコインに追加されました。 このフォークのルールでは、受信者のロックスクリプト全体をトランザクションの出力に入れる代わりに、送信者は単にそのハッシュを含めます。 受信者が必然的にそのアウトプットを使う場合、彼らは完全なスクリプトを支払いトランザクションに含め、検証される前にコインがロックされているスクリプトのハッシュと照合されます。 この変更により、任意のサイズの引き換えスクリプトを固定長のロックスクリプトで表すことができ、送信者は支出条件に基づいて受信者を区別する必要がなくなりました。
ノードがビットコイン取引で行う最も基本的な検証は、ノードが使おうとしているビットコインが実際に存在することです。 これを行うために、各ノードは、使用可能なビットコインの各単位(未使用のトランザクションアウトプット、UTXO)のインデックスを維持します。 このインデックスが大きいほど、ノードの実行と将来のトランザクションの検証にかかるコストが高くなります2。 その結果、このインデックスのサイズを増やす (入力よりも出力が多い) トランザクションは、インデックス サイズを小さくする同じバイト数のトランザクションよりも時間の経過とともにコストが高くなります。
ほとんどのビットコインロック解除スクリプトの大部分は、暗号署名です。 これらの署名は、対応する公開鍵の約 2 倍のサイズであるため、ロック解除スクリプトは (P2SH がない場合でも) ロックスクリプトよりも大きくなります。
UTXOの消費コストとUTXO作成コストの大幅な高みは、ノードランナーとトランザクタの間にインセンティブの競合を引き起こします。 トランザクターは、少額のUTXOを支出することを躊躇し(特に手数料が高い場合)、代わりに大規模なUTXOを費やし、より小さなお釣りのUTXOを作成することを好みます。 一方、ノードランナーは、この小さなUTXOの蓄積に対するコストを、すべてのトランザクションに対してより高い検証コストで支払います。
奇妙に思えるかもしれませんが、過去の ブロックチェーン のトランザクションで使用された各UTXOが、対応するロック解除スクリプトによって満たされるロックスクリプトを持っているという検証は、かなり基本的ではありません。 さらに言えば、デフォルトのビットコインコア26.xを実行しているビットコインノードは、ブロック804000(2023年8月19日)より前のトランザクションのフルロックスクリプトの実行を検証しません。
上記のすべては、ブロックチェーンのさまざまな部分によってビットコインノードに課せられるさまざまなコストがあることを意味します。 各トランザクションの効果を判断するために必要なデータは、ジェネシスブロック3から同期する各ノードによって検証される必要があり、トランザクションのアウトプットは、長期的にはトランザクションのインプットよりもコストがかかる傾向があり(特に、トランザクションが長期間続く場合)、最新のトランザクションを除いて、witnessデータの多くはチェックさえされません。
分離された証人(SegWit)ソフトフォークは、これまでビットコインに加えられた最も野心的な変更です。この変更の最大の動機は、ビットコインのTXID4展 性5の長年の問題を解決することでした。 この順応性を修正するために、ロック解除スクリプトは新しく作成された「witness」に置き換えられます。 TXIDから認証データ(多くの場合、トランザクションの効果を変更せずに第三者によって変更される可能性があります)を削除することで、不変のTXIDに依存するプロトコル(Lightningなど)が可能になります。
承認データが元のトランザクション構造から移動されると、100 万バイトのブロック制限にはカウントされなくなります。 新しい制限が必要です。 当時、分離された監視データを制限するための多くのアプローチが議論されていました: 個別の監視バイト制限6、合計 100 万バイトの制限 <7、または重み付けされた結合制限。 最終的に、分離された証人データは 1 単位、トランザクション データは 4 単位、400 万の重みブロック制限で重み付けされた加重複合制限が選択されました。 各重み単位は、手数料計算の目的で仮想バイト (vByte) の 1/4 として扱われます。
なぜこのような重みがあるのでしょうか? トランザクションのインプットとアウトプットのコストを、分離されたwitnessがある場合とない場合で見てみましょう。
この表から最初に注目すべき点は、witnessスクリプトタイプ(P2WPKH、P2WSH)の入力バイト数と出力バイト数がほぼ同じであることです(それぞれフルvByteが課金されます)。 その後、witnessスクリプトの送信者は、支払いを承認するデータに対して1/4 vByteを請求されますが、その多くは最新のトランザクション以外では検証されず、UTXOインデックスに継続的なコストはかかりません。 ここで注目に値するもう1つのことは、単一の署名と比較して、より安全な2-of-3マルチシグを使用するコストが147vBytesから36.25vBytesに削減されることです。
冒頭で述べたように、ビットコインは人間のインセンティブに乗っていますが、ここでは、ネットワークを使用する当事者間のインセンティブの調整を改善するために、長年にわたってビットコインにどのような変化が加えられてきたかを見ることができます。
Taproot自体は、分離されたwitnessを使用してビットコインをロックする「単なる」代替方法です。 これらのインセンティブは大きく変わりません。 Taprootに伴う変更の1つは、スクリプトサイズに関する特定の制限を撤廃することでした。 これは、ビットコインスクリプトの分析ツールの設計の複雑さを軽減するため、また、さまざまな種類のデータの相対的なコストを認識するために行われました。 これらの制限を取り除いたことで、Taproot以前よりも碑文がシンプルになりましたが、ネットワークのインセンティブ構造を根本的に変えることはありませんでした。
さて、本題です。 碑文は証人で明らかにされるため、碑文データの1バイトあたり1/4 vByteしか課金されません。 これは証人割引の濫用ですか? 実際のところ、碑文データは、ネットワーク上のノードが検証する最も安価なデータの一部です。 碑文で使用されるスクリプト構造は、碑文データの実行を明示的にスキップするため、それに対して行われる検証は、単一のハッシュチェック(公開された碑文が刻印者が明らかにする予定のものであることを確認する)のみです。 このデータは一度ハッシュ化され、その後はノードによって再度参照されることはありません。 計算コストが非常に低くなっています(同等のサイズのマルチシグスクリプトよりも桁違いに低い)。
しかし、碑文は料金を押し上げ、他のユーザーを押し出しています。
はい!ビットコインネットワークとの対話に利用できる現在のソフトウェアでは、多くの人々が他の取引を行うよりも、碑文を作成する経済的インセンティブが高くなります。
これは、ビットコイン取引の経済密度を高めることの価値をはっきりと浮き彫りにしています。 ライトニングネットワークは、数百、数千、または数百万の経済取引を1つのビットコイン取引に詰め込むことで、これに向けて大きな一歩を踏み出します。 トランザクションの各バイトの経済密度が高いほど、その経済活動に支払われる手数料は低くなります。 ビットコイン取引の経済密度が高まるにつれて、ブロックスペースの他の用途はこれまでも、そしてこれからも価格が付けられ続けるでしょう9。
MuSig2やFROSTなどのオフチェーンマルチシグプロトコル、またはアダプター署名が普及した場合、立会い割引を減額または廃止することは理にかなっている場合があります。これらのプロトコルにより、大規模な支出条件を単一の署名で表すことができます。 これとTaprootの効率的なキーパス支出を組み合わせることで、ほぼ任意に複雑な条件を持つインプットのコストをわずか105バイトにまで下げることができます。
碑文によって引き起こされる高額な手数料に対する反応は、ビットコインの歴史の中で空が落ちている他のシナリオと同じです:辛抱強く構築し、辛抱強く構築します。 ビットコイン取引の経済密度を高めるために、より良いLightningウォレットの構築から Ark 、 個別のログ契約 など、私たちにできることはたくさんあります。 witnessディスカウントを(時期尚早に)削除したり、Taprootをロールバックしたり、同様の非生産的な行動をとったりすることは、現在のビットコイン取引の経済密度を低下させ、状況を悪化させるだけです。
謙虚さを保ち、サットを積み重ね、構築してください。
本記事はBrandon Black氏によるゲスト投稿です。 表明された意見は完全に独自のものであり、必ずしもBTC Incまたはビットコインマガジンの意見を反映しているわけではありません。
今年は、ビットコインブロック内の限られたスペースに対する需要が大幅に増加し、オンチェーン取引の手数料が高くなっています。 需要の多くは、 碑文を明らかにする取引です。 これらの碑文の内容は、ビットコイン取引の証人データ1の一部として明らかにされます。 この監視データ1は、他のトランザクション・データのコストの4分の1に割り引かれます。 なぜこれらの碑文を割引するのですか? 証人割引をソフトフォークすべきか?
一部のバイトが他のバイトよりも安いのはなぜですか?
一般的にお金、特にビットコインは、人間のインセンティブを背景に動いています。 ビットコインは、ネイティブのビットコイントークンを使用して、マイナーが構築するブロックに特定のトランザクションを含めることに対してマイナーに支払うことで、マイナーとトランザクションのインセンティブを調整します。 ノードランナーのインセンティブをマイナーやトランザクションに合わせることや、送信者と受信者のインセンティブを一致させることについても同じことが言えません。
現在までに、ビットコインのインセンティブの連携には3つの大きな改善がありました。
ブロック・サイズの制限
複雑なスクリプトのコストを送信者から受信者にシフトする(P2SH)
ノードランナーとトランザクタ間のデータコストの調整(SegWit)
トランザクションは多くの取引を行い、マイナーは多くの取引手数料を徴収したいと考えています。しかし、ノードランナーは、そのすべてのトランザクションデータを中継、検証、保存する必要があり、マイナーのように報酬は支払われません。 ビットコインの歴史の初期に、サトシは固定ブロックサイズ制限(ノードによって強制される)を追加することでこれに対処しました。 制限はブロックあたり100万バイトで、ノードがダウンロードして検証する必要があるデータの量に上限を設けました。 当時、サトシは「必要に近づいたら、後で段階的に変化を起こすことができる」 と書いていました。 その後、制限を引き上げるパッチに言及し、「このパッチを使わないと、ネットワークとの互換性がなくなる」と述べ、ブロックサイズの制限を増やすことはハードフォークの変更であり、ソフトフォークよりも多くの調整が必要であることを意味しました。 その後の数年間、ビットコインはこのような互換性のないハードフォークの変更を意図的に回避し、100万バイトのブロックサイズ制限を維持することも意味しました。
ビットコインはロックスクリプトによって保護されているため、マルチシグを含む高度なスクリプトでロックすることは常に可能でした。 当初の設計では、ビットコイン取引の送信者は、受取人の完全なロックスクリプトをトランザクションに配置し、そのロックスクリプトをブロックに含めるために手数料を支払います。 開発者は、料金が増加すると、送信者がより大きなロックスクリプトのユーザーに支払うコストが高くなるため、それらのユーザーへの支払いを躊躇する可能性があることに気付きました。 これらの複雑なロックスクリプトは、アドレスにエンコードし、QRコードなどの低帯域幅メカニズムを介して共有する場合にも問題を引き起こしました。
これを解決するために、 P2SH がソフトフォークとしてビットコインに追加されました。 このフォークのルールでは、受信者のロックスクリプト全体をトランザクションの出力に入れる代わりに、送信者は単にそのハッシュを含めます。 受信者が必然的にそのアウトプットを使う場合、彼らは完全なスクリプトを支払いトランザクションに含め、検証される前にコインがロックされているスクリプトのハッシュと照合されます。 この変更により、任意のサイズの引き換えスクリプトを固定長のロックスクリプトで表すことができ、送信者は支出条件に基づいて受信者を区別する必要がなくなりました。
ノードがビットコイン取引で行う最も基本的な検証は、ノードが使おうとしているビットコインが実際に存在することです。 これを行うために、各ノードは、使用可能なビットコインの各単位(未使用のトランザクションアウトプット、UTXO)のインデックスを維持します。 このインデックスが大きいほど、ノードの実行と将来のトランザクションの検証にかかるコストが高くなります2。 その結果、このインデックスのサイズを増やす (入力よりも出力が多い) トランザクションは、インデックス サイズを小さくする同じバイト数のトランザクションよりも時間の経過とともにコストが高くなります。
ほとんどのビットコインロック解除スクリプトの大部分は、暗号署名です。 これらの署名は、対応する公開鍵の約 2 倍のサイズであるため、ロック解除スクリプトは (P2SH がない場合でも) ロックスクリプトよりも大きくなります。
UTXOの消費コストとUTXO作成コストの大幅な高みは、ノードランナーとトランザクタの間にインセンティブの競合を引き起こします。 トランザクターは、少額のUTXOを支出することを躊躇し(特に手数料が高い場合)、代わりに大規模なUTXOを費やし、より小さなお釣りのUTXOを作成することを好みます。 一方、ノードランナーは、この小さなUTXOの蓄積に対するコストを、すべてのトランザクションに対してより高い検証コストで支払います。
奇妙に思えるかもしれませんが、過去の ブロックチェーン のトランザクションで使用された各UTXOが、対応するロック解除スクリプトによって満たされるロックスクリプトを持っているという検証は、かなり基本的ではありません。 さらに言えば、デフォルトのビットコインコア26.xを実行しているビットコインノードは、ブロック804000(2023年8月19日)より前のトランザクションのフルロックスクリプトの実行を検証しません。
上記のすべては、ブロックチェーンのさまざまな部分によってビットコインノードに課せられるさまざまなコストがあることを意味します。 各トランザクションの効果を判断するために必要なデータは、ジェネシスブロック3から同期する各ノードによって検証される必要があり、トランザクションのアウトプットは、長期的にはトランザクションのインプットよりもコストがかかる傾向があり(特に、トランザクションが長期間続く場合)、最新のトランザクションを除いて、witnessデータの多くはチェックさえされません。
分離された証人(SegWit)ソフトフォークは、これまでビットコインに加えられた最も野心的な変更です。この変更の最大の動機は、ビットコインのTXID4展 性5の長年の問題を解決することでした。 この順応性を修正するために、ロック解除スクリプトは新しく作成された「witness」に置き換えられます。 TXIDから認証データ(多くの場合、トランザクションの効果を変更せずに第三者によって変更される可能性があります)を削除することで、不変のTXIDに依存するプロトコル(Lightningなど)が可能になります。
承認データが元のトランザクション構造から移動されると、100 万バイトのブロック制限にはカウントされなくなります。 新しい制限が必要です。 当時、分離された監視データを制限するための多くのアプローチが議論されていました: 個別の監視バイト制限6、合計 100 万バイトの制限 <7、または重み付けされた結合制限。 最終的に、分離された証人データは 1 単位、トランザクション データは 4 単位、400 万の重みブロック制限で重み付けされた加重複合制限が選択されました。 各重み単位は、手数料計算の目的で仮想バイト (vByte) の 1/4 として扱われます。
なぜこのような重みがあるのでしょうか? トランザクションのインプットとアウトプットのコストを、分離されたwitnessがある場合とない場合で見てみましょう。
この表から最初に注目すべき点は、witnessスクリプトタイプ(P2WPKH、P2WSH)の入力バイト数と出力バイト数がほぼ同じであることです(それぞれフルvByteが課金されます)。 その後、witnessスクリプトの送信者は、支払いを承認するデータに対して1/4 vByteを請求されますが、その多くは最新のトランザクション以外では検証されず、UTXOインデックスに継続的なコストはかかりません。 ここで注目に値するもう1つのことは、単一の署名と比較して、より安全な2-of-3マルチシグを使用するコストが147vBytesから36.25vBytesに削減されることです。
冒頭で述べたように、ビットコインは人間のインセンティブに乗っていますが、ここでは、ネットワークを使用する当事者間のインセンティブの調整を改善するために、長年にわたってビットコインにどのような変化が加えられてきたかを見ることができます。
Taproot自体は、分離されたwitnessを使用してビットコインをロックする「単なる」代替方法です。 これらのインセンティブは大きく変わりません。 Taprootに伴う変更の1つは、スクリプトサイズに関する特定の制限を撤廃することでした。 これは、ビットコインスクリプトの分析ツールの設計の複雑さを軽減するため、また、さまざまな種類のデータの相対的なコストを認識するために行われました。 これらの制限を取り除いたことで、Taproot以前よりも碑文がシンプルになりましたが、ネットワークのインセンティブ構造を根本的に変えることはありませんでした。
さて、本題です。 碑文は証人で明らかにされるため、碑文データの1バイトあたり1/4 vByteしか課金されません。 これは証人割引の濫用ですか? 実際のところ、碑文データは、ネットワーク上のノードが検証する最も安価なデータの一部です。 碑文で使用されるスクリプト構造は、碑文データの実行を明示的にスキップするため、それに対して行われる検証は、単一のハッシュチェック(公開された碑文が刻印者が明らかにする予定のものであることを確認する)のみです。 このデータは一度ハッシュ化され、その後はノードによって再度参照されることはありません。 計算コストが非常に低くなっています(同等のサイズのマルチシグスクリプトよりも桁違いに低い)。
しかし、碑文は料金を押し上げ、他のユーザーを押し出しています。
はい!ビットコインネットワークとの対話に利用できる現在のソフトウェアでは、多くの人々が他の取引を行うよりも、碑文を作成する経済的インセンティブが高くなります。
これは、ビットコイン取引の経済密度を高めることの価値をはっきりと浮き彫りにしています。 ライトニングネットワークは、数百、数千、または数百万の経済取引を1つのビットコイン取引に詰め込むことで、これに向けて大きな一歩を踏み出します。 トランザクションの各バイトの経済密度が高いほど、その経済活動に支払われる手数料は低くなります。 ビットコイン取引の経済密度が高まるにつれて、ブロックスペースの他の用途はこれまでも、そしてこれからも価格が付けられ続けるでしょう9。
MuSig2やFROSTなどのオフチェーンマルチシグプロトコル、またはアダプター署名が普及した場合、立会い割引を減額または廃止することは理にかなっている場合があります。これらのプロトコルにより、大規模な支出条件を単一の署名で表すことができます。 これとTaprootの効率的なキーパス支出を組み合わせることで、ほぼ任意に複雑な条件を持つインプットのコストをわずか105バイトにまで下げることができます。
碑文によって引き起こされる高額な手数料に対する反応は、ビットコインの歴史の中で空が落ちている他のシナリオと同じです:辛抱強く構築し、辛抱強く構築します。 ビットコイン取引の経済密度を高めるために、より良いLightningウォレットの構築から Ark 、 個別のログ契約 など、私たちにできることはたくさんあります。 witnessディスカウントを(時期尚早に)削除したり、Taprootをロールバックしたり、同様の非生産的な行動をとったりすることは、現在のビットコイン取引の経済密度を低下させ、状況を悪化させるだけです。
謙虚さを保ち、サットを積み重ね、構築してください。
本記事はBrandon Black氏によるゲスト投稿です。 表明された意見は完全に独自のものであり、必ずしもBTC Incまたはビットコインマガジンの意見を反映しているわけではありません。