BitVM:ビットコイン上で何でも計算する

ロビンLinux翻訳者によって書かれた:デンリンクコミュニティ翻訳グループ

まとめ

BitVMは、チューリング完全ビットコイン契約を表現するために使用されるコンピューティングパラダイムです。 これには、ビットコインネットワークのコンセンサスルールを変更する必要はありません。 ビットコインで計算を実行するのとは異なり、楽観的なロールアップと同様に、単に検証されます。 証明者は、特定の関数が特定の出力に対する特定の入力に対して評価されることを宣言します。 主張が虚偽の場合、検証者は詐欺の簡潔な証拠を作成し、証明者に罰則を科すことができます。 このメカニズムを使用すると、任意の計算可能関数をビットコインで検証できます。

Taprootアドレスで大規模なプログラムを約束するには、多くのオフチェーン計算と通信が必要ですが、チェーン上のフットプリントは小さいです。 2つの当事者が協力している限り、チェーンに痕跡を残さずに、任意に複雑でステートフルなオフチェーン計算を実行できます。 オンチェーンの施行は、紛争の場合にのみ必要です。

1 はじめに

設計上、ビットコインのスマートコントラクト機能は、署名、タイムロック、ハッシュロックなどの基本的な操作に限定されています。 BitVMは、より表現力豊かなビットコインコントラクトとオフチェーンコンピューティングのための新しいデザインスペースを作成します。 潜在的なアプリケーションには、チェス、囲碁、ポーカーなどのゲームや、ビットコイン契約の有効性の証明の検証が含まれます。 さらに、ビットコインを外部チェーンに橋渡ししたり、予測市場を構築したり、新しいオペコードをシミュレートしたりすることが可能かもしれません。

ここで紹介するモデルの主な欠点は、証明者と検証機の2つのセットアップでしか機能しないことです。 もう一つの制限は、証明者と検証者にとって、プログラムを実行するために多くのオフチェーン計算と通信が必要とされることです。 ただし、これらの問題は、さらなる研究で対処することが有望であるように思われます。 この作業では、2 パーティの BitVM の主要コンポーネントにのみ焦点を当てます。

2 スキーマ

楽観的なロールアップ1で[2] [3] そしてMATTの提案(メルケライズ・オール・ザ・シングス)2 同様に、当社のシステムは、不正防止およびチャレンジレスポンスプロトコルに基づいています。 ただし、BitVM では、ビットコイン のコンセンサスルールを変更する必要はありません。 基になるプリミティブは比較的単純です。 これは主に、ハッシュロック、タイムロック、および大きな主根ツリーに基づいています。

証明者はプログラムを少しずつチェーンに送信しますが、チェーン上のすべてを検証すると過剰な計算リソースが消費されるため、検証者は一連の精巧なチャレンジを実行して、証明者の虚偽の主張を簡潔に改ざんします。 証明者と検証者は一緒になって、後で紛争を解決するために取引に対応するという一連の課題に事前に署名します。

このモデルは、このアプローチがビットコインに関する普遍的な計算を可能にすることを簡単に説明することを目的としています。 実用的なアプリケーションでは、より効率的なモデルを検討する必要があります。

プロトコルは単純です:最初に、証明者と検証者はプログラムを巨大なバイナリ回路にコンパイルします。 証明者は、回路をTaprootアドレスに送信し、そのアドレスの各論理ゲートのリーフスクリプトを使用します。 さらに、証明者と検証者の間のチャレンジレスポンスゲームをサポートするために、一連のトランザクションに事前署名します。 必要なデータをすべて交換したので、生成されたTaprootアドレスにオンチェーン預金を転送できます。

これによりコントラクトがアクティブ化され、オフチェーンデータの交換を開始して、回線の状態変更をトリガーできます。 証明者が虚偽の主張をした場合、検証者は彼らの預金を受け取ることができます。 これにより、攻撃者は常に預金を失うことになります。

3ビット値のコミットメント

ビット値のコミットメントは、このシステムの最も基本的なコンポーネントです。 これにより、証明者は特定のビットの値を「0」または「1」に設定できます。 特に、証明者は異なるスクリプトとUTXOの間で変数の値を設定することができます。 これは、ビットコイン の仮想マシンの実行時間を複数のトランザクションに分割することで実行ランタイムを拡張するため、非常に重要です。

プロミスには、hash0 と hash1 の 2 つのハッシュ値が含まれています。 後で、証明者は、preimage0 (hash0 の前イメージ) を明らかにすることによってビットの値を "0" に設定するか、preimage1 (hash1 の前イメージ) を明らかにすることによって "1" に設定します。 ある時点で、preimage0とpreimage1の両方が明らかになった場合、バリデーターはそれらを詐欺の証拠として使用し、証明者の預金を受け取ることができます。 これは矛盾した声明と呼ばれます。 矛盾した声明を罰することができることは、コミットメントを拘束力のあるものにするものです–それは「インセンティブベースのコミットメント」です。

ビット値の約束とタイムロックを組み合わせることで、バリデーターは証明者に特定の時間枠内の特定のビットの値を決定させることができます。

図1:ビット値コミットメントの実装図1:1ビットコミットメントの実装。 このスクリプトのロックを解除するには、証明者は hash0 または hash1 の前イメージの 1 つを明らかにする必要があります。 この例の実行では、証明者は hash1 を明らかにし、ビットの値を "1" に設定します。 この約束を複製して、さまざまなスクリプトで特定の値を適用できます。

簡単にするために、ここからは、上記のスクリプトの省略形であるOP BITCOMMITMENTと呼ばれるオペコードがあると仮定しましょう。 オペコードは、2 つのハッシュと 1 つのハッシュされたプリイメージを消費します。 更新前イメージに一致するハッシュに基づいて、スタックにビット値を配置します。

4 論理ゲートの約束

計算可能な関数は、ブール回路として表すことができます。 NANDゲートはユニバーサル論理ゲートであるため、任意のブール関数で構成できます。 モデルをシンプルに保つために、単純なNANDゲートでアプローチがどのように機能するかを示します。 さらに、ドアを任意に組み合わせる方法を示します。 これはすべて、BitVMが任意の回路を表現できることを証明しています。

NANDゲートの約束の実現は簡単です。 これには、2つの入力を表す2つのビットプロミスと、出力を表す1ビットコミットメントが含まれています。 このスクリプトは、2 つの入力の NAND 値を計算して、約束された出力ビットと一致することを確認します。

図2:NAND動作のゲートコミットメント 図2:NAND動作のゲートコミットメント。 このスクリプトを実行するには、A NAND B = C が真になるように、ビット約束 A、B、および C の値を明らかにする必要があります。

(ここでは、簡単にするために、OP NANDという名前のオペコードが存在すると仮定しましょう。 実際には存在しませんが、OP BOOLANDとOP NOTを使用して簡単に実装できます。 )

5バイナリ回路の約束

前のセクションでは、NAND ゲート コミットメントを定義しました。 ゲートの約束を組み合わせることで、任意の回路を表すことができます。 実行のすべてのステップはTapleafでコミットされます。 これらはすべて同じTaprootアドレスにマージされるため、証明者は回路内の任意のゲートを実行できます。 ゲートを実行するには、証明者が対応するゲートプロミスを開き、その入力ビットと出力ビットの値を設定する必要があります。

Taptreeは巨大になり、10億のTapleafスクリプトを持つ可能性がありますが、そのオンチェーンフットプリントは小さいです。

図3:ランダムな回路例 図3:8つの異なるNANDゲートと4つの入力A、B、C、Dを備えたランダムな回路例 数十億のゲートを使用して、基本的に任意の関数を定義できます。

図4図4:各ゲートについて、証明者のTaprootアドレスには、対応するゲートプロミスを持つリーフスクリプトが含まれています。 これにより、証明者は任意の時点で回路の入力値を設定できます(ここではA、B、C、D)。

6 課題と対応

回線にコミットするだけでは不十分です。 誤った主張に反論するために、検証者は証明者の声明に異議を唱えることができなければなりません。 これは、セットアップ中に一連のトランザクションに事前署名することで実現できます。 これらのトランザクションは、→課題に対応し→→→に対応します... ウェイリンク。 一方の当事者が参加を停止した場合、タイムアウト期間の後、他方の当事者がチャレンジに勝ち、両方の当事者の預金を受け取ることができます。 両当事者が協力している限り、2-of-2署名を通じて契約を解決するために協力することができます。 次のメカニズムは、詐欺がある場合にのみ必要です。

図5:一連の署名済みトランザクション図5:複数のラウンドのチャレンジと応答を実行するための署名済みの一連のトランザクション。 このシーケンスは、セットアップ中に生成されます。

ヴィッキーは、タップリーフでハッシュロックを開くことでチャレンジを選択します。 これにより、ポールの特定のタップのロックが解除され、ポールにそれを実行するように強制されます。 脚本はポールにヴィッキーチャレンジのドアの約束を明らかにすることを強制します。 このプロセスを数回のクエリで繰り返すことで、一貫性のない主張にすばやく反論できます。

証明者がバリデーターとのオフチェーンでの協力をやめた場合、バリデーターは証明者にオンチェーンで行動させる方法を必要とします。 バリデータはハッシュロックを解除することでこれを実現します:証明者のUTXOの各NANDタップリーフは、証明者が認証者が保持するプリイメージを知っている場合にのみ使用できます。 したがって、証明者は、その入力と出力を明らかにすることによって、特定のTapleafが正しく機能することを証明できますが、検証者がそのTapleafを保護するハッシュのプリイメージを明らかにすることによってそれを「ロック解除」する場合に限ります。 バイナリ検索を適用することで、バリデーターは、わずか数回のチャレンジと応答の後に証明者のエラーをすばやく特定できます。

図6:各応答の後、Vickyはあいまいな行動にペナルティを科すことができます。 ポールが2つの相反する値を変数に公開した場合、ヴィッキーはすぐにチャレンジに勝ち、預金を受け取ることができます。 ヴィッキーは、彼のビットによって約束された2つのプロトイメージのいずれかを明らかにすることによって、ポールの曖昧さを証明します。

7 入力と出力

証明者は、対応するビットの約束を明らかにすることによって入力を設定できます。 理想的には、オンチェーンの占有率を最小限に抑えるために、オフチェーンのコミットメントを明らかにします。 非協力的なケースでは、バリデーターは証明者にオンチェーンで入力を明らかにするように強制することができます。

事前に暗号化を交換することで、大量のデータを処理できます。 このようにして、証明者は後で復号化キーを明らかにすることができます。

マルチパーティ入力も可能です。 ドアは両側からのビットコミットメントを持つことができます。

8 制限事項と展望

単純なNAND回路で関数を表現するのは非効率的です。 より高度なオペコードを使用することで、プログラムをより効率的に表現できます。 たとえば、ビットコインスクリプトは32ビットの数値の追加をサポートしているため、バイナリ回路は必要ありません。 たとえば、単一のハッシュで32ビットなど、より大きなビットの約束を持つこともできます。 さらに、スクリプトのサイズは約 4 MB に達する可能性があります。 したがって、各リーフスクリプトに複数のNAND命令を実装できます。

ここで紹介するモデルは、2 つのパーティに限定されています。 ただし、双方向チャネルを持ち、それらをリンクして、ライトニングネットワークと同様のネットワークを形成することは可能な場合があります。 両方の設定を調べると、興味深い汎化の可能性が得られます。 たとえば、ネットワークの 1 から n のスター型トポロジを調べることができます。 別の研究課題は、モデルをn対nのセットアップに適用して、より複雑なチャネルファクトリを作成できるかどうかです。 さらに、システムをライトニングネットワークやロールアップなどのさまざまなオフチェーンプロトコルと組み合わせることができます。

その他の研究の方向性には、クロスアプリケーションメモリ、チェーンに刻まれた任意のデータに関するステートメントの作成方法、またはオフチェーンのプログラム可能な回路、つまりオフチェーンの仮想マシンが含まれます。 STARKsと同様に、より高度なサンプリング技術を適用して、1ターンで回路を調べることもできます。

次の大きなマイルストーンは、具体的なBitVMの設計と実装、およびビットコインコントラクトの作成とデバッグのための高水準言語であるTree++の完了です。

9 まとめ

ビットコインはある意味でチューリング完全であり、大規模なTaptreeで不正防止をコーディングすることで、あらゆるプログラムの実行を検証します。 このモデルの主な制限は、両方の当事者の場合にのみ機能することです。 一般化がさらなる作業で行えることが期待されています。

謝辞

スーパーテストネットとサムパーカーに特に感謝します, ビットコインチューリング完全ではないと常に信じてきた人.

参考文献

[1] イーサリアムリサーチ。 楽観的なロールアップ。 2022.

[2] サルヴァトーレインガラ。すべてのものをマークライズします。, 2022.

リソース

[1] 翻訳チーム:

[2] 楽観的ロールアップ 1:

[3] MATT 提案(Merkelize All The Things)2:

原文表示
このページには第三者のコンテンツが含まれている場合があり、情報提供のみを目的としております(表明・保証をするものではありません)。Gateによる見解の支持や、金融・専門的な助言とみなされるべきものではありません。詳細については免責事項をご覧ください。
  • 報酬
  • コメント
  • 共有
コメント
0/400
コメントなし
いつでもどこでも暗号資産取引
qrCode
スキャンしてGateアプリをダウンロード
コミュニティ
日本語
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)