OPスタックの初のエラープルーフシステムにおける論争のあるゲームとその役割について詳しく見てみましょう。
OPスタックのFault Proof System(FPS)の最も興味深いコンポーネントの1つがその物議を醸すゲームであることは偶然ではありません。前回のFPSの記事では、OPスタックのモジュラリティが、故障証明プログラム(FPP)を故障証明仮想マシン(FPVM)から切り離し、両コンポーネントの効率的な並列アップグレードと合成可能性の次のレベルを実現しています。これは物議を醸すゲームにも同様であると言っても過言ではありません。
この記事では、分散型の故障検出における紛争ゲームの役割、紛争契約の上にエラープルーフな紛争ゲームを構築する方法、およびそのようなゲームが紛争契約のスケーラビリティによって生じる可能性について探求します。
もし議論の的となっているゲームについて詳細を知りたい場合は、数週間前に私の個人ブログで共有したこのさらに詳細な投稿を読んでください。
紛争ゲームは紛争契約の基本原則です。シンプルな状態機械をシミュレートし、有効性が争われる情報のいずれかについて、32バイトのプロミスで初期化されます。この情報には、このプロミスの真偽を解決する機能が含まれており、その定義はプリミティブの実装に任されています。OP Stackの最初の物議を醸すゲームの実装、FaultDefenteGame
、エラープルーフプログラムの結果によって決定された解像度関数にライセンスが付与されていませんでした。このプログラムはシミュレートされた仮想マシンの上で実行されました。
Two Stringsプロパティで興味深いゲームを検索します
論争そのものは、2つの基本的な属性に依存しています。
紛争解決協定では、さまざまなタイプの紛争ゲームを作成、管理、およびアップグレードすることができます。DisputeGameFactory.これにより、集約された証明システムやレイヤー2プロトコル状態外の論争事項に対応するための拡張プロトコルなど、革新的な機能への扉が開かれます。これには、オンチェーンのバイナリ検証を対象とするFaultDefenteGameなどが含まれます。
これはジャンル固有の紛争ゲームであり、OPスタック紛争契約上に構築された最初のゲームです。このゲームでは、プレイヤーは各ステップが達成されるまで実行軌道を前後に分割します。二分割が各追跡指示ごとに状態の約束を達成した後、FaultDefenteGame
チェーン上で単一の命令ステップを実行するために汎用仮想マシンを使用します。 VMの状態遷移関数(ここではそれを呼びましょうT)は、形式に従っていれば、どんな関数でもかまいませんT (s、i) -> s'、where s= 合意された事前状態,i= 状態遷移入力,s= ポスト状態 .
2つのゲームでの一般的なVMの最初の完全な実装のために、私たちはEVMの上に単一のMIPSスレッドコンテキストを実装し、生成された実行トレースで単一の命令を実行しましたby
キャノン
そしてopプログラム。
バイナリツリー内に存在する位置を宣言します。この位置は、文が関連する命令を示します。ポジションは、{depth}で定義されることができる一般化されたインデックスであり、2 ^ {depth} + index_at_depth と定義されます。
プレーヤーの行動は時間制限があります。このゲームにはライセンスが必要ありません、誰でも参加できます。各サイドはプレイ時間が3.5日分、合計7日間のプレイ時間でスタートします。新しいパスを作成したり、すでにステートメントを受け取っている場所でステートメントを行った場合、それは祖父レベルのチェスクロックです。
プレイヤーは、ステートメントの状態が1つのVM命令になるまで2つに分かれます。その後、ステートメントを検証または偽装するために、それをオンチェーンで実行します。アクションには攻撃(親ステートメントに対する挑戦)または防御(親ステートメントに同意)があります。プレイヤーが観測したステートメントのハッシュに同意すると(つまり、両者が特定のコマンドの下で同じ状態にあることを意味する)、しかし、相対的な同意に基づいてドライブしようとしている最終的な結果に同意しない場合、基になるステートメントが使用されます。
ロケーションツリーの葉ノードでは、各ステートメントが唯一のVM命令での状態を提出します。残された唯一のステップは、親の主張を証明または反論するためにVM命令を実行することだけです。
コマンドステップが予想されるポスト状態を確認した場合、そのステートメントは成立しません。予期しないリリースステータスや終了コードがある場合、親のクレームは否定されます。
この種のゲームは、すべての指定されたチェスクロックが使い果たされた後に解決される可能性があります。最短で3.5日間の期間があります。ゲーム内のすべての文は、それ自体が独自のサブゲーム(サブゲーム)のルートです。サブゲームは深さ1のDAGです。 ルートを指すすべてのサブゲーム(それ自体がサブゲームのルートである)はそのカウンターであり、サブゲームは、すべての子サブゲームが解決された場合にのみ解決できます。 サブゲームのルートは、サブゲームのルートの1つ以上が解決され、反撃されていない場合にのみ反撃されたと見なすことができ、この属性はゲームのルートステートメントに浸透し続けます。
正直なプレイヤーの存在(彼らのすべての行動が尽くされた時点で)は、基礎となる声明が正直であるか不正直であるかに関わらず、常にゲームが円滑に解決するようにもたらします。不正直な声明はいつでもどの当事者に対しても対抗できますが、同じサブゲーム内で同じ場所に繰り返し宣言のハッシュがある場合は許されていませんので、できる正しい声明は常に1つだけです。
0:00
1×
興味がある方のために、16の命令のみを対象としたFaultDefenteGameのための可視化ツールもあります。
このシミュレーションは、MIPSスレッドとは異なるコンテキストを持つ別のVM、AlphabetVMを使用しています。このVMは、入力として与えられた文字に対して次のアルファベットを返すだけです。
もしゲームのルールをより軽量なバックエンドで探求したい場合は、以下の方法でプレイしてください。
Optimismモノレポをクローンし、依存関係をインストールし、devnetディストリビューション/cannon/op-programバイナリを作成します。
必要な依存関係:
ファウンドリー
git clone git@github.com: ethereum-optimism/optimism.git & &\\ cd optimism & &\\ pnpm i & &\\ (cd packages/contracts-bedrock & & forge install) & &\\ Make up cannon-prestate & &\\ Make up devnet-allocs
アルファベットゲームを実行する:
CD OP-CHALLENCHER & & MAKE ALPHABET
ローカルでビジュアルフロントエンドを実行し、ローカル開発ネットワークに展開されたFaultDefenteGameエージェントのアドレスを入力します。
2人のゲームでは、上記のすべてのメカニズムが協力して、正直な行動を報われ、不正な主張に効果的に対抗するシステムが作られます。
同じ目標を達成するために論争の多いゲームを構築する方法はたくさんあります。私たちは、OP StackのFPSがOP Goerliに展開されると、当社のエコシステムのビルダーが楽しみながら創造的に自分自身の論争の多いゲームを構築することを願っています。作成されたすべての論争ゲームは、OP Stackの社会的分散化において役割を果たし、エコシステム参加者に特定の情報に関するあらゆる主張についての紛争を解決する方法に関する選択肢を提供します。
Compartir
OPスタックの初のエラープルーフシステムにおける論争のあるゲームとその役割について詳しく見てみましょう。
OPスタックのFault Proof System(FPS)の最も興味深いコンポーネントの1つがその物議を醸すゲームであることは偶然ではありません。前回のFPSの記事では、OPスタックのモジュラリティが、故障証明プログラム(FPP)を故障証明仮想マシン(FPVM)から切り離し、両コンポーネントの効率的な並列アップグレードと合成可能性の次のレベルを実現しています。これは物議を醸すゲームにも同様であると言っても過言ではありません。
この記事では、分散型の故障検出における紛争ゲームの役割、紛争契約の上にエラープルーフな紛争ゲームを構築する方法、およびそのようなゲームが紛争契約のスケーラビリティによって生じる可能性について探求します。
もし議論の的となっているゲームについて詳細を知りたい場合は、数週間前に私の個人ブログで共有したこのさらに詳細な投稿を読んでください。
紛争ゲームは紛争契約の基本原則です。シンプルな状態機械をシミュレートし、有効性が争われる情報のいずれかについて、32バイトのプロミスで初期化されます。この情報には、このプロミスの真偽を解決する機能が含まれており、その定義はプリミティブの実装に任されています。OP Stackの最初の物議を醸すゲームの実装、FaultDefenteGame
、エラープルーフプログラムの結果によって決定された解像度関数にライセンスが付与されていませんでした。このプログラムはシミュレートされた仮想マシンの上で実行されました。
Two Stringsプロパティで興味深いゲームを検索します
論争そのものは、2つの基本的な属性に依存しています。
紛争解決協定では、さまざまなタイプの紛争ゲームを作成、管理、およびアップグレードすることができます。DisputeGameFactory.これにより、集約された証明システムやレイヤー2プロトコル状態外の論争事項に対応するための拡張プロトコルなど、革新的な機能への扉が開かれます。これには、オンチェーンのバイナリ検証を対象とするFaultDefenteGameなどが含まれます。
これはジャンル固有の紛争ゲームであり、OPスタック紛争契約上に構築された最初のゲームです。このゲームでは、プレイヤーは各ステップが達成されるまで実行軌道を前後に分割します。二分割が各追跡指示ごとに状態の約束を達成した後、FaultDefenteGame
チェーン上で単一の命令ステップを実行するために汎用仮想マシンを使用します。 VMの状態遷移関数(ここではそれを呼びましょうT)は、形式に従っていれば、どんな関数でもかまいませんT (s、i) -> s'、where s= 合意された事前状態,i= 状態遷移入力,s= ポスト状態 .
2つのゲームでの一般的なVMの最初の完全な実装のために、私たちはEVMの上に単一のMIPSスレッドコンテキストを実装し、生成された実行トレースで単一の命令を実行しましたby
キャノン
そしてopプログラム。
バイナリツリー内に存在する位置を宣言します。この位置は、文が関連する命令を示します。ポジションは、{depth}で定義されることができる一般化されたインデックスであり、2 ^ {depth} + index_at_depth と定義されます。
プレーヤーの行動は時間制限があります。このゲームにはライセンスが必要ありません、誰でも参加できます。各サイドはプレイ時間が3.5日分、合計7日間のプレイ時間でスタートします。新しいパスを作成したり、すでにステートメントを受け取っている場所でステートメントを行った場合、それは祖父レベルのチェスクロックです。
プレイヤーは、ステートメントの状態が1つのVM命令になるまで2つに分かれます。その後、ステートメントを検証または偽装するために、それをオンチェーンで実行します。アクションには攻撃(親ステートメントに対する挑戦)または防御(親ステートメントに同意)があります。プレイヤーが観測したステートメントのハッシュに同意すると(つまり、両者が特定のコマンドの下で同じ状態にあることを意味する)、しかし、相対的な同意に基づいてドライブしようとしている最終的な結果に同意しない場合、基になるステートメントが使用されます。
ロケーションツリーの葉ノードでは、各ステートメントが唯一のVM命令での状態を提出します。残された唯一のステップは、親の主張を証明または反論するためにVM命令を実行することだけです。
コマンドステップが予想されるポスト状態を確認した場合、そのステートメントは成立しません。予期しないリリースステータスや終了コードがある場合、親のクレームは否定されます。
この種のゲームは、すべての指定されたチェスクロックが使い果たされた後に解決される可能性があります。最短で3.5日間の期間があります。ゲーム内のすべての文は、それ自体が独自のサブゲーム(サブゲーム)のルートです。サブゲームは深さ1のDAGです。 ルートを指すすべてのサブゲーム(それ自体がサブゲームのルートである)はそのカウンターであり、サブゲームは、すべての子サブゲームが解決された場合にのみ解決できます。 サブゲームのルートは、サブゲームのルートの1つ以上が解決され、反撃されていない場合にのみ反撃されたと見なすことができ、この属性はゲームのルートステートメントに浸透し続けます。
正直なプレイヤーの存在(彼らのすべての行動が尽くされた時点で)は、基礎となる声明が正直であるか不正直であるかに関わらず、常にゲームが円滑に解決するようにもたらします。不正直な声明はいつでもどの当事者に対しても対抗できますが、同じサブゲーム内で同じ場所に繰り返し宣言のハッシュがある場合は許されていませんので、できる正しい声明は常に1つだけです。
0:00
1×
興味がある方のために、16の命令のみを対象としたFaultDefenteGameのための可視化ツールもあります。
このシミュレーションは、MIPSスレッドとは異なるコンテキストを持つ別のVM、AlphabetVMを使用しています。このVMは、入力として与えられた文字に対して次のアルファベットを返すだけです。
もしゲームのルールをより軽量なバックエンドで探求したい場合は、以下の方法でプレイしてください。
Optimismモノレポをクローンし、依存関係をインストールし、devnetディストリビューション/cannon/op-programバイナリを作成します。
必要な依存関係:
ファウンドリー
git clone git@github.com: ethereum-optimism/optimism.git & &\\ cd optimism & &\\ pnpm i & &\\ (cd packages/contracts-bedrock & & forge install) & &\\ Make up cannon-prestate & &\\ Make up devnet-allocs
アルファベットゲームを実行する:
CD OP-CHALLENCHER & & MAKE ALPHABET
ローカルでビジュアルフロントエンドを実行し、ローカル開発ネットワークに展開されたFaultDefenteGameエージェントのアドレスを入力します。
2人のゲームでは、上記のすべてのメカニズムが協力して、正直な行動を報われ、不正な主張に効果的に対抗するシステムが作られます。
同じ目標を達成するために論争の多いゲームを構築する方法はたくさんあります。私たちは、OP StackのFPSがOP Goerliに展開されると、当社のエコシステムのビルダーが楽しみながら創造的に自分自身の論争の多いゲームを構築することを願っています。作成されたすべての論争ゲームは、OP Stackの社会的分散化において役割を果たし、エコシステム参加者に特定の情報に関するあらゆる主張についての紛争を解決する方法に関する選択肢を提供します。