
ゼロ知識証明は、フルチェーンゲームとブロックチェーン間のインタラクション回数を削減することで、ユーザーエクスペリエンスを向上させることができるか?
TechFlow厳選深潮セレクト

ゼロ知識証明は、フルチェーンゲームとブロックチェーン間のインタラクション回数を削減することで、ユーザーエクスペリエンスを向上させることができるか?
ゲーム分野におけるZKPは、どのような用途に適しているか?
執筆:Yooma

画像出典:https://unsplash.com/photos/people-inside-library-1mwPOXb_pB8
直面する課題
PopCraftはチェーン上ですべてが完結するマッチ消しゲームであり、1回のゲーム時間は4分間である。プレイヤーは制限時間内に盤面上のすべての要素を消去することで、トークン報酬を得ることができる。
しかし、全ノード上で動作するという特性から、プレイヤーの各操作はブロックチェーンと常にやり取りを行う必要がある。イーサリアムL2のブロック生成時間は通常2秒であり、プレイヤーの操作ごとに少なくとも2秒以上の待機が必要となるため、同種のWeb2ゲームと比較して待ち時間が長すぎて、PopCraftのゲーム体験が著しく損なわれている。

PopCraft ゲームメイン画面
構想されたソリューション
我々はPopCraftにおいてゼロ知識証明(以下ZKP)技術を活用し、ゲーム中のブロックチェーンとのインタラクション回数を削減することを構想している。
具体的には、ゲームプロセス自体はオンチェーン化せず、不正行為がないことを保証する仕組みを導入する。つまり、プレイヤーの各操作ごとにZKPを生成し、次のステップのZKPは前のステップのZKPに基づいて作成されるようにすることで、ブロックチェーン構造に類似した自己完結型のZKP連鎖を形成する。ゲーム終了時に最終ステップのZKPをチェーン上に送信し、スマートコントラクトがその結果を検証する、という方式を想定している。
調査と考察
1. ゲームプロセスおよび結果の不正防止:ゲーム結果のみに対してZKPを生成するだけでは不十分である。なぜなら、ゲーム進行中にも不正行為の余地があるため、結果だけでなく、ゲームプロセス自体も検証する必要がある。
2. 段階的ZKP生成の技術的課題:不正防止のため、プレイヤーの各操作に対してZKPを生成し、ゲーム終了時に最終的なZKPのみをオンチェーンで検証する必要がある。この際、各ステップのZKPは前ステップのZKPに依存しており、ゲーム終了まで連鎖的に続く。
しかし、以下の難点が存在する:
1> 新しいZKPの生成には前のZKPが必要となるが、これにより検証プロセスが複雑になり、実現可能かどうか不明である。さらに、ZKPの検証はスマートコントラクト(オンチェーン)で行うため、次ステップのZKP生成時に「前のZKPが正しいかどうか」をどうやって検証すればよいのかという問題がある。
2> 各ステップのZKPが正しいかをスマートコントラクトで検証する際、各ZKPと前のZKPとの整合性をどう担保するか。この問題に対する解決策が現在のところ不明である。
3. ゲームデータの公開性に関する問題:PopCraftのゲームデータは公開されているため、ZKPによる情報隠蔽は不要である。仮に上記の検証手順がすべて実現できたとしても、次に考えるべきはコントラクト側でのゲームデータ保存である。しかし問題は、ZKPの性質上、具体的なゲームデータを復元できないことにある。また、クライアントがスマートコントラクトに送るゲーム結果データをそのまま信用することもできないため、スマートコントラクトはこれらのデータを直接保存できない。
4. PopCraftにおけるゲームアイテム消費(Token消費)の問題:孤立した要素を消すためにゲームアイテムを使用する場合、これは本質的にTokenの消費に相当し、ユーザーのウォレットから対応するTokenを移転する必要がある。この操作に対するZKPの生成・検証方法もまた課題となる。
1> 一つの可能性として:これまでの流れに従ってZKPを生成し、消費されたToken数を検証した後、最終的にスマートコントラクトに送信する方法がある。しかし、スマートコントラクトはZKPから具体的なゲームデータを得られないため、どの程度のTokenを移転すべきか判断できない。
さらに、プレイヤーが所有するToken Aが3個しかないのに、ゲーム内で4個使用しようとするようなケースでは、そのエラーはゲーム終了時まで検出されず、リアルタイムでの操作段階では即座に検知できない。
2> 別の可能性として:孤立要素の消去にTokenを使用する際、直接スマートコントラクトと通信して消去処理を行い、プレイヤーのToken残高を更新する。そして生成されたZKPは、その時点での游戏操作と状態の証明を保持する役割に限定する。
この場合、Tokenの移転が成功した後も、前述の操作と同様に引き続きZKPを生成する必要がある。もし生成しない場合、Token移転操作の直前と直後のZKPの間にスマートコントラクトとの通信が挟まるため、ZKP内のゲーム状態が矛盾し、ゲーム終了時のZKPが有効かどうかが不確かになる。
5. ZKPの情報隠蔽に関する問題:PopCraftのようにゲームデータの非公開性が不要なケースでは、ZKPによるデータ隠蔽は冗長であり、ゲームデータ取得の難易度やエンジニアリング実装の不確実性を高めるだけである。PopCraftが求められるのは、ゲームプロセスと結果に不正が存在しないことの保証であり、ゲームデータ自体を隠す必要はない。
結論
PopCraftのようなゲームでは、ゲームデータの非公開性は要求されていないため、ZKPによる情報隠蔽は不要である。レスポンスタイムの短縮によりゲーム体験を向上させるためには、ゲームプロセスはオフチェーンとし、最終結果のみをオンチェーン化する方針が考えられる。重要なのは、ゲーム開始から終了までのすべてのステップに不正の余地がないことを保証し、正しい結果のみをオンチェーンで検証できることだ。
ZKPを使って情報を隠蔽することは、かえってエンジニアリングの難易度を上げる。また、ゲームプロセス全体にわたり不正がないことをどう保証するかという点について、ZKPは単一の操作については不正防止が可能だが、ブロックチェーンとの通信回数を減らすために「1操作ごとにZKPを生成して即時提出」という方式は取れない。そのため、最初の操作から最後までの一連のプロセスにおいて不正がないことを保証する方法としては、現時点ではZKPでは解決できないと考えられる。
我々の調査によれば、ゲーム分野におけるZKPの適切な用途は主に以下の2つである:
-
非完全情報ゲームにおける情報隠蔽:例として、ダークフォレスト、テキサスホールデム、人狼、ハースストーンなど。
-
単一アクション型ゲームの結果証明:例として、宝くじ、数字当て、じゃんけん、サイコロゲームなど。
なお、我々はゼロ知識証明技術に関する知見が限られているため、本記事の内容には事実誤認や工学的に不合理な想定が含まれている可能性がある。ゼロ知識証明分野の専門家の方々からのご指摘・ご訂正を心よりお願い申し上げます。
TechFlow公式コミュニティへようこそ
Telegram購読グループ:https://t.me/TechFlowDaily
Twitter公式アカウント:https://x.com/TechFlowPost
Twitter英語アカウント:https://x.com/BlockFlow_News









