Author: Simon shieh, Source: MetaTrust Labs
Preface Recap
前回、「Bitcoin Ecosystem Scaling Solution Tour (1): Whither Inscriptions」では、人気のある碑文エコシステムの技術的な原理と考えられるセキュリティ問題について議論し、再帰的碑文によるスマートコントラクトの実装の可能性について言及しました。しかし、ルークがTaprootスクリプトを制限しているため、再帰的碑文にはいくつかのハードルがあるようです。
ブロックチェーン開発企業ZeroSyncの共同設立者であるRobin Linus氏は、2023年10月9日に「BitVM: Compute Anything on Bitcoin(ビットコインで何でも計算する)」という論文を発表しました。"と呼ばれる論文を発表し、ビットコインのブロックチェーンにスマートコントラクトを導入する計画を提示している。
この論文では、taprootを使ってほぼ任意の計算を行い、それらの計算を使ってビットコインチェーンの下で起こっていることを検証するという、非常に興味深いアイデアが提案されている。そのトリックは、すべてのロジックをチェーンの下に保ち、他の人が不正な結果を主張したときにそれに異議を唱えるために、チェーン上の一握りの計算を使用することです。
言い換えれば、検証者のロジックをビットコインネットワークに置き、ビットコインの強力なコンセンサスセキュリティを使用して、チューリング完全演算レイヤーの信頼できるサードパーティになり、Optimistic Rollupsの原則を使用して、チェーン外の計算結果の検証を可能にします。
では、ビットコインネットワークに検証ロジックを実装するにはどうすればよいのでしょうか?前節の「inscriptions」と同じように、私はこれをビットコインネットワーク上の回路を「エッチング」する技術と呼びたいと思います。
論理ゲート回路
コンピュータや携帯電話の内部では、電流が一連の1と0に流され、コンピュータのすべての機能を実行しています。これは、何百万もの小さな部品であるロジックゲートを通して行われます。これらのロジックゲートは、コンピューターチップを構成する基本要素である。
各論理ゲートは、それぞれ1または0である1つまたは2つの「ビット」情報を受け取ります。次にゲートは、「AND」、「OR」、「SELECT」などの設定されたルールに基づいて、単純な論理演算を実行します。論理ゲートは次に、"AND"、"OR"、"NOT "などのセットルールに基づく単純な論理演算を実行する。演算が完了すると、結果は次の論理ゲートに渡されます。
単純な論理演算に基づくこのシステムは、最も複雑な計算や関数でさえ、多数の単純な論理演算を組み合わせることで実現できるという啓示をもたらしました。この論理ゲートの組み合わせと連携が、現代のコンピューターや電子機器が複雑なタスクを実行する能力の基礎となっています。これらの基本的な論理演算を通じて、コンピューターは複雑な算術演算、データ保存、画像レンダリング、その他の機能を扱うことができる。
下の図は、「NANDゲート」と呼ばれる非常に特殊なタイプの論理ゲートを示しています。これは、他の特殊なタイプのゲートほど効率的ではありませんが、あらゆるタイプの論理ゲート回路を構築するために使用することができ、BitVMの論理ゲート回路はNANDゲートで構成されています。
How to Etch an AND-NON Gate on Bitcoin
既存のビットコインスクリプトでAND-NONゲートを構築するには、次のようにします。ハッシュロックと、おそらくあまり知られていない2つのオペコード、OP_BOOLANDとOP_NOTを組み合わせることで可能です。
まず、ハッシュロックは、ハッシュロックを満たすか、ハッシュロックBを満たすかの2つの方法のいずれかで使用できる分岐スクリプトを作成するために使用できます。
特定のハッシュロックを満たすことで、私たちが構築しているNANDゲートの入力の1つであるビットを「アンロック」することができます。パスの1つしか満たすことができないため、このメソッドではユーザーが一度に1つのビットを送信することしかできません。
アンド・ノンゲートの論理は、2つのビットを入力として受け取り、1つのビットを出力することです。2つのハッシュロックのトリックを使用すると、両方の入力を送信し、出力が正しいかどうかを検証することができます。
OP_BOOLANDは、with-nonゲートと逆の動作をします。両方の入力が1の場合、1を出力し、それ以外の入力の組み合わせは0を出力します。したがって、これら2つのオペコードを組み合わせて使用することで、スクリプト・スタック上の2つの入力を受け取り、逆和演算を実行することができる。最後に、OP_EQUALVERIFYとハッシュロックのトリックを使用して、アサーションの出力を検証することができる。スタック内の実際の結果と非操作結果がユーザのアサーション出力と一致しない場合、 スクリプトは検証に失敗する。
これにより、AND-NON回路がビットコインスクリプトに「エッチング」され、ビットコインスクリプトを通じて仮想AND-NON操作が効果的に強制されます。
How to etch large-scale circuits
Taprootスクリプトを使って回路をエッチングするというこのアイデアはクールですが、PCをエッチングするのとまったく同じことではありません。しかし、PCに見られるような超大規模回路について話すのはやめておきましょう。 どんな計算セットでも実装するには、何千もの和非ゲート回路が必要になります。ビットコインの限られたTaprootスクリプトスペースで複雑な計算をカバーするにはどうすればよいのでしょうか?
BitVMはTaproot Treeアプローチを提案します。ビットコインのスクリプトで複雑な計算処理を実装するには、論理ゲートを直列に接続して計算回路を構築します。この方式では、論理演算が順次実行されるように、個々のゲートを結合するためにハッシュロックが使用される。具体的には、あるゲートのスクリプトが異なるハッシュ原画(ハッシュ明示値)入力に基づいて異なる出力C1またはC2を生成する場合、次のゲートはその入力として一致するハッシュロック値を使用します。
このアプローチは、前のゲートの結果を誤魔化そうとする試みが、もう一方のハッシュロックの原画像のみを明らかにするというペナルティメカニズムを可能にする。このメカニズムは、2人のユーザーが特定の計算タスクに参加することに事前に合意し、計算プロセスをゲートの有無のみで構成される回路に分解する、2人のユーザー間のインタラクティブな計算に使用することができます。彼らは回路内の各ゲートに適切なハッシュロックを選択し、それをUTXOをロックするスクリプトツリーにエンコードする必要があります。
その後、論理回路は、複数のアドレスからTaprootアドレス行列を形成することによって、一連のツリーリンクされたUTXOトランザクションのTaprootスクリプトに刻み込まれ、Taprootツリーによって、最終的に、特定の計算タスクを処理できる「契約のような」論理回路が作成されます。論理回路。
不正チャレンジ
不正チャレンジはOP(Optimism Rollup)技術の中核であり(今のところ実際には実装されていませんが~)、そのアイデアは、バッチのトランザクションが一括でサブミットされる前に、チャレンジャーが、障害があると考えられるトランザクションに対して不正チャレンジ(プレッジ・トゥ・ベット)を開始し、メインネットワーク上のベリファイアコントラクトがステートルートの基礎として使用されるというものです。Verifierコントラクトは、実行後のステート・ルートの変化に基づいて提出者が悪かどうかを判断し、両者が誓約した資産を分配する。
一方、bitVMでは、スクリプトツリーは2つの回路として設計されており、証明者が1つの回路に提出できることに加えて、挑戦者は証明者の声明に挑戦できる必要がある。これは、一連のトランザクションに事前署名することで実現できる。これらの事前署名されたトランザクションは、「チャレンジ ->アンサー ->チャレンジ ->...」で接続される。一方の当事者が一定時間後に停止した場合、もう一方の当事者がチャレンジに勝利し、両方の預金を取り戻します。
上の図は、署名済みの一連のトランザクションを示しています。
- 挑戦:スクリプトパス内のVicky(挑戦者/検証者)が
- Release an original image (which are known only to the challenger) to be used as a challenge to the proof;
- Answer: Paul (the prover) executes the corresponding logic gate and sends the funds back to the initial script;
Any of the inconsistent statements can be quickly refuted after a few rounds of queries.挑戦者によってロックが解除された各ハッシュは、挑戦者が保持するオリジナルイメージの1つを知っている場合にのみ、証明者のUTXOの各NANDゲートに対応するTaprootリーフノードを使用可能にします。プロ ーバーは、与えられたTaprootリーフノードが正しく動作することを、その入力と出力を明 らかにすることで証明できる。これは、挑戦者がタップルートに対応するハッシュの元画像を明らかにすることでロックを解除することを前提としており、バイナリルックアップによって、挑戦者は有限ラウンド(O(logn))の挑戦と回答の後に、証明者の誤りをロックアウトすることができる。
このプロセス全体では、契約が正しく解決されることを保証するために、複数ラウンドのやり取りが必要となる。挑戦者は、各ゲートについて正しい結果を確認するまで、証明者に挑戦し続けることができる。また、挑戦者は、証明者が挑戦に応答できない場合、一定時間後に資金を引き出すことができる。理想的には、すべての操作はオフチェーンで行われ、両者が協力して決済を完了させるが、協力関係が破綻した場合は、両者がオンチェーンでチャレンジゲームを行い、契約が正しく解決されるようにすることができる。
障害とセキュリティの問題
この提案では、非常に大量のデータを処理し、生成します。使用されるTaprootスクリプトツリーには数十億のリーフノードが含まれる可能性があり、関連する署名済みトランザクションの処理時間は、正確な決済を保証するために少なくとも数時間かかる可能性があります。各タプルートアドレスには、あらかじめ設定されたロック解除条件を実行するための採掘者の手数料が設定されているため、アドレスの組み合わせが多ければ多いほど、コストは大きくなります。
このスキームの主な制限の1つは、2人の参加者間の相互作用にのみ適用されることです。一方は、その実行の正確さを証明するプローバーとして行動し、もう一方は、前者の声明に異議を唱えるベリファイアとして行動します。将来の研究では、より多くの参加者を含める方法が見つかるかもしれませんが、現時点では明確な解決策はないようです。
協調決済シナリオでは、すべての参加者がオンラインでなければならず、これはプロトコルの実用性と利便性に制限をもたらします。
セキュリティの面では、主に次のようなセキュリティリスクがあります:
1、コスト制約のため、大量の計算をオフチェーンで行うことは避けられず、オフチェーンでの計算には集中型サービスに共通するセキュリティリスクがあります。
2、データの可用性とデータのセキュリティの下でチェーンに格納されている多数のデータもリスクポイントであることを考慮する必要があります
3、論理的な脆弱性があるかどうかエッチング回路自体もセキュリティリスクポイントであるため、回路が読み取れないために、より多くの監査コストまたは正式な検証コストを支払う必要があります。
メタトラストは、包括的なフォーマル検証作業でユニスワップを支援し、ZK回路の監査とフォーマル検証で豊富な経験を持っており、BitVMエコシステムにセキュリティを提供することができます。
前の2つの記事では、今年普及したばかりの技術ソリューションを紹介しました。 次回は、より古く、より「オーソドックス」なソリューション、ライトニングネットワークのアップグレード版であるTaproott Assetsを紹介します。Taproott Assetsである。