ビットコインアップグレード提案の解釈 Taproot: P2SH、MAST、および Schnorr 署名
以太坊爱好者
2021-09-26 03:31
本文约4458字,阅读全文需要约18分钟
この記事では、Taprootをさまざまな技術レベルから分析し、このアップグレードに関係するテクノロジーと、これらのテクノロジーがビットコインユーザーにどのようなメリットをもたらす

最初のレベルのタイトル

直根とは何ですか?

Taproot は、2018 年に Bitcoin Core の貢献者である Gregory Maxwell によって初めて提案されました。この実装は現在開発中です。 Taproot がなければ、これらの複雑なトランザクション (タイムロック、マルチ署名) は完了するまでに複数のトランザクションを必要とするため、簡単に失敗します。

Taproot は、複雑なトランザクション (マルチ署名、タイムロック) を単一のビットコイン トランザクションであるかのように実行できるようにすることで、ビットコインのプライバシーを強化します。

Taproot のアップグレードには、ビットコインのスケーラビリティ、プライバシー、柔軟性を強化するための 3 つの重要な技術的変更 (概念) が含まれています。

  • シュノアの署名

  • MAST

  • シュノアの署名

最初のレベルのタイトル

P2SH(Pay-to-ScriptHash)

ビットコイン アドレスは文字と数字の文字列です。ユーザーはそれを他の人と共有して、後者から BTC を受け取ることができます。ビットコイン トランザクションには、Pay-to-PubKeyHash (P2PKH) と Pay-to-ScriptHash (P2SH) という 2 つの主要な標準があります。

P2SH (Pay To Script Hash) と P2PKH (Pay-To-PubKey Hash) の 2 つの概念について説明する前に、ビットコインに関する背景知識を理解しておきましょう。

  • ビットコイン ネットワークでは、ビットコインは UTXO の形式で存在します。 UTXOとはUnspent Transaction (TX) Output(未使用トランザクション出力)の略称で、ビットコイントランザクションの実行後に形成される変動額面の単位です。たとえば、ビットコインウォレットに 10 BTC があり、友人に 5 BTC を送金したいとします。ビットコインブロックチェーンは異なる方法で処理されます。 10 BTC (全額) をすべて使い切り、5 BTC を友人のウォレットに転送し、残りの 5 BTC (10 BTC - 5 BTC = 5 BTC) を自分のウォレットに転送します。これで、あなたとあなたの友人はそれぞれ、未使用の 5 BTC を保有します。

  • ビットコインはスクリプト (数行のコード) を使用して、BTC/UTXO の使用条件を指定します。スクリプトはロック機構として使用されます。

  • BTCはスクリプトにロックされています。スクリプトが成功を返すと (つまり、条件が満たされると)、BTC のロックが解除されます。

  • 誰でも任意のビットコインアドレスにBTCを送信できます。スクリプトで定義された特定の条件が満たされた場合にのみ、ロックされた BTC を使用できます。スクリプトは、受信者が受信した BTC をどのように使うことができるかを決定します。トランザクションを開始するとき、送信者は次のトランザクションを実行します。「PubKey スクリプト (別名ロック スクリプト)」脚本。受取人(後で支出する場合)は、「署名スクリプト (別名ロック解除スクリプト)」、これは PubKey スクリプトを満たすデータ パラメーターのコレクションです。署名スクリプトは、コード内では「scriptSig」とも呼ばれます。

  • 最初のレベルのタイトル

Pay-to-PubKeyHash (P2PKH)

Pay-to-PubKeyHash は、従来のビットコイン アドレス形式です。そのアドレスは数字の 1 で始まります。

P2PKH アドレスの所有者のみが、公開鍵ハッシュと秘密鍵署名を提供することで、PubKey スクリプトのロックを解除し、受信した BTC を使用できます。秘密キーは、公開キー ハッシュの所有権を証明するために使用されます。

上で説明したように、スクリプトは特定のアドレスの BTC をどのような条件で使用できるかを定義します。指定された条件が満たされ、ネットワークによって検証されると、そのアドレスの BTC は使用できるようにロックが解除されます。

このプロセスはどのように機能するのでしょうか? —— 受信者はまず PubKey スクリプトを生成し、それを送信者と共有します。送信者は、BTC を送信するときにこの PubKey スクリプトをトランザクションに追加します。 BTC を受信するときに、受信者がこれらの BTC UTXO のロックを解除したい場合は、公開鍵ハッシュと秘密鍵署名を提供し、PubKey スクリプトに記載されている条件を満たす必要があります。

たとえば、次のような条件が考えられます。

  • BTC のロックを解除するには、少なくとも 2 つの署名が必要です。

  • ロックを解除するにはパスワード (パスワード) を入力します。

  • BTCのロックが解除されるまでには時間がかかります。

上記の状況は、BTC のロックを解除するための条件として使用できます。

ビットコインを送信する場合、送信者はトランザクションに含める必要があります公開鍵スクリプト。したがって、取引量が増加し、通常の取引の約5倍の取引手数料が発生します。

最初のレベルのタイトル

Pay-to-ScriptHash (P2SH)

Pay To Script Hash (P2SH) は、送信者が追加コストを回避し、この責任 (追加コスト) を、ロック スクリプトで指定された条件を使用する必要がある受信者に移すのに役立ちます。 Pay-to-ScriptHash ビットコイン アドレスは数字の 3 で始まります。

このトランザクション標準では、送信者は長い PubKey スクリプトをトランザクションに組み込む必要がありません。ここで、ロック スクリプトは引き換えスクリプトのハッシュに置き換えられます。引き換えスクリプトのハッシュ値は、引き換えスクリプトによって計算されます。 Redeem スクリプトは PubKey スクリプトに似ており、未使用の出力を消費する前に受信者が満たさなければならない条件が含まれています。送信者は、トランザクション内で償還スクリプトのハッシュを指定するだけで済みます。引き換えスクリプトのハッシュは標準のビットコイン アドレスに変換でき、送信者は特別なアクションや追加料金なしでこれらのアドレスに BTC を送信できます。

受信者がこの P2SH アドレスで BTC のロックを解除したい場合は、同じハッシュ値を持つ引き換えスクリプトを生成し、トランザクションに含める必要があります。その結果、受信者が UTXO のロックを解除するために使用するトランザクションのサイズが増加し、トランザクションの実行コストも増加します。

たとえば、アリスはボブに 10 BTC を送金したいとします。アリスは、引き換えスクリプトのハッシュをトランザクションに含める必要があります。まず、ボブ氏は償還スクリプトを生成し、次に償還スクリプトのハッシュ値をアリスに送信します。これにより、アリスはハッシュをトランザクションに追加してトランザクションを開始できるようになります。ボブがこの UTXO を使いたい場合は、同じハッシュ値を持つロック解除スクリプトを生成し、スクリプトに記載されている条件を満たす必要があります。

文章

Pay-to-ScriptHash の利点

  • 長いスクリプトの代わりにハッシュを使用します。

  • 送信者は、スクリプトで指定された支出条件を知らなくても、トランザクションに引き換えスクリプト ハッシュをいくつでも入れることができます。

  • 最初のレベルのタイトル

(……)

MAST (マークル抽象構文ツリー)

マストはメルケル化抽象構文ツリー (メルケル抽象構文ツリー)の略称。

MAST を使用する理由P2SH アドレスから BTC を使用したい場合は、同じハッシュを使用して引き換えスクリプトを生成し、トランザクションに含める必要があります。スクリプトで規定した利用条件が多すぎると、取引量が非常に多くなってしまいます。 MAST はこの問題をうまく解決できます。

マークル抽象構文ツリーは、マークル ツリーと抽象構文ツリーを組み合わせたものです。

Pay To Script Hash (P2SH) が X のハッシュでスクリプトに支払うのと同じように、MAST は X のハッシュでマークル ルートに支払います。 MAST は、大規模な条件セット内の各条件をハッシュ ツリー (いわゆるマークル ツリー) に組み立てることです。マークル ツリーのルート値は、すべての条件でハッシュ化されたハッシュ値です。

マークルルートとハッシュツリーはどのように生成されるのでしょうか?

まず、すべてのスクリプト(条件)に対してハッシュ計算を実行し、計算されたハッシュ値と隣接するハッシュ計算用のハッシュ値を組み合わせて、新しいハッシュ値のセットを生成します。最後のハッシュ値が計算されるまで、この 2 行 2 列のハッシュ計算プロセスを繰り返します。このハッシュはマークル ルートです。

4 つの条件セットがあるとします。まず、これら 4 つの条件グループのハッシュ値を個別に計算し、次にこれら 4 つのハッシュ値をペアにして 2 つのハッシュ値を計算し、最後にこれら 2 つのハッシュ値を組み合わせてハッシュ計算し、最終的なハッシュ値を生成します。この最終ハッシュはマークル ルートです。

このマークル ルートは、支払いを受け取ることができる有効なビットコイン アドレス、つまりデフォルトのビットコイン アドレスに変換できます。マーク化されたビットコインアドレス。マークル ビットコイン アドレスには多くの利点があります。主な利点は、スクリプトがこのマークル ツリー上にあるかどうかを確認するためにすべてのスクリプト ユニットを知る必要がないことです。このテクニックはと呼ばれますマークルプルーフ、これを使用すると、ビットコイン UTXO に特定のロック解除条件が含まれていることを簡単に検証できます。

シュノアの署名

シュノアの署名

暗号化において、シュノア署名は、Claus Schnorr によって提案されたシュノア署名アルゴリズムによって生成されるデジタル署名です。 Schnorr 署名アルゴリズムは、そのシンプルさで知られるデジタル署名スキームであり、複数の署名を 1 つの署名に集約することで検証および認証プロセスを最適化します。このスキームはマルチ署名トランザクションに適しています。

トランザクションを実行するには、秘密キーを使用してトランザクションに署名し、特定の公開キーの背後にある BTC の所有者であることを証明する必要があります。ただし、複数署名トランザクションを実行するには、複数の署名を提供する必要があります。これらの署名は追加のスペースを占有します。

シュノアの署名シュノアの署名たまたまこの問題が解決しただけです。

Schnorr 署名を理解するために、2 つの例を見てみましょう。

  • (……)

  • もう 1 つのケースは、マルチシグ トランザクションです。 100 個の署名が必要で、各署名のサイズが 5 バイトであると仮定すると、Schnorr 署名スキームはこれら 100 個の署名をサイズ 64 バイトの Schnorr 署名に結合できます。 436 バイト (5*100-64=436) のメモリを節約すると、より多くのトランザクションを保存するために使用できます。 (注: 現在の楕円曲線署名は 5 バイトを超える可能性があります)

最初のレベルのタイトル

ビットコインのタップルート: 概要

この記事では主に以下の点を中心にTaprootを紹介します。

  • Taproot は、Bitcoin Core の貢献者である Gregory Maxwell によって 2018 年に提案された Bitcoin アップグレード案です。

  • Taproot は、マルチシグネチャトランザクションやタイムロックトランザクションなどの複雑なトランザクションを通常のビットコイントランザクションのように見せ、ビットコインのプライバシーを強化します。

  • Taproot アップグレードには主に、P2SH、MAST、Schnorr シグネチャという 3 つの技術コンセプトが含まれています。

  • ビットコインはスクリプトを使用して、BTC/UTXO (未使用のトランザクション出力) の使用条件を示します。

  • Pay To Script Hash (P2SH) は、送信者が追加のトランザクション手数料を回避し、ロック スクリプトで規定された条件を実際に使用する必要がある受信者にこの責任 (追加のトランザクション手数料) を移すのに役立ちます。

  • MAST を使用すると、マークル抽象構文ツリーを使用してビットコインをロックできます。マークル ツリー (マークル ルートに対応) は、未使用の BTC をロック解除できるすべての複雑な条件を決定します。マークライズされた抽象構文ツリー (MAST) は、BTC トランザクションのサイズを削減するためにビットコイン ブロックチェーンに導入され、受信側がトランザクションに長いスクリプトを添付する必要がなくなることが提案されています。マークル ルートのみを使用すると、受信者が生成したスクリプトが元の条件セットに属していることを確認できます。

  • 元のリンク:

元のリンク:

https://b10c.me/blog/004-the-incomplete-history-of-bitcoin-development/

作者: 0xB10C

以太坊爱好者
作者文库