BitVM、ビットコインメインネット上でのスマートコントラクトの可能性
- BTC0%
10月9日、ZeroSyncの開発者であるRobin Linusは、BitVMホワイトペーパーを公開し、コミュニティから大きな注目を集めました。BitVMは、ネットワークのコンセンサスルールを変更することなく、チューリング完全なビットコイン契約を表現できる新しい計算パラダイムを導入しています。
分散型スマートコントラクト:限界と目標
ビットコインのScript(スタックベースの言語)は、トランザクションの検証ロジックを定義するための条件チェックなどの基本的な制御構造を提供します。これは、単純な条件付き検証のプロセスを通じてビットコインを使用するために有効なデジタル署名を要求します。ただし、Scriptはチューリング完全ではないように設計されています。ループなどの複雑なフロー制御機能をサポートしていませんが、この設計により言語の単純さとセキュリティが確保されています。このような制限により、Scriptがスマートコントラクトを含む複雑な計算を実行することは困難になっています。
ビットコイン用に設計された一部のレイヤー2ソリューションは、資産をロックすることで基本的なスマートコントラクト機能を実現できますが、本質的にはマルチシグネチャアドレスとクロスチェーン資産マッピングに依存しており、一定レベルの中央集権的な信頼を必要とします。これはビットコインの分散化へのコミットメントを損なうものです。BitVMの導入以前、ビットコインコミュニティは、分散化され、信頼を最小限に抑え、チューリング完全な計算が可能な方法を模索していました。
BitVM:ビットコイン上で何でも計算可能に
その革新の核心として、BitVMはビットコインの既存のScriptシステムを利用して、論理ゲート(ANDゲート、ORゲート、NOTゲート、XORゲートを含み、AND、OR、NOT、XORなどの演算を可能にする)を実装し、任意に複雑なブール回路を構築します。これらの回路は、バイナリ入力に対して論理演算を行い、バイナリ出力を生成するために使用されます。ブール計算は、AND、OR、NOT、XORなどの演算を実行するために論理ゲートを使用して実装できます。具体的に、BitVMはハッシュタイムロック契約(HTLC)とTaproot(2021年11月にアクティベートされたScriptを最適化するためのソフトフォーク)を使用して、ANDゲートやORゲートなどの基本的な論理ゲートを表現します。BitVMはこれらの基本的な論理ゲートを組み合わせて、任意の複雑さの回路を構築し、本質的にビットコインブロックチェーン上でプログラム可能なコンピュータをシミュレートします。
最後に、取引当事者間で紛争が発生した場合、ビットコインにおける不正証明に類似したエレガントなチャレンジ-レスポンスプロトコルを検証に用いることができます。証明者は、特定の入力に対して与えられた関数が特定の出力を評価するという主張をします。その主張が偽である場合、検証者は不正証明を実行し、証明者を罰することができます。このメカニズムを使用することで、任意の計算可能な関数をビットコイン上で検証することが可能になります。
BitVMの設計
ビット値コミットメント
ビット値コミットメントは、ビットコインスクリプトで、if-else文を使用してコミットメントスキームを実装します。この暗号プリミティブは、送信者がメッセージの内容を送信前に確認でき、一度公開されると内容を変更できないことを保証します。このコミットメントスキームには、hash0とhash1という2つのハッシュ値が含まれます。入力のハッシュ値をこれら2つのハッシュ値と比較することで、返される値が0または1になるかが決定されます。
図1:1ビットコミットメントの具体的な実装
:quality(80)/2023-11-01/1321A251238D665AA862939993DE617A.png)
出典:https://bitvm.org/bitvm.pdf
論理ゲートコミットメント
計算理論では、任意の計算可能な関数をブール回路として表現することができます。特に、NANDゲートは他のすべての複雑な論理ゲートを構築できる万能論理ゲートです。BitVMは、2つの入力を表す2つのビット値コミットメントと、出力を表す3つ目のビット値コミットメントを組み込んでNANDゲートを実装しています。
BitVMは巧妙にビットコインスクリプトを通じてNANDゲートを表現します。これにより、任意に複雑なブール論理回路を構築し、スクリプトを通じてプログラム可能なコンピュータを効果的にシミュレートすることができます。
図2:ビット値コミットメントを使用したNANDゲートの実装
:quality(80)/2023-11-01/23A48B54E874C749C41F131C7D4730C6.png)
出典: https://biquanlibai.notion.site/BitVM-2b8557e0ea004d0cbc52951782bc9754
図3: NANDオペレーションのロジックゲートコミットメント
:quality(80)/2023-11-01/E98F6725AA61147C861A13360ADD94C1.png)
出典: https://bitvm.org/bitvm.pdf
このスクリプトは、2つの入力のNAND値を計算し、それがコミットされた出力ビットと一致することを確認します。
バイナリ回路コミットメント
BitVMは、ゲートコミットメントを組み合わせることで、あらゆる回路を表現することができます。実行の各ステップはTapleafにコミットされます。これらはすべて同じTaprootアドレスに組み合わされ、証明者は回路内の任意のゲートを実行することができます。ゲートを実行するには、証明者が対応するゲートコミットメントを開き、その入力と出力ビットの値を設定する必要があります。例えば、図4では、A、B、C、Dは事前に定義されたビット値コミットメントで、それぞれ1ビットを表しています。その後、8つのNANDゲートを含む論理演算が実行されます。例えば、A NAND BがEを生成し、Eが次のNANDゲートの入力として使用される場合、回路全体の最終出力はTRUEとなります。このブール回路の設計は、ビット値コミットメントのNANDゲートを接続し、複雑な論理演算を実現しており、ビットコインブロックチェーン上で検証可能な計算のためのコンパクトな表現を提供しています。
図4:8つの異なるNANDゲートを持つ回路
:quality(80)/2023-11-01/2A444519852359C0EA95AC2D2F5C054A.png)
出典:https://bitvm.org/bitvm.pdf
課題と対応
BitVMでは、1つの回路にコミットするだけでは不十分であり、計算の正確性を証明するためにチャレンジ-レスポンスメカニズムが必要です。そのために、証明者と検証者はセットアップ中に一連のトランザクションに事前署名する必要があります。これらのトランザクションは「チャレンジ - レスポンス - チャレンジ - レスポンス」の順序でリンクされ、複数回のチャレンジ・アンド・レスポンスのやり取りを生成します。一方の当事者が参加を停止した場合、タイムアウト後、もう一方の当事者がチャレンジに勝利し、両方のデポジットを受け取ることができます。このメカニズムは不正がある場合にのみ必要です。両当事者が協力的である限り、2-of-2署名で任意の契約を共同で決済することができます。
このメカニズムが仮説的なケースでどのように機能するかを見てみましょう。ポール(証明者)とビッキー(検証者)は一連の取引に事前署名しました。その後、ビッキーは自分のTapscriptリーフにあるハッシュロックの1つからチャレンジ(hash7)を選択することでチャレンジ(TX 2)を開始できます。これによりポールに特定のTapscriptが解除され、オープンな入力と出力で実行することを強制されます。矛盾する主張があれば、数ラウンドのクエリでこの手順を繰り返すことで迅速に反証できます。証明者が協力を停止した場合、検証者は保持しているハッシュ先行イメージを解除して、証明者にオンチェーンで応答を強制できます。各ラウンドのクエリは、特定のゲートを検証または反証する可能性があります。二分探索(ソートされた配列内の特定の要素を探すアルゴリズム)を通じて、検証者は数ラウンドのチャレンジと応答の後、証明者のエラーを迅速に特定できます。証明者の2つのコミットメントが矛盾すると、検証者はすぐにチャレンジに勝利し、デポジットを獲得します。
図5:複数ラウンドのチャレンジと応答を実行するための事前署名された一連の取引
:quality(80)/2023-11-01/8D9777E151B617754A912BDA1F5097CF.png)
出典:https://bitvm.org/bitvm.pdf
この綿密な設計により、BitVMは任意の複雑な計算のオンチェーン検証を実行でき、協力の効率性を確保し、不正が発生した場合にペナルティを課すことができます。これは、ビットコインネットワークでチューリング完全な対話型計算を検証する可能性を示しています。
BitVMの設計の重要な側面
オフチェーン計算とオンチェーン検証
BitVMは複雑な計算の負荷をブロックチェーン外に置き、ビットコインブロックチェーンを結果の検証のみに使用します。この手法により、複雑な契約をブロックチェーン上で直接実行することを回避し、ブロックチェーンの肥大化を軽減します。
ハッシュロックとビットコインスクリプトで表現される論理ゲート
BitVMは、ANDやNOTゲートなどの基本的な論理ゲートを表現するために、ビットコインがサポートするハッシュロックとスクリプトオペコードを活用します。これらの論理ゲートを接続することで、任意の複雑さの回路を構築し、チューリング完全な計算を可能にします。
証明者と検証者のためのゲーム理論メカニズム
BitVMの検証メカニズムは、オプティミスティックロールアップに似ており、計算の当事者間で対話的な挑戦と応答を行います。最終的に、正しい計算結果がオンチェーンで確認されます。証明者が不正を行った場合、検証者はビットコインブロックチェーン上でペナルティを執行できます。このように、BitVMとオプティミスティックロールアップは、オンチェーン検証に類似した相互作用メカニズムを採用しており、唯一の違いは、BitVMがビットコインスクリプトを直接使用して対話的な挑戦-応答プロセスを実装することです。
最小限のオンチェーンへの影響
BitVMの計算プロセスは、ビットコインブロックチェーンへの影響を最小限に抑え、紛争が発生した場合にのみ少数の取引をオンチェーンに残します。これにより、ビットコインの効率性とスケーラビリティが保たれます。
ソフトフォークの必要性がない
BitVMは既存のビットコインスクリプト機能のみを利用するため、ソフトフォークによるビットコインプロトコルの変更を必要としません。これにより、BitVMをビットコインメインネットに統合しやすくなります。
結論
BitVMの最大の革新は、ビットコインの中核プロトコルを変更せずにチューリング完全な検証を実装できること、特にTaprootによって最適化されたスクリプトを創造的に活用することです。この巧妙な設計により、新たな互換性の問題を引き起こしたり、ビットコインの分散化を損なうことなく、ビットコインメインネットにシームレスに統合することが可能になります。
BitVMの革新的なソリューションは、ビットコインのエコシステムにスマートコントラクトや分散型アプリケーションを導入する可能性を秘めています。例えば、異なるブロックチェーン資産を接続するための最小限の信頼性を持つクロスチェーンブリッジの構築に使用でき、ビットコインの相互運用性を向上させることができます。さらに、BitVMは、ビットコインをよりスケーラブルにするために、より効率的なzkRollup拡張レイヤーの構築にも役立ちます。要するに、BitVMは、既存の機能を革新的に活用するだけで、ビットコインのエコシステムを新時代へと導く広大な可能性を示しています。
参考文献:
https://github.com/supertestnet/tapleaf-circuits
https://biquanlibai.notion.site/BitVM-2b8557e0ea004d0cbc52951782bc9754