自 Starknet エコシステムの Dojo が検証可能なオンチェーンゲーム(provable onchain game)の概念を提唱して以来、多くのチームがこの分野での探求を始めました。例えば、NFT の状態圧縮を利用した paima や、マークルツリーと状態の刻印を利用した redux などです。Zypher Network(@Zypher_Network)も同様に、ゼロ知識証明技術に基づいて、検証可能なオンチェーンゲームの制作を支援する一連の開発者キットを発表しました。
検証可能なオンチェーンゲームとは#
私たちは現在、ゲーム業界とブロックチェーン技術の結合には、資産をオンチェーン化する GameFi モデルか、状態をオンチェーン化するオンチェーンゲームモデルのいずれかがあることを知っています。オンチェーンゲームの一般的な定義は次のとおりです:すべてのゲームロジック、状態(資産およびその他)がチェーン上にあり、スマートコントラクトを通じて実現されます。
スマートコントラクトプラットフォームであるイーサリアムは、天然に分散型の状態機械であり、やや単純なオンチェーン計算と状態検証を行うことができます。そこで、皆はゲームロジックをスマートコントラクトに書き込もうとしました。こうして、ゲームはサーバーのバックエンドを必要としない分散型ゲームとなり、ゲームルールの組み合わせ性が高まりました。しかし、問題も生じました:イーサリアムメインネットの計算能力が弱く、使用コストも非常に高いため、高性能のレイヤー 2 チェーンや他のパブリックチェーンを使用することを考慮しても、オンチェーンゲームのニーズを満たすことはできません。
レイヤー 2 ロールアップからインスパイアを受けて、より大規模な送金操作がオフチェーン計算とオンチェーン検証で行えるなら、なぜゲームロジックの実行も同様に処理しないのでしょうか?こうして、検証可能なオンチェーンゲームの技術的な道筋が誕生しました。ゲームロジックはオフチェーンで計算されますが、各操作はオンチェーンで検証でき、ゲームの分散化と信頼性を保証します。これが「検証可能」という言葉の由来です。さらに、レイヤー 2 ロールアップの TX は通常の送金トランザクションであり、検証可能なオンチェーンゲームの TX はゲームのオンチェーントランザクションであると簡単に類推できます。
オンチェーン検証方式の違いにより、ロールアップは OP-rollup と ZK-rollup に分かれます。同様に、ゼロ知識証明技術を使用した検証可能なオンチェーンゲームは、状態検証の最終性や性能面で顕著な利点を持っています。これが、Dojo と Zypher Network が ZKP を選択して検証可能なオンチェーンゲームを開発する理由です。
Zypher Network 開発者キット#
Zypher Network の開発者キットは、AW Engine、Secret Engine、Zytron kit の 3 つの部分で構成されています。
- AW Engine:ZKP の情報圧縮能力を利用して拡張性を提供します。ゲームが垂直にスーパースケールできるモジュラーフレームワークです。回路または zkVM を通じてプログラミングできます。その z4 SDK は、リアルタイムのゲーム内マルチプレイヤーイベント(プレイヤー対戦)をサポートします。
- Secret Engine:ZKP の情報隠蔽能力を利用して非対称情報ゲームを提供します。戦略メカニズムを必要とするゲームに情報の非対称性を提供するゼロ知識証明即サービス(zk-as-a-service)のソフトウェア開発ツールキットです。ゼロ知識証明(ZKP)は、オンチェーンで完全にプライバシー計算とランダム性を実現し、その公平性を証明できます。
- Zytron kit:Layer3 スタック。主権ロールアップ L3 チェーンスタックで、ピアツーピア層の最適化、サーバーの分割など、便利なゲーム基盤の展開を提供します。大規模マルチプレイヤーゲームと AW 構築のために特別に設計されています。
ゼロ知識証明のモジュラー構造 AW Engine#
AW Engine は ZKP 回路の構築、証明の生成と検証を担当しており、キットの中で中心的な役割を果たしています。以下のいくつかの部分を含みます:
- Gadgets(ガジェット):ゲーム回路開発で使用されるさまざまなガジェットをサポートします。基本的なハッシュ、ecc、マスク、シャッフルなどが含まれます。
- 特定アプリケーションの回路:特定アプリケーションの plonk を zk 証明の基本的なスキームとして使用し、SDK が提供するさまざまなガジェットを使用して特定のゲーム回路を記述します。回路を wasm に直接コンパイルでき、ブラウザやアプリケーションで実行できます。また、異なる仮想マシン(EVM/WASM/...)上で実行される検証コントラクトも提供され、これらのコントラクトは異なるブロックチェーンシステムで実行され、オフチェーンで証明を生成し、オンチェーンで検証します。
- オンチェーン検証者:証明者と検証者のために最適化された wasm、およびすべての EVM チェーンの一般的な solidity 検証者のサポート、Move ベースのチェーンの Move-lang 検証者のサポートを提供します。
- Z4 マルチプレイヤー PVP エンジン:Z4 はリアルタイムマルチプレイヤーゲームのためのシステムです。プレイヤー対戦イベント(PvP)を専門の zk-rollup ノードにアウトソーシングすることで、マルチプレイヤーイベント処理能力を拡張します。
上の図は AW Engine の動作原理とアーキテクチャを示しています。このゲームエンジンは主にいくつかの部分に分かれており、各部分の機能を段階的に説明します:
-
Zypher Plonk / Bulletproofs / Groth16 / STARKs:これらは異なるゼロ知識証明スキームです。これは、ゲームエンジンがさまざまなタイプの ZKP スキームをサポートしていることを示しており、ゲーム開発者はニーズに応じて適切な証明システムを選択できます。
-
General VM/DSL:これは、ゲームロジックを記述および実行するための汎用仮想マシンまたは特定領域言語(Domain-Specific Language, DSL)を指します。Zypher Network は Risc Zero との戦略的提携を発表しており、同社の汎用 zkVM を統合する予定です。
-
Zypher gadgets & circuits:これらのガジェットと回路は ZKP の基本モジュールを構築します。ゼロ知識証明において、ガジェットは事前に定義された関数またはロジックの断片であり、回路はこれらのガジェットを接続したより大きな計算プロセスです。
-
Game Proof Circuit:ゲーム証明回路は、ゲームロジック全体のゼロ知識証明バージョンです。ここでは、ゲームルールを検証するための回路が作成され、プレイヤーの具体的な行動や戦略を漏らすことなく行われます。
-
Prover API:証明者 API は、開発者が証明を生成するためのインターフェースです。ゲームの文脈では、これはプレイヤーの行動がゲームルールに従って行われていることを証明することを意味します。
-
Onchain Verifier API:オンチェーン検証者 API は、前述の提供された証明を検証するための別のインターフェースです。これはブロックチェーン上で行われ、ゲームの各ステップが公正で透明であることを保証します。
-
ZK Proof Market:モバイルデバイス上のプレイヤー向けに、分散型の証明計算市場があり、プレイヤーは証明計算をアウトソーシングできます。これにより、オンチェーンゲームはハードウェアに依存しなくなります。
-
Game:オフチェーン計算のゲーム部分には、実際のゲームロジックとユーザーインターフェースが含まれ、プレイヤーがゲームを行うことを可能にします。
-
Onchain Game:証明がブロックチェーンに提出されると、ゲームは分散型で信頼のないオンチェーンゲームになります。レイヤー 2 の DA Proof を使用してオンチェーン操作を行うことに類似しています。
全体として、AW Engine はゼロ知識証明を利用してゲームの安全性と公平性を保障します。ゲームロジックが検証される一方で、重要な情報は漏れず、ブロックチェーン上でのゲーム開発と運営の新しい方法を提供します。
最後に、開発者の視点から全体のエンジンの作業フローを見てみましょう:
1. 開発段階:
- まず、開発者は適切なゼロ知識証明スキーム(Plonk、Bulletproofs、Groth16、STARKs など)を選択します。
- 次に、彼らはこれらのスキームの 1 つを使用して「Zypher gadgets & circuits」を作成します。これらはゲームロジックの構成要素です。
- これらの構成要素は、ゲーム状態の有効性を証明するゼロ知識回路である完全な「Game Proof Circuit」に組み合わされます。
2. 証明生成(Prover API):
- ゲームの各アクションまたは状態変更は、「Prover API」を通じてバックエンドで証明に変換されます。この証明は偽造できず、重要なゲームデータを漏らしません。
- この証明は、プレイヤーのゲームアクションまたはゲーム状態がゲームルールに従っていることを表します。
3. オンチェーン検証(Onchain Verifier API):
- 生成された証明は、その後「Onchain Verifier API」を通じてブロックチェーンに提出されます。
- このオンチェーン検証者は、証明の有効性を検証し、ゲームアクションまたは状態の合法性を確認し、ゲームの公平性と正確性を保証します。
上記のプロセスには Z4 マルチプレイヤーシステムは含まれていませんが、実際には ZKP はゲームロジックを「検証可能」にするだけでなく、「マルチプレイヤーシステム」を「検証可能」にする操作も行えます。
上の図は Z4 エンジンの作業フロー図であり、Z4 エンジンはリアルタイムマルチプレイヤーゲームの方法をサポートしています。これは、無状態の部屋を作成してプレイヤーをマッチングし、ゲームを行うことによって実現されます。これらの部屋は zk-rollup ノードによって支えられ、ノードはデータを保存しません。ゲームロジックがノード上で実行されると、すべての操作は順序付けられ、要約され、ゼロ知識証明を通じて証明されます。ゲームが終了すると、操作と結論の証明がブロックチェーンにアップロードされ、検証されます。Z4 ノードは仮想マシンを使用せずにゲームロジックを直接実行でき、トランザクションやガス費用を回避します。必要に応じて、ノード上で仮想マシン(WASM/EVM など)を使用してゲームロジックを実行することもできます。全体のプロセスは、ネットワーク全体で毎秒数百万から数十億のトランザクション量をサポートし、ゲームのリアルタイム性と高い同時処理性能を確保することを目的としています。
非対称情報モジュール Secret Engine#
「戦争の霧」は、ゲームで一般的に見られるメカニズムであり、典型的な例には『スタークラフト』や『ウォークラフト 3』があります。このデザインは、ゲームマップの特定の領域を覆うことで情報を隠し、プレイヤーがこれらの領域を探索するまで表示されないようにします。このメカニズムは、ゲーム環境の予測不可能性を高め、いわゆる非対称情報ゲームの典型的な特徴です。ほとんどの人気 MMO ゲームは非対称情報のゲームメカニズムを採用しており、プレイヤーに探索や戦略を立てるためのより多くのスペースを提供しています。
しかし、ブロックチェーン技術では、データは通常完全に公開されており透明であるため、非対称情報メカニズムを実現することが困難です。しかし、Dark Forest ゲームはゼロ知識証明技術 zkSNARKs を採用することで、プレイヤーが公開して検証可能な有効なアクションを提出する必要がある一方で、そのプライバシー状態を保持することに成功しました。これにより、Dark Forest はブロックチェーン上に不完全な情報のゲーム環境を創造しました。しかし、この複雑な情報隠蔽方法はカスタマイズされた ZK 回路プログラミングを必要とするため、広範な情報隠蔽はオンチェーンゲームでは実現できません。
Secret Engine は、最適化された WASM とプリコンパイルされたコントラクト部分を通じてこの問題を解決し、Shuffle SDK を介して高性能で低コストの分散型シャッフルプロセスを実現しました。シャッフル回路とプロトコルは、検証可能な暗号計算の安全な実行を保証し、戦略要素がオンチェーンで機密のまま保持されることを確保します。ポーカー、大富豪、トレーディングカードゲームに加えて、この SDK は無信任とランダム性を必要とする他の SLG ユースケースにも適用できます。例えば:
- Social Deception:社交的な欺瞞ゲームでは、プレイヤーの秘密の身分や戦略を保護できます。
- Secret Placing:ゲーム内の秘密の配置アクション、例えばユニットや資源の位置を隠すことが安全に実現できます。
- Fog of War:戦争の霧は、特定の条件が満たされるまで特定のプレイヤーに対してマップの一部を秘密にするために使用できます。
よく使用される SDK は 2 つあります:
- zk-Shuffle-as-a-service:プレイヤーが交互に暗号化とシャッフルを行い、「密封された」ランダムに並べられたカードデッキを生成します。これは、従来のランダム数生成器(検証可能なランダム関数、VRF)では提供できないソリューションを提供します。
- zk-Matchmaking-as-a-service:プレイヤーが「証明シード」を提出してランダム数を生成し、オンチェーンでマッチングを行います。この全プロセスは zkp を通じて証明されます。
この画像は Shuffle SDK の作業フローを示しています:
1. Zypher PlonK:
- Basic PlonK:これは汎用のゼロ知識証明スキームであり、他の情報を明らかにすることなく、複雑な計算の正確性を検証するための証明を生成することを可能にします。
- Shuffle selectors:これはシャッフルプロセスに特有のロジックまたは構成であり、PlonK 証明システムがカードのシャッフル操作を正しく実行することを許可します。
2. Shuffle Circuit:
- Chaum Pedersen:このサブコンポーネントは、シャッフルプロセスのプライバシーを確保するために使用されます。これは通常、デジタル署名や暗号化に関連しており、ここでは各カードの暗号化が安全であることを保証します。
- Reveal:このステップは、必要に応じてカードの身元を安全に明らかにすることに関与し、他のカードの情報を漏らしません。
- Permutation:これはシャッフルの実際のプロセス、つまりカードの再配置を指します。
- Card Model:これはカードのデータモデルを定義し、カードの暗号化バージョンを作成し、その後のシャッフルプロセスの検証において重要です。
3. Shuffle SDK:
- Prover SDK (Rust/WASM):このソフトウェア開発ツールキットは、ゲーム開発者がシャッフルプロセスが正しいことを証明するためのゼロ知識証明を生成することを許可しますが、カードの実際の順序を明らかにする必要はありません。
- Onchain Verifier SDK (Solidity/WASM/Move):この SDK は、シャッフル証明の正確性を検証するためのオンチェーン検証者を作成するために使用されます。
上記の説明はまだ抽象的かもしれませんので、オンチェーンポーカーの例を挙げて Shuffle SDK の原理を説明します。
ゲーム内では、「シャッフルされたカードデッキ」の結果をチェーン上に保存する必要があります。これは現在のシャッフルの結果としてだけでなく、後続の「シャッフル」の公共入力としても機能します。最初に、カードデッキの設定は初期のカードデッキをデフォルトで保存します。しかし、ブロックチェーン上のストレージコストが高いことは周知の事実であり、特に大規模なデータ量に対しては重要な考慮事項です。52 枚のカードは合計 208 個の uint256 型データで構成され、ストレージコストは重要な考慮事項となります。
Zypher の解決策は、シャッフル後にチェーン上に部分的なデータのみを保存することです。具体的には、プレイヤーの数 n に対して 2n+5 枚のカードのみを保存する必要があります。現在、最大 6 人のプレイヤーをサポートしているため、最大で 17 枚のカードを使用します。これは、最終的に 17 枚のカードのみをチェーン上に保存する必要があることを意味します。しかし、前述のように、チェーン上のストレージのもう 1 つの目的は、これらのカードも後続のシャッフルの公共入力として機能することです。したがって、17 枚のカードのみを保存すると、シャッフルの正確性を検証できなくなります。
この問題を解決するために、Zypher の zk-shuffle 回路は、公共入力として完全なカードデッキのハッシュ値を追加出力し、これもチェーン上に保存します。zk-shuffle を検証する際、ユーザーはシャッフル前のカードデッキを公共入力としてアップロードし、回路はユーザーがアップロードしたカードのハッシュ値を計算し、チェーン上に保存されたハッシュ値と比較します。最終的に、部分的なデータのみがチェーン上に保存されるため、ユーザーは完全な 52 枚のカードを取得する必要があるかもしれません。このためには、コントラクトイベントを使用できます。イベントは非常に低コストの通信手段であり、ユーザーがイベントをリッスンすることで完全なゲームデータを取得できます。
要するに、全プロセスの核心は、ゼロ知識証明を使用してシャッフルのプライバシーと正確性を保証することです。この方法により、ブロックチェーン上でのすべての操作を公開記録しても、プレイヤーの意思決定や戦略はプライバシーを保持できます。
主権 L3 スタック Zytron kit#
Zytron Kit は、高度にカスタマイズ可能な Layer 3 主権ロールアップスタックで、Zypher のゲームエンジンをプリコンパイルされたコントラクトとしてサポートします。
既存の Dapp インフラストラクチャは主に EVM であり、オンチェーンゲームのような高応答性のユースケースに最適化されておらず、必要なコスト効率やスケーラビリティを提供できていません。MMO や他の高性能ゲームは、効率的で予測可能な計算リソースを備えた専用のカスタマイズされたインフラストラクチャを必要とします。Zytron の最初のアルファネットワークは、0 ガス、0.2S のブロック時間、ゲーム用に設計されたプリコンパイルコントラクトを特徴としており、近日中にリリースされる予定で、10 のゲームが先駆者テスターとして計画されています。
このキットは 4 つのプラグアンドプレイのコアコンポーネントを提供します:
- 主権ロールアップ:ゲームにおいて最も重要なのはプレイアビリティであり、これは分散システム内で最高の可用性(CAP)を持ち、全システムが迅速にアップグレードされ自動展開できる必要があります。
- サーバー分割:ゲームのワールドマップを異なるノードに分散させ、単一ノードの負荷能力を向上させます。同時に、グローバルマップ上の異なるノード間で迅速に移動し、異なるノードサービスを切り替え、情報を同期するための効率的な検索アルゴリズムを提供します。
- データ互換性:ストレージ抽象化にとって重要なコンポーネントであり、このプロトコルは、ゲームデータ処理を加速するために、よりユーザーフレンドリーなリレーショナルおよびキャッシュデータベースを統合しています。この機能は、高効率なデータ管理と迅速なアクセスのニーズを解決し、スムーズなゲーム体験を維持するために不可欠です。
- カスタムネットワーク:ゲームの高いネットワーク要求を考慮し、このフレームワークは、ゲームシーンをサポートするために基盤となるピアツーピア(P2P)ネットワーク層を最適化しました。これには、グループ内メッセージ伝送の最適化が含まれ、NAT トラバーサルと打孔技術を使用して迅速かつ効率的な接続を実現します。さらに、ネットワークはゲーム用に特別に設計された UDP プロトコルを持ち、遅延を 10 ミリ秒以下に保つことを目指しています。これにより、リアルタイムゲーム体験にとって重要な迅速かつ信頼性の高いデータ伝送が確保されます。
主権ロールアップは比較的新しい概念であり、通常のロールアップの基盤の上に、より高いレベルの自律性と柔軟性を追加し、独立した完全な自治機能を持つブロックチェーンネットワークを構築できるようにします。これは、各主権ロールアップが独自のコンセンサスメカニズム、状態機械、ガバナンスモデルを持ちながら、メインチェーンとの互換性を維持できることを意味します。
上のフレームワーク図を通じて、Zytron キットの各コンポーネントの機能を理解できます:
1. コアコンポーネントはゲームチェーンのインフラストラクチャを提供し、高度なカスタマイズと最適化を許可します。
- 主権ロールアップはゲームのプレイアビリティと高可用性を保証し、システムの迅速なアップグレードと自動展開をサポートします。
- サーバー分割はゲームの世界を複数のノードに分散させ、単一ノードの負荷能力を向上させます。
- データ互換性は、ユーザーフレンドリーなデータベースシステムを統合することで、ゲームデータの迅速な処理を確保します。
- カスタムネットワークは、ゲームの高いネットワーク要求を満たすために基盤となる P2P ネットワーク層を最適化し、グループ間のメッセージ伝送を最適化し、遅延を減少させます。
2. オンチェーンコンポーネントは、ゲームロジックの正確性と資産の安全性を保証するためにチェーン上で実行される基本部分を含みます。
- オンチェーン検証者は、すべてのトランザクションとゲーム操作が有効で合法であることを保証します。
- スマートコントラクトはゲームルールとロジックのコーディング媒体として機能し、プレイヤー間の相互作用とゲーム状態の変化を処理します。
3. モジュールコンポーネントは特定のゲーム機能とサービスの実装を提供します。
- ZK システムはプライバシー保護をサポートし、プライバシー計算と検証を提供します。
- アカウントシステムとインスタントメッセージングシステムはユーザー管理とリアルタイム通信機能を提供します。
- 監視システムはネットワーク状況とゲーム運営状況を監視します。
- ルームシステム、金融システム、AI システムはゲーム内のルーム管理、財務取引、人工知能サポートを提供します。
- ログシステムはすべての操作とイベントを記録し、分析とデバッグのために使用されます。
上の図は Zytron kit スタックの作業フローを示しています:
- トランザクションは最初に Layer 3 で生成され、Sequencer によって順序付けされます。
- Runner ノードは Layer 1/2 のイベントと Sequencer の出力を監視し、トランザクションを実行し、サービス分割機能を実現するために通信します。
- データは定期的に Celestia に提出され、データの可用性と安全性を確保します。
- クライアントは軽量同期を通じて Layer 3 と対話し、Layer 3 が提供するサービスを呼び出すことができます。
さらに興味深いことに、前述の 2 つのエンジンキット、AW Engine と Secret Engine は、プリコンパイルされた形式で Zytron kit と統合され、より簡潔な形でオンチェーンゲームに高効率、迅速な応答、機能豊富なインフラストラクチャを提供します。開発者は自分のニーズに応じて適切なコンポーネントを選択し、彼らのゲームデザインに合ったチェーン環境を作成できます。Zypher は ETH エコシステムをサポートするだけでなく、BTC エコシステムにおけるオンチェーンゲームや L3 の可能性を積極的に探求しています。Zypher と BTC の Layer2 B² Network は、B² Network およびその DA Layer B² Hub に基づいてオンチェーンゲーム専用の Layer 3 を展開することを発表しました。これは BTC エコシステムにおける初のオンチェーンゲームをサポートする Layer 3 となります。Zypher は BTC エコシステムをサポートするオンチェーンゲーム開発エンジンの最初の一つとなりました。