BitVMはビットコインのエコシステムにおける最新のホットなプロトコルであり、ビットコイン上に構築されたすべてのプロジェクトに利益をもたらす可能性を秘めています。BitVMの設計と、それがビットコインにもたらす新たな可能性についてお話ししましょう。
「ビットコイン・シーズン2[3]」が進行中であり、開発者もユーザーも、ビットコインのプロジェクトを構築することに興奮しています。プロジェクトが始動し、ビットコイン上に構築するという永遠の課題を解決するための新しいユースケースやアプローチをもたらすことに興奮しています。
ビットコインはスケーラブルではありません。ブロックスペースが限られているため、ネットワークの混雑時には取引手数料が乱高下する可能性があります。1秒間に処理されるトランザクションはわずか7件で、各ブロックには約1MBのデータしか含まれていないため、何十億ものユーザーに利用されるにはビットコインだけでは不十分です。ソリューション[4]を拡張する必要があります。
ビットコインのL2s[5](レイヤー2ブロックチェーン)では、ビットコインのスケーラビリティを向上させ、新機能を導入するために多くの作業が行われてきました。今日、Bitcoin[6]上に構築された数十のプロジェクトがあり、最も有望な研究・革新分野の1つがBitcoin Rollups[7]です。高いレベルでは、Bitcoin Rollupsは、トランザクションがオフチェーンで発生し、ブロックチェーンに提出される個々の状態変更に「ロールアップ」されることを可能にします。
しかし、この証明システムをBitcoinに導入するには課題があります。
BitVMとは
BitVM[8]は、ビットコイン上の不正証明を可能にするプロトコル/ルールセットであり、開発者はすぐに使用することができます。BitVMのコアデザインは、計算をオフチェーンに移動し、ビットコインブロックチェーン上に不正証明メカニズムを実装します。
BitVMはビットコイン上での不正の証明を可能にします。
BitVMのホワイトペーパーは、Robin Linus氏によって2023年10月に発表されました(Robin氏がZeroSync[9]チームの一員であることは注目に値します。proof-of-knowledgeシステムの開発に取り組んでいる。
BitVMは、ソフトウェアで実装された実際の仮想マシン(イーサリアムの仮想マシンなど)ではなく、参加者が事前に従うことに同意する分散プロトコル/ルールセットと考えることができます。Bitcoin Ordinals[10]の仕組みと同様に、参加者がルールにオプトインする社会的合意要素があり、それらのルールはプロトコルレベルでは完全に強制されません。
BitVMが非常にエキサイティングなのは、ビットコイン上で任意の回路を検証するためのチャレンジ・レスポンス・プロトコルを提供することです。もし実装されれば、BitVMプロトコルは楽観的なロールアップや双方向のBTCアンカーなどを構築するために使用することができ、ビットコイン上に構築する他のプロジェクトに利益をもたらす可能性があります。
BitVMはどのような問題を解決するのでしょうか?
Bitcoin上に構築するプロジェクトであれば、チェーンとやりとりするのがどれほど難しいかを知っています(そしてHiroでは、この痛みを身をもって知っています)。ビットコイン上に構築することの課題の1つは、ビットコインが複雑な計算を処理する能力を持っていないことです。
スマートコントラクトはありません。仮想マシンもありません。プログラマビリティは、開発者がオペコード[11](演算コード)で構築できるものに限られており、その機能は限られています。新しいオペコードを導入するには、BIPとビットコインフォーク(これは非常に難しい)が必要です。
そのため、フォークや新しいオペコードがない場合、限られたプログラマビリティしか残りません。
双方向のBTCアンカリングを構築する場合、方程式から信頼を取り除くのは困難です。今日、ほとんどのBTCアンカリングでは、単一の機関または複数の署名者を管理するコンソーシアムのいずれかのカストディアンが入出金を処理します。これは「書き込み問題」と表現されることもある。Stacksエコシステムでは、今後予定されているNakamotoアップグレード[12]に最小限のトラストブリッジが含まれます。
計算やトランザクションをロールアップによってオフチェーンに移動させる場合、ビットコイン自体でオフチェーンデータを検証・確認するのは困難です。これは検証の問題です。
これらの問題の両方に対して、BitVMはBitcoin L1にチャレンジ/レスポンスプロトコルを実装することで、劇的な設計の改善を解き放つことができます。
BitVMはどのように機能するのでしょうか?
BitVMをプロトコルまたはルールのセットとして考えるのは良い方法です。2つのパーティがこれらのルールに従うことにあらかじめ同意していれば(つまり、互いに協力する必要があるということです)、どのようなチャレンジ・レスポンス・ゲームでもプレイすることができます。理論的には、これはビットコイン上の任意の複雑な手続き(これらの手続きの実際の実行はオフチェーンで行われる)を検証/証明するために使用することができます。
具体的な例を挙げてみましょう。
アリスとボブがコインフリップゲームをしたいとします。各プレイヤーは0.5BTCをポットに入れる。以下は、彼らがBitVMを使ってゲームをする方法です(簡単にするために多くの詳細は省略されています):
アリスとボブは、BitVMプロトコルに従うことに同意します。
表側が値H0、裏側が値H1で表されるとします。アリスは、他の2つの値、例えばP0とP1を選び、それらをハッシュ化することによって、H0とH1を生成します。P0はH0の「原画像」と呼ばれ、P1はH1の原画像と呼ばれます。
アリスはH0とH1の値をボブと共有します(実際、アリスはこれらのハッシュを取り消し不能な形で「約束」しているので、後で別の値を主張することはできません)。ボブは元の値P0とP1を知りません(そしてこれらの値を「推測」するのは非常に難しいので、ボブは魔法のようにそれらを発見することはないと安全に仮定できます)。
アリスとボブは事前に2つの取引にサインします。
チャレンジのトランザクションでは、ボブは基本的に以下のスクリプトを含めます。H0とハッシュした場合、Bobはその値が正であることを知る。H1とハッシュした場合、それは負である。さらに、スクリプトには時間ロックがあり、期限までに応答がない場合、ボブは賞金プールを手にする。
応答トランザクションで、アリスは対応する元の画像、P0またはP1を含めることによって、コインフリップの結果を「明らかに」することができます。アリスがP0かP1以外の値を含むか、2つの値を含むか、またはP0かP1以外の値を含む場合、ボブはポットを獲得する。そうでない場合、値がP0(頭)であれば、アリスがポットを得る。
さて、ゲームを始める準備ができた。 アリスはコインをはじくが、結果はまだ明かさない。ボブはチャレンジ・トランザクションを発行し、アリスはレスポンス・トランザクションをブロードキャストする。不正検知」ロジックは前述のスクリプトを使ってチェーン上で実行される。明らかに、これは些細で意図的に作られた例であるが、重要な考え方を示している。もう少し複雑な例として、Super Testnetという開発者が考案した三目並べゲームを考えてみよう。GitHubのリポジトリはこちら[13]でチェックできますし、今日「ビットタックトー[14]」をプレイすることもできます。 Super Testnetが実際にHiroにゲームを見せたので、以下でご覧ください: p>
.p>
Bitvm Crash Course on Youtube [15]
ゲームの高度なコンポーネントを紹介します:
三目並べは9マスです。最初のプレイヤーであるアリスは最大5手までしか打つことができないので、事前イメージとハッシュが45個(1ラウンドにつき9個)存在する。2番目のプレイヤーであるボブは最大4手までしか動けないので、36個のハッシュがある。
三目並べには3つの「イカサマ」の方法があります:プレイヤーは自分の手番に複数のX/Oを置くことができます;プレイヤーは以前に使ったマスを上書きすることができます;プレイヤーは対戦相手が以前に使ったマスを上書きすることができます。そのため、チャレンジ/レスポンスプロトコルは、これらの状況を検出することを中心に作られています。
挑戦の取引は、他のプレイヤーにどのマスにXまたはOを置いたかを「明らかにする」よう強制します。
挑戦の取引は、他のプレイヤーにどのマスにXまたはOを置いたかを「明らかにする」よう強制します。left;">応答トランザクションには、上記の3つのシナリオをすべてチェックするスクリプトがあります。不正が検出されなければ、ゲームは続行される(あるいは誰かが勝ったのでゲームは終了する)。不正が検出された場合、挑戦者が勝ち、プロヴァーが負ける。
どちらの場合も、不正の証明は手作りで、その使用例のために特別に設計されていることに注意してください。
全体像に戻ると、BitVMのホワイトペーパーは一般的なアプローチを説明しています。
コインフリップの例から、個々のビットを検証する方法がわかります。"証明と呼びましょう。
ビットの約束を使って、論理ゲートの約束を構築することができます:ブール演算のAND/OR演算子を考えてみてください - 任意の2つの入力(それぞれが値0または1を取る)に対して、この演算子は1つの出力を定義します。そのため、入力として2ビットの約束、出力として1ビットの約束を使用することで、任意の論理ゲートの有効性の証明を作成できます。BitVMのホワイトペーパーでは、NAND論理ゲートを使用しています。
最後に、任意の計算は、BitVMホワイトペーパーが「バイナリ回路」と呼ぶ、一連の論理ゲートを使って表現できます。このような回路は、タップツリーの各葉が単一のゲートコミットメントを表すタップスクリプトを使用して効率的に表現できます。
チャレンジ/レスポンスプロトコルは、基本的に特定のゲート約束の出力を検証することを含みます。最悪の場合、個々のゲートの出力を検証する必要があるかもしれません。
任意のプログラムをタップリーフ回路に変換する1つの方法については、このリポジトリ[16]をチェックしてください。
スタックはどのようにフィットするのか?BitVMのStacksエコシステムにおける2つの明白で最も関連性の高いアプリケーションは次のとおりです。
ビットコイン上のStacksブロックに有効性の証明を追加する
なぜこの2つのアプリケーションを選ぶのでしょうか?現在のsBTCのデザイン[17]はすでに、開発中のビットコインのための最も安全で、信頼を最小化する双方向アンカーの1つです。とはいえ、セキュリティモデルと信頼の前提[18]にはまだ改善の余地がある。少なくとも30%の正直な署名者を要求したり、非常に評判の良い署名者のセットを信頼したりするのとは異なり、BitVMベースのアプローチでは、理論的には1人の正直な参加者だけでsBTCを動作させることができます。
同様に、各Stacksブロックはビットコイン上で決済されますが、現在の設計では、チェーンの状態のコピーを持っている場合にのみ、Stacksデータを独立して検証することができます。BitVMを使用し、Stacksブロックに有効性の証明も含まれていれば、完全性(与えられたStacksブロックのデータがBitcoinに保存されたハッシュと一致すること)だけでなく、正しさ(Bitcoinに保存された証明を見ることで、与えられたStacksブロックのトランザクションが実際に正しく実行されたことを検証できること)もチェックできる。
これらのアプリケーションをBitVMで実装する方法の詳細については、さらなる研究開発が必要です。しかし、私たちは高いレベルでいくつかのアイデアをスケッチしてみることができます。
BitVMとsBTC
sBTCの例を考えてみましょう:アンカー処理は非常に単純で、単にビットコイントランザクションをブロードキャストすることで達成できます。しかし、現在の設計では、アンカー終了プロセスは(Stacks上で)リクエストを処理する署名者に依存している。
何人の署名者がオフラインで誠実であるかによって、終了に時間がかかることがあります。
この署名者のネットワーク、そしてより広くはスタック全体を信頼する必要があります。
重要なのは、有効性の証明を構築する方法を正確に把握することです。BitVMのホワイトペーパーで説明されている総当たり的なアプローチでもうまくいくかもしれませんが、非常に大規模なタップリーフ回路(数十億ノード)になる可能性があります。このことは、どのような挑戦にも長い時間(おそらく数週間以上)がかかることを意味し、注意とリソース(取引手数料!)の面でのコストは言うまでもない。注意とリソースの面でコストがかかる(取引手数料!)。三目並べの例で見たように、特定のユースケース用にカスタマイズされた、より簡潔な証明を構築することは可能であり、同様のアプローチはこの状況によりよく機能するかもしれない。
BitVMとスタック
スタックのブロック全体の妥当性の証明に関しては、探求すべき設計空間がたくさんあります。例えば、証明は単一のトランザクションの粒度であるべきか、ブロック全体であるべきか、あるいはその中間であるべきか(例えば、因果的な依存関係の連鎖を形成するトランザクション)。まず単純なトークン移転の証明を生成し、その後徐々にクラリティ契約を追加するといった漸進的なアプローチは可能ですか。Stacksのマイナーとネットワーク参加者は、Stacksチェーンの状態の完全な履歴を維持する金銭的インセンティブをすでに持っているため、これはビットコインのブロック空間をうまく利用できますか?
結論
BitVMはエキサイティングなトピックであり、ブログ記事で提供できる以上の研究、考察、実験が必要ですが、これがビットコインの最も新しくエキサイティングな開発の1つに光を当てる助けになったことを願っています!.