スマート コントラクトはビットコイン ネットワークにどのように実装されますか?
作者: サイモン・シー
前回の記事「BTC エコロジカル拡張計画のツアー: 碑文をどこに行けばよいか」では、人気のある碑文エコロジーの技術原則と考えられるセキュリティ問題について説明し、再帰的碑文を使用してスマート コントラクトを実装する可能性について言及しました。ただし、Taproot スクリプトに対する Luke の制限により、再帰的な書き込みにはいくつかの障害があるようです。では、ビットコイン ネットワークにスマート コントラクトを実装する他の可能性はあるのでしょうか?
ブロックチェーン開発者ZeroSyncの共同創設者であるロビン・ライナス氏は、2023年10月9日に「BitVM: Compute Anything on Bitcoin」と題した論文を発表し、その中でビットコインブロックチェーンにスマートコントラクトを導入する計画を立ち上げたことを提案した。
この論文は、タップルートを使用してほぼすべての任意の計算を実行し、これらの計算を使用してビットコイン チェーン外で何が起こっているかを検証するという非常に興味深いアイデアを提案しています。秘訣は、すべてのロジックをオフチェーンに保ち、他の人が不正な結果を主張した場合に、数ステップの計算でオンチェーン上で不正な結果に異議を唱えることです。
言い換えれば、それは、ビットコインネットワークに検証者のロジックを置き、ビットコインの強力なコンセンサスセキュリティを使用してチューリング完全なコンピューティング層にとって信頼できるサードパーティになり、その後、オプティミスティックロールアップの原理を使用してオフを実現することです。 -チェーン計算結果の検証。
では、Verifier ロジックの一部を Bitcoin ネットワークに組み込むにはどうすればよいでしょうか?前節の「彫刻」と同様に、これをビットコインネットワーク上の回路を「エッチング」する技術と呼びたいと思います。
コンピューターや携帯電話の内部では、電気が一連の 1 と 0 を供給することでコンピューターのすべての機能を実行します。これは、論理ゲートと呼ばれる何百万もの小さなコンポーネントによって実現されます。これらの論理ゲートは、コンピューター チップの基本的な構成要素です。
各論理ゲートは 1 つまたは 2 つの「ビット」の情報を受け取り、各ビットは 1 または 0 のいずれかになります。次に、論理ゲートは、「AND」、「OR」、「NOT」演算など、設定されたルールに従って単純な論理演算を実行します。これらの演算の結果もビット、1 または 0 になります。演算が完了すると、結果が次の論理ゲートに渡されます。
単純な論理演算に基づくこのシステムにより、最も複雑な計算や関数も、多数の単純な論理演算を組み合わせることで実現できることが明らかになりました。論理ゲートのこの組み合わせと連携は、現代のコンピューターや電子デバイスが複雑なタスクを実行できる基礎となっています。これらの基本的な論理演算を通じて、コンピューターは複雑な算術演算、データの保存、画像のレンダリング、その他の機能を処理できます。
下の写真は、「NAND ゲート」と呼ばれる非常に特殊な論理ゲートです。あらゆる種類の論理ゲート回路を構築できます。もちろん、他の特殊な種類のゲートほど効率的ではありませんが、それでも実行できます。 BitVM の論理ゲート回路は NAND ゲートで構成されています。
既存のビットコイン スクリプト上に NAND ゲートを構築するには、ハッシュ ロックと、あまり知られていない 2 つのオペコード (OP_BOOLAND と OP_NOT) を組み合わせます。
まず、ハッシュ ロックを使用して、ハッシュ ロックを満たすか、ハッシュ ロック B を満たすかの 2 つの方法のいずれかで使用できるブランチ スクリプトを作成できます。したがって、パス A はスタックに 1 を置き、パス B はスタックに 0 を置きます。
特定のハッシュ ロックを満たすことで、これから構築する NAND ゲートへの入力の 1 つとして機能するビットを「ロック解除」できます。パスの 1 つの要件のみを満たすことができるため、このアプローチではユーザーは一度に 1 ビットしか送信できません。
NAND ゲートのロジックは、2 ビットを入力として受け取り、1 ビットを出力します。両方の入力ビットが 1 の場合、出力は 0 になり、入力が他の組み合わせの場合、出力は 1 になります。 2 つのハッシュ ロック トリックを使用すると、これら 2 つの入力を送信し、出力が正しいことを確認できます。これが OP_BOOLAND と OP_NOT の目的です。
OP_BOOLAND の動作は NAND ゲートの逆です。両方の入力が 1 の場合、出力は 1 になります。入力のその他の組み合わせでは 0 が生成されます。 OP_NOT は入力の逆の値を出力します。したがって、これら 2 つのオペコードを組み合わせることで、2 つの入力を取得し、スクリプト スタックで逆和を実行できます。最後に、OP_EQUALVERIFY とハッシュ ロック トリックを使用して、アサーションの出力を検証できます。スタック上の実際の NAND 演算結果がユーザーによってアサートされた出力と一致しない場合、スクリプトは検証に失敗します。
このようにして、NAND ゲート回路がビットコイン スクリプトに「エッチング」され、ビットコイン スクリプトを通じて仮想 NAND ゲート操作が効果的に強制されます。
Taproot スクリプトを使用して回路のエッチングを実現するというアイデアはクールですが、PC のような超大規模回路は言うまでもなく、一連の計算を実装するには数千の NAND ゲート回路が必要であり、ビットコインでは限界があります。 Taproot スクリプト空間での複雑な計算をカバーしますか?
BitVM では、Taproot スクリプト ツリー (Taproot Tree) 方式を提案しています。ビットコイン スクリプトで複雑な計算プロセスを実装するには、論理ゲートを直列に接続して計算回路を構築します。このスキームでは、ハッシュ ロックを使用して個々のドアをバインドし、論理演算の順次実行を実現します。具体的には、あるゲートのスクリプトが異なるハッシュ プリイメージ (ハッシュ プレーンテキスト値) 入力に基づいて異なる出力結果 C1 または C2 を生成する場合、次のゲートは一致するハッシュ ロック値を入力として使用します。
このメソッドはペナルティ メカニズムを実装できます。つまり、前のゲートの結果について嘘をつこうとした場合、別のハッシュ ロックの元のイメージしか明らかにできません。このメカニズムは、2 人のユーザー間の対話型コンピューティングに使用できます。ユーザーは、特定のコンピューティング タスクに参加することに事前に同意し、コンピューティング プロセスを NAND ゲートのみで構成される回路に分解します。回路内の各ゲートに適切なハッシュ ロックを選択し、それを UTXO をロックするスクリプト ツリーにエンコードする必要があります。
次に、複数のアドレスを使用してタップルート アドレス マトリックスを形成し、その論理回路が、タップルート ツリー メソッドを通じてツリー構造で接続された一連の UTXO トランザクションのタップルート スクリプトに組み込まれ、最終的に「契約のような」ロジックを形成します。特定のコンピューティング タスクを処理できる回路。
不正チャレンジは OP (オプティミズム ロールアップ) テクノロジーの中核です (まだ実装されていませんが~)。そのアイデアは、トランザクションのバッチがバッチで送信される前に、チャレンジャーが不正チャレンジ (プレッジ vs. ベット) を開始するというものです。メインネット上の Verifier コントラクトは、実行後のステートルートの変化に基づいて提出者が悪事を行ったかどうかを判断し、その後、双方が誓約した資産を割り当てます。
bitVM では、スクリプト ツリーは 2 つの回路に設計されており、証明者が 1 つの回路に提出できることに加えて、挑戦者も証明者のステートメントに異議を唱えることができる必要があります。これは、一連のトランザクションに事前署名することで実現できます。これらの事前署名されたトランザクションは、「チャレンジ -> レスポンス -> チャレンジ ->…」を通じて接続されます。一方の当事者が一定期間停止した場合、もう一方の当事者がチャレンジに勝利し、両当事者のデポジットを回収します。
上の画像は、一連の事前署名されたトランザクションを示しています。
矛盾した声明は、数回の調査後にすぐに反駁できます。証明者がオフチェーンで挑戦者との協力をやめた場合、挑戦者は証明者にチェーン上で協力することを強制します。挑戦者がハッシュロックを解除するたびに、証明者のUTXOの各NANDゲートに対応するタップルートリーフノードは、それのみを持ちます。証明者が挑戦者が保持する事前イメージを知っている場合にのみ消費できます。証明者は、入力と出力を明らかにすることで、特定の Taproot リーフ ノードが正しく実行されることを証明できます。前提として、挑戦者は、Tapleaf に対応するハッシュの元の画像を公開することでロックを解除することができ、二分探索を通じて、挑戦者は、制限されたラウンド (O(logn)) の挑戦と応答の後に証明者の誤りをロックすることができます。
契約が正しく決済されることを確認するために、プロセス全体に複数回のやり取りが含まれます。挑戦者は、証明者が各ゲートの正しい結果を確認するまで証明者に挑戦し続けることも、証明者が挑戦に応答しなかった場合には、一定時間後に資金を引き出すこともできます。理想的な世界では、すべての操作がオフチェーンで行われ、両当事者が協力して決済を完了しますが、協力が崩れた場合には、両当事者がオンチェーンのチャレンジ ゲームを通じて契約が正しく解決されることを確認できます。
この提案には、非常に大量のデータの処理と生成が含まれます。使用される Taproot スクリプト ツリーには数十億のリーフ ノードが含まれる可能性があり、正確な決済を保証するために、関連する事前署名済みトランザクションの処理時間は少なくとも数時間かかる場合があります。 Taproot アドレスごとにあらかじめ設定されたロック解除条件を実行するにはマイニング料金が必要となるため、アドレスの組み合わせが増えるほどコストが高くなります。
このスキームの主な制限は、2 人の参加者間の対話でのみ機能することです: 1 人は証明者としてその実行の正確さを証明し、もう 1 人は検証者として前者の主張に異議を唱えます。将来の研究では、より多くの参加者を参加させる方法が見つかるかもしれませんが、現時点では明確な解決策はないようです。
協力決済シナリオでは、すべての参加者がオンラインである必要があり、プロトコルの実用性と利便性に一定の制限が生じます。
セキュリティ面では、主に以下のようなセキュリティリスクがあります。
コストの制約により、大量のコンピューティング作業をオフチェーンで実行する必要があるオフチェーン コンピューティングには、集中型サービスに共通するセキュリティ リスクがいくつかあります。
大量のデータがオフチェーンに保存されており、データの可用性とデータのセキュリティも考慮する必要があるリスク ポイントです。
エッチングされた回路自体に論理的な抜け穴があるかどうかもセキュリティ上のリスクポイントであり、回路が判読できないため、より多くの監査コストまたは正式な検証コストを支払う必要があります。
Metatrust は Uniswap による包括的な形式検証作業の実施を支援しており、ZK 回路の監査と形式検証において非常に豊富な経験を持っており、BitVM エコシステムの安全な実装を保証できます。
前の 2 つの記事のソリューションは、今年普及したばかりの技術ソリューションでしたが、次の記事では、古くてより「オーソドックスな」ソリューション、つまりライトニング ネットワークのアップグレード バージョンである Taproott Assets を紹介します。
18.55K 人気度
42.72K 人気度
12.23K 人気度
9.46K 人気度
98.73K 人気度
BTC の生態学的拡張計画のツアー: BitVM、エッチングの芸術
作者: サイモン・シー
序文のレビュー
前回の記事「BTC エコロジカル拡張計画のツアー: 碑文をどこに行けばよいか」では、人気のある碑文エコロジーの技術原則と考えられるセキュリティ問題について説明し、再帰的碑文を使用してスマート コントラクトを実装する可能性について言及しました。ただし、Taproot スクリプトに対する Luke の制限により、再帰的な書き込みにはいくつかの障害があるようです。では、ビットコイン ネットワークにスマート コントラクトを実装する他の可能性はあるのでしょうか?
ブロックチェーン開発者ZeroSyncの共同創設者であるロビン・ライナス氏は、2023年10月9日に「BitVM: Compute Anything on Bitcoin」と題した論文を発表し、その中でビットコインブロックチェーンにスマートコントラクトを導入する計画を立ち上げたことを提案した。
この論文は、タップルートを使用してほぼすべての任意の計算を実行し、これらの計算を使用してビットコイン チェーン外で何が起こっているかを検証するという非常に興味深いアイデアを提案しています。秘訣は、すべてのロジックをオフチェーンに保ち、他の人が不正な結果を主張した場合に、数ステップの計算でオンチェーン上で不正な結果に異議を唱えることです。
言い換えれば、それは、ビットコインネットワークに検証者のロジックを置き、ビットコインの強力なコンセンサスセキュリティを使用してチューリング完全なコンピューティング層にとって信頼できるサードパーティになり、その後、オプティミスティックロールアップの原理を使用してオフを実現することです。 -チェーン計算結果の検証。
では、Verifier ロジックの一部を Bitcoin ネットワークに組み込むにはどうすればよいでしょうか?前節の「彫刻」と同様に、これをビットコインネットワーク上の回路を「エッチング」する技術と呼びたいと思います。
論理ゲート回路
コンピューターや携帯電話の内部では、電気が一連の 1 と 0 を供給することでコンピューターのすべての機能を実行します。これは、論理ゲートと呼ばれる何百万もの小さなコンポーネントによって実現されます。これらの論理ゲートは、コンピューター チップの基本的な構成要素です。
各論理ゲートは 1 つまたは 2 つの「ビット」の情報を受け取り、各ビットは 1 または 0 のいずれかになります。次に、論理ゲートは、「AND」、「OR」、「NOT」演算など、設定されたルールに従って単純な論理演算を実行します。これらの演算の結果もビット、1 または 0 になります。演算が完了すると、結果が次の論理ゲートに渡されます。
単純な論理演算に基づくこのシステムにより、最も複雑な計算や関数も、多数の単純な論理演算を組み合わせることで実現できることが明らかになりました。論理ゲートのこの組み合わせと連携は、現代のコンピューターや電子デバイスが複雑なタスクを実行できる基礎となっています。これらの基本的な論理演算を通じて、コンピューターは複雑な算術演算、データの保存、画像のレンダリング、その他の機能を処理できます。
下の写真は、「NAND ゲート」と呼ばれる非常に特殊な論理ゲートです。あらゆる種類の論理ゲート回路を構築できます。もちろん、他の特殊な種類のゲートほど効率的ではありませんが、それでも実行できます。 BitVM の論理ゲート回路は NAND ゲートで構成されています。
ビットコインに NAND ゲートをエッチングする方法
既存のビットコイン スクリプト上に NAND ゲートを構築するには、ハッシュ ロックと、あまり知られていない 2 つのオペコード (OP_BOOLAND と OP_NOT) を組み合わせます。
まず、ハッシュ ロックを使用して、ハッシュ ロックを満たすか、ハッシュ ロック B を満たすかの 2 つの方法のいずれかで使用できるブランチ スクリプトを作成できます。したがって、パス A はスタックに 1 を置き、パス B はスタックに 0 を置きます。
特定のハッシュ ロックを満たすことで、これから構築する NAND ゲートへの入力の 1 つとして機能するビットを「ロック解除」できます。パスの 1 つの要件のみを満たすことができるため、このアプローチではユーザーは一度に 1 ビットしか送信できません。
NAND ゲートのロジックは、2 ビットを入力として受け取り、1 ビットを出力します。両方の入力ビットが 1 の場合、出力は 0 になり、入力が他の組み合わせの場合、出力は 1 になります。 2 つのハッシュ ロック トリックを使用すると、これら 2 つの入力を送信し、出力が正しいことを確認できます。これが OP_BOOLAND と OP_NOT の目的です。
OP_BOOLAND の動作は NAND ゲートの逆です。両方の入力が 1 の場合、出力は 1 になります。入力のその他の組み合わせでは 0 が生成されます。 OP_NOT は入力の逆の値を出力します。したがって、これら 2 つのオペコードを組み合わせることで、2 つの入力を取得し、スクリプト スタックで逆和を実行できます。最後に、OP_EQUALVERIFY とハッシュ ロック トリックを使用して、アサーションの出力を検証できます。スタック上の実際の NAND 演算結果がユーザーによってアサートされた出力と一致しない場合、スクリプトは検証に失敗します。
このようにして、NAND ゲート回路がビットコイン スクリプトに「エッチング」され、ビットコイン スクリプトを通じて仮想 NAND ゲート操作が効果的に強制されます。
大規模回路をエッチングする方法
Taproot スクリプトを使用して回路のエッチングを実現するというアイデアはクールですが、PC のような超大規模回路は言うまでもなく、一連の計算を実装するには数千の NAND ゲート回路が必要であり、ビットコインでは限界があります。 Taproot スクリプト空間での複雑な計算をカバーしますか?
BitVM では、Taproot スクリプト ツリー (Taproot Tree) 方式を提案しています。ビットコイン スクリプトで複雑な計算プロセスを実装するには、論理ゲートを直列に接続して計算回路を構築します。このスキームでは、ハッシュ ロックを使用して個々のドアをバインドし、論理演算の順次実行を実現します。具体的には、あるゲートのスクリプトが異なるハッシュ プリイメージ (ハッシュ プレーンテキスト値) 入力に基づいて異なる出力結果 C1 または C2 を生成する場合、次のゲートは一致するハッシュ ロック値を入力として使用します。
このメソッドはペナルティ メカニズムを実装できます。つまり、前のゲートの結果について嘘をつこうとした場合、別のハッシュ ロックの元のイメージしか明らかにできません。このメカニズムは、2 人のユーザー間の対話型コンピューティングに使用できます。ユーザーは、特定のコンピューティング タスクに参加することに事前に同意し、コンピューティング プロセスを NAND ゲートのみで構成される回路に分解します。回路内の各ゲートに適切なハッシュ ロックを選択し、それを UTXO をロックするスクリプト ツリーにエンコードする必要があります。
次に、複数のアドレスを使用してタップルート アドレス マトリックスを形成し、その論理回路が、タップルート ツリー メソッドを通じてツリー構造で接続された一連の UTXO トランザクションのタップルート スクリプトに組み込まれ、最終的に「契約のような」ロジックを形成します。特定のコンピューティング タスクを処理できる回路。
詐欺チャレンジ
不正チャレンジは OP (オプティミズム ロールアップ) テクノロジーの中核です (まだ実装されていませんが~)。そのアイデアは、トランザクションのバッチがバッチで送信される前に、チャレンジャーが不正チャレンジ (プレッジ vs. ベット) を開始するというものです。メインネット上の Verifier コントラクトは、実行後のステートルートの変化に基づいて提出者が悪事を行ったかどうかを判断し、その後、双方が誓約した資産を割り当てます。
bitVM では、スクリプト ツリーは 2 つの回路に設計されており、証明者が 1 つの回路に提出できることに加えて、挑戦者も証明者のステートメントに異議を唱えることができる必要があります。これは、一連のトランザクションに事前署名することで実現できます。これらの事前署名されたトランザクションは、「チャレンジ -> レスポンス -> チャレンジ ->…」を通じて接続されます。一方の当事者が一定期間停止した場合、もう一方の当事者がチャレンジに勝利し、両当事者のデポジットを回収します。
上の画像は、一連の事前署名されたトランザクションを示しています。
矛盾した声明は、数回の調査後にすぐに反駁できます。証明者がオフチェーンで挑戦者との協力をやめた場合、挑戦者は証明者にチェーン上で協力することを強制します。挑戦者がハッシュロックを解除するたびに、証明者のUTXOの各NANDゲートに対応するタップルートリーフノードは、それのみを持ちます。証明者が挑戦者が保持する事前イメージを知っている場合にのみ消費できます。証明者は、入力と出力を明らかにすることで、特定の Taproot リーフ ノードが正しく実行されることを証明できます。前提として、挑戦者は、Tapleaf に対応するハッシュの元の画像を公開することでロックを解除することができ、二分探索を通じて、挑戦者は、制限されたラウンド (O(logn)) の挑戦と応答の後に証明者の誤りをロックすることができます。
契約が正しく決済されることを確認するために、プロセス全体に複数回のやり取りが含まれます。挑戦者は、証明者が各ゲートの正しい結果を確認するまで証明者に挑戦し続けることも、証明者が挑戦に応答しなかった場合には、一定時間後に資金を引き出すこともできます。理想的な世界では、すべての操作がオフチェーンで行われ、両当事者が協力して決済を完了しますが、協力が崩れた場合には、両当事者がオンチェーンのチャレンジ ゲームを通じて契約が正しく解決されることを確認できます。
着陸障害と安全上の問題
この提案には、非常に大量のデータの処理と生成が含まれます。使用される Taproot スクリプト ツリーには数十億のリーフ ノードが含まれる可能性があり、正確な決済を保証するために、関連する事前署名済みトランザクションの処理時間は少なくとも数時間かかる場合があります。 Taproot アドレスごとにあらかじめ設定されたロック解除条件を実行するにはマイニング料金が必要となるため、アドレスの組み合わせが増えるほどコストが高くなります。
このスキームの主な制限は、2 人の参加者間の対話でのみ機能することです: 1 人は証明者としてその実行の正確さを証明し、もう 1 人は検証者として前者の主張に異議を唱えます。将来の研究では、より多くの参加者を参加させる方法が見つかるかもしれませんが、現時点では明確な解決策はないようです。
協力決済シナリオでは、すべての参加者がオンラインである必要があり、プロトコルの実用性と利便性に一定の制限が生じます。
セキュリティ面では、主に以下のようなセキュリティリスクがあります。
コストの制約により、大量のコンピューティング作業をオフチェーンで実行する必要があるオフチェーン コンピューティングには、集中型サービスに共通するセキュリティ リスクがいくつかあります。
大量のデータがオフチェーンに保存されており、データの可用性とデータのセキュリティも考慮する必要があるリスク ポイントです。
エッチングされた回路自体に論理的な抜け穴があるかどうかもセキュリティ上のリスクポイントであり、回路が判読できないため、より多くの監査コストまたは正式な検証コストを支払う必要があります。
Metatrust は Uniswap による包括的な形式検証作業の実施を支援しており、ZK 回路の監査と形式検証において非常に豊富な経験を持っており、BitVM エコシステムの安全な実装を保証できます。
前の 2 つの記事のソリューションは、今年普及したばかりの技術ソリューションでしたが、次の記事では、古くてより「オーソドックスな」ソリューション、つまりライトニング ネットワークのアップグレード バージョンである Taproott Assets を紹介します。