著者: Che Kohler編集: Cointime.com 237
ビットコインが数十億ドルのネットワークに成長し、毎日数十億ドルの取引が行われるようになると、当然のことながら、提案された変更は厳しい監視の対象となります。人々がビットコインに投資する価値、そしてトランザクションの決済によって生み出される価値は、コードの変更を軽く扱うにはあまりにも重要です。
また、私たちはこれまでに使用されたことのないツールを使用しているため、市場がどのようにアップデートを受け取るかはわかりません。このため、プロトコルの変更は非常に複雑なトピックになります。その一例は、2016 年から 2017 年にかけて行われた SegWit2x 提案と Taproot に関する激しい議論です。
ビットコインの発展に伴い、特にソフトフォークを必要とするBIP(ビットコイン改善提案)を押し進めることはますます困難になってきています。たとえば、SIGHASH_ANYPREVOUT とその前身については 2016 年から議論されてきました。
ビットコインのコードベースの厳格さにより、十分にテストされたアイデアのみが確実に通過し、その他のアイデアは基礎となるチェーンを引きずることなくレイヤー 2 ソリューションにプッシュされます。
しかし、それは、将来的にビットコインのアップグレードの提案が見られないことや、ビットコイン コアの更新バージョンとしてコードベースにマージされないことを意味するものではありません。
アップグレードについてある程度理解できたところで、BIP-118 とそれが長い間存在し続けている理由を見てみましょう。
ANYPREVOUTとは何ですか?
シンプルなコントラクトとより優れたオフチェーンプロトコルに対する関心と需要を考慮すると、BIP118 はビットコインに利益をもたらし、そのスケーリング方向に適合する可能性のあるソフトフォーク候補です。
BIP 118 はもともと 2017 年に作成され、当時は SIGHASH_NOINPUT として知られていました。この提案はもともと、「トランザクション改ざん可能性」として知られる問題を解決するために、Lightning Network ホワイト ペーパーの著者 (Joseph Poon および Thaddeus Dryja) によって提案されたもので、後に SegWit によって解決されました。
BIP-118 は、トランザクションが特定の以前のトランザクション出力だけでなく、SIGHASH_ANYPREVOUTANYSCRIPT (APOAS) の場合に同じ署名キーを使用してトランザクション出力を使用したり、特定の金額でトランザクションを使用したりすることを可能にするソフト フォークを提案しています。 script 出力 (SIGHASH_ANYPREVOUT (APO) の場合)。
新しい公開キー タイプのプレフィックスを参照する Taproot トランザクションのタップルート スクリプト パスの支出のみが、これら 2 つの署名ハッシュの使用を有効にします。
ANYPREVOUT は、1 つの署名を使用して同じスクリプトで未使用のトランザクション出力 (UTXO) を使用できるようにする署名ハッシュタグです。これは、署名が使用される UTXO に固有である必要がないことを意味し、場合によっては非常に便利です。
つまり、ANYPREVOUT では、以前のトランザクションに関連する情報の一部に署名しないことが許可されます。このタイプの署名ハッシュマークを持つトランザクションは過去のトランザクションにリンクされておらず、同じ公開キー (または使用条件) を持つ任意のビットコイン アドレスからビットコインを使用できます。
つまり、ANYPREVOUT では、以前のトランザクションに関連する情報の一部に署名しないことが許可されます。このタイプの署名ハッシュマークを持つトランザクションは過去のトランザクションにリンクされておらず、同じ公開キー (または使用条件) を持つ任意のビットコイン アドレスからビットコインを使用できます。
ANYPREVOUT の仕組み
ANYPREVOUT は、入力 scriptPubKey、シーケンス番号、および出力の消費額をハッシュすることによって機能します。次に、トランザクションはそのハッシュを使用して署名されます。
後でトランザクションが検証されると、署名がチェックされ、scriptPubKey およびシーケンス番号と一致するかどうかが確認されます。署名が有効であれば、トランザクションは有効であるとみなされます。
ANYPREVOUT を使用する利点
ANYPREVOUT を使用すると、いくつかの利点があります。まず、トランザクションを作成するプロセスが簡素化されます。
たとえば、同じスクリプトの複数の UTXO を使用するトランザクションを作成するとします。この場合、各 UTXO に個別に署名する代わりに、ANYPREVOUT を使用してトランザクション全体に一度に署名できます。
第 2 に、ANYPREVOUT はトランザクションのプライバシーを向上させることができます。通常の署名ハッシュ トークンを使用する場合、署名は使用される UTXO に固有のものになります。これは、誰かが使用されている UTXO のハッシュを知っていれば、署名も知ることができることを意味します。ただし、ANYPREVOUT を使用すると、署名は使用される UTXO から独立するため、誰かがトランザクションを追跡することがより困難になります。
別の使用例は、CHECK TEMPLATE VERIFY の代わりに「contract」の代替形式です。これらのコントラクトにより、ブラインド ステート チェーンやスペース チェーンなどのより複雑なスマート コントラクトを有効にしたり、より安全なビットコイン保管庫を作成したり、Eltoo を使用したりできます。
コントラクトは、トランザクションが特定の条件下でのみ使用できるようにする方法であり、この小さなトリックを使用して、t+1 番目のトランザクションの署名をトランザクションの出力に埋め込むことができます。
ANYPREVOUT を使用するデメリット
ANYPREVOUT の使用にはいくつかの欠点もあります。
まず問題は、トランザクションがブロードキャストされると、以前に署名されたトランザクションを元に戻したり、「取り消したり」する方法がないことです。新しいトランザクションに署名し、誰かがそれを使用しようとした場合に前のトランザクションを更新またはキャンセルする許可を与えることのみが可能ですが、前のトランザクションを取り戻すことはできません。
第二に、すべてのビットコイン ウォレットが ANYPREVOUT をサポートしているわけではありません。つまり、ANYPREVOUT を使用したい場合は、自分のウォレットと受信者のウォレットがそれをサポートしていることを確認する必要があります。
ソフトフォークと下位互換性
レガシー ソフトウェアはソフト フォークの場合でも修正なしで機能し続けるため、これらの機能に対処したくないユーザーは通常どおり使用し続けることができます。
BIP 341 をサポートするようにアップグレードされていないノードは、すべての Taproot 監視プログラムを誰でも使用できるスクリプトとして扱います。BIP 341 および BIP 342 をサポートするようにアップグレードされているが、BIP 118 をサポートするようにアップグレードされていないノードは、空でない署名はすべて有効とみなされます。
したがって、ノードは、新しい種類の公開鍵の署名を完全に検証するためにアップグレードすることが推奨されます。
アップグレードされていないウォレットは、SegWit バージョン 0 プログラム、公開鍵ハッシュへの従来の支払い、その他の方法を使用して、アップグレードされていないウォレットとアップグレードされたウォレットでビットコインを送受信できます。
実装によっては、BIP350 Bech32m アドレスへの送信をサポートし、出力が非標準とみなされトランザクション ブロードキャストをブロックしない場合、アップグレードされていないウォレットでも SegWit バージョン 1 プログラムに送信できる場合があります。
よりスムーズなオンチェーンおよびオフチェーン移行
ANYPREVOUT は場合によっては便利な機能であり、現在はそれほど普及していないかもしれませんが、将来的には間違いなく影響を与えるでしょう。より多くのビットコイン ユーザーを引き付ける場合、オンチェーン プロトコルとさまざまなオフチェーン プロトコルの間のフローをよりスムーズにする必要があり、そうしないと、スケーリング ソリューションがその効果を完全に実現できなくなります。
高額な手数料や競争の激しいブロックスペース環境で従来のオンチェーントランザクションを依然として使用していると仮定すると、手数料が正当化されるまで第 2 層の閉鎖的なエコシステムに閉じ込められるか、オンチェーンとチェーン外で何が起こるか様子を見ることになります。 -chain これはビットコインにとって理想的な状況ではありません。
全てのコメント