【Zypher Research】zk-Shuffle SDK:オンチェーンカードゲームのガスコストを最適化

Zypher Research
2024-04-28 10:22:29
コレクション
Zypherがまもなく発表する0GAS Alpha Netで、全チェーンカードゲームを再体験してください。

# 概要

本研究記事では、最適化された暗号技術(PlonK)を通じて、効率的で完全なオンチェーンシャッフルを実現する方法について説明します。これには以下が含まれます:

  • "Mental Poker"とzk-shuffleによるゲーム内の公平性の保証

  • ZypherのシャッフルSDKがそのSecret Engineのコアコンポーネントとして機能

  • SNARKを使用した"Reveal"プロセスの最適化

  • "ローカル"ストレージを使用した"Shuffle"プロセスの最適化

  • Zypherが近日中に発表するZERO GAS Alpha Net、シャッフルをプリコンパイルコントラクトとしてサポート

# Zypher Secret Engineとは?

その名の通り、Zypher Secret Engineは"オンチェーンプライバシー"を保護します。

予測可能なゲームメカニズムにより、過去にはブロックチェーンの固有の透明性が全チェーン戦略ゲームを非現実的にしました。

Secret Engineは、安全な暗号計算の実行をサポートし、戦略要素の"プライバシー"をチェーン上で確保します。ソーシャルデセプション、戦争の霧、シャッフル、ランダム性、secret placingなどのメカニズムは、現在チェーン上のゲームに統合され、証明可能です。

現在、このエンジンは2つのコアコンポーネントを提供しています:

  • zk-Shuffle SDK

  • zk-Matchmaking SDK

# Mental Poker/カードゲームのオンチェーンシャッフル

1979年、Rivest、Shamir、Adlemanは、実体のトランプなし、信頼できる第三者なし、すべての参加者が不誠実である(つまり、チート行為が存在する)と仮定した場合、インターネット上のポーカーゲームの公平性をどのように確保するかという課題を提起しました。この問題は"Mental Poker"とも呼ばれています。

Mental Pokerゲームでは、公平性を確保することが重要であり、zk-shuffleは重要なステップです。しかし、シャッフル時間はユーザー体験に大きく影響します。Re-mask操作は楕円曲線暗号学を含み、52枚のカードをシャッフルする回路は非常に大きくなります。回路のサイズを小さくするために、PlonK回路ゲートを再設計し、zk-shuffleアルゴリズムを基盤層(制約システム)に組み込みました。

実際には、zk-shuffleに加えて、オンチェーン検証の高いガス料金の問題にも直面しています。本稿では、ガスコストを削減するための最適化の見解について主に議論します。

# "Reveal"プロセスの最適化

zk-shuffleは2つのアクションを含みます:

1)カードの置換、

2)カードのRe-masking。

マスクされたカードを仮定すると:

ランダム番号:

マスクされたカードC上のremask操作は次のようになります:

ここでG:群要素、すなわちBaby Jubjub、Hは集約公開鍵です。

上記のremask操作を完了すると、新しいマスクされたカードが得られます:

実際に得られたマスクされたカードのマスク因子:

したがって、カードを明らかにするために、各プレイヤーは自分のマスク因子を提供する必要があります。さらに、マスク因子を提供する必要がない別の方法、すなわち本節で議論するreveal方法もあります。

プレイヤーの公開鍵と秘密鍵のペアを仮定すると:

カードを明らかにする際、プレイヤーは次の計算を行うだけです:

カードを開くことは単純な点乗算ですが、プレイヤーが誠実であることを保証できず、プレイヤーが実際にカードを開く操作を実行したかどうかも保証できないことに注意が必要です。したがって、プレイヤーはカードを開くと同時に、自分の開示行為を証明する証拠を提供する必要があります。

Geometry Researchで実装されたMental Pokerプロトコルでは、彼らはChaum Pedersenプロトコルに基づいて開示証明を構築しました。しかし、この証明はオンチェーン検証のコストが非常に高く、主にChaum Pedersenプロトコル全体がBaby Jubjub曲線に基づいているため、EVMは現在それをプリコンパイルコントラクトとしてサポートしていません。したがって、私たちはコントラクト内で点加算と点乗算をネイティブに実装する必要があります。詳細はGitHubに記載されており、開示証明の検証にかかるガスコストは非常に高くなります。開示証明の検証は少量の点乗算と加算を含むだけですが、テスト結果はネイティブ検証のガスコストが7,629,888に達することを示しており、これは明らかに受け入れられません。

Baby JubjubがBN254の埋め込み曲線であることを考慮すると、SNARKを使用して開示証明を行うことができます。Groth16検証のガスコストによれば、Groth16を使用した開示証明のオンチェーン検証には約200,000しかかからず、これはネイティブ検証方法の約30倍少ないことになります。ネイティブ検証方法と比較すると、これは非常に良い選択肢のようです。開示回路は次の通りです:

# "Shuffle"プロセスの最適化

テキサスホールデムゲームを例に考えてみましょう。このゲームでは、"Shuffle"の結果をチェーン上に保存する必要があります。これは現在のシャッフル結果として機能するだけでなく、次の"Shuffle"の公共入力としても機能します。最初に設定されたデッキは、初期デッキをデフォルトで保存します。しかし、チェーン上のストレージコストが高いことは周知の事実であり、特に大規模なデータ量においては重要な考慮事項です。52枚のカードは合計で208個のuint256型データを含むため、ストレージコストは重要な要素となります。

私たちの解決策は、シャッフル後にチェーン上に部分的なデータのみを保存することです。具体的には、プレイヤーの数nに対して2n+5枚のカードのみを保存する必要があります。私たちのゲームは最大6人のプレイヤーをサポートするため、最大で17枚のカードを使用します。つまり、最終的にはこの17枚のカードのみをチェーン上に保存する必要があります。

最終的に17枚のカードのみをチェーン上に保存する必要がありますが、前述のチェーン上ストレージのもう一つの目的は、これらのカードが次のシャッフルの公共入力としても機能することです。したがって、17枚のカードだけを保存すると、シャッフルの正確性を検証することができません。

この問題を解決するために、私たちのzk-shuffle回路は、全デッキのハッシュ値を公共入力として追加出力し、チェーン上にも保存します。zk-shuffleを検証する際、ユーザーはプレシャッフルされたカードを公共入力としてアップロードし、回路はユーザーがアップロードしたカードのハッシュ値を計算し、それをチェーン上に保存されたハッシュ値と比較します。

最後に、チェーン上に部分的なデータしか保存されていないため、ユーザーは完全な52枚のカードを取得する必要があるかもしれません。そのために、コントラクトイベントを使用できます。イベントは、ユーザーがイベントをリッスンすることで完全なゲームデータを取得できる非常に低コストの通信手段です。

以上のように、今回の最適化はストレージコストを効果的に削減するだけでなく、ゲームの公平性と完全性も保証します。すべての関連コードは、uzkgeリポジトリ(GPLv3に基づいてオープンソースのSecret Engineの初期バージョン)で見つけることができます。

# Zypher Alpha Net:革新するオンチェーンカードゲーム

Risc Zeroパートナーシップ発表で強調されているように、ZACEの開発チームは、Zypherのzk-Shuffle SDKを使用して公平なオンチェーンシャッフルを提供し、Risc Zero zkVMを使用して証明可能なゲームロジックの全チェーンテキサスホールデムゲームを開発しています。現在、opBNBテストネットでゲームテスト段階にあり、遅延とガスコストが明らかに最適化されています。

ゲームにWeb 2.0体験をさらに提供するために、私たちはすぐにZytron Kit(Zytron One Pager)によってサポートされるAlpha Netを発表します。Zytron Kitは、0 Gas、0.2s Blocktime、強化された暗号プリコンパイル、Zypherゲームエンジンなどのプリコンパイルコントラクトを備えた私たちのゲーム専用のSovereign Rollup Stackです。Alpha Netでは、Crypto Rumblez2048、zAceなどの0 Gasをサポートするいくつかの先駆的な全チェーンゲームが発表される予定です。ご期待ください!

# Zypher Networkについて

Zypher Networkは、主権Layer 3 RollupsからZK-as-a-service SDKsまでの一連のZKP駆動のゲームエンジンを含む、次世代の自治世界インフラストラクチャを構築しています。私たちの技術は、分散型ゲームに必要な相互運用性、プログラマビリティ、スケーラビリティ、暗号原則を提供します。これにより、ゲーム開発者は、スケーラビリティ、公平性、ゲーム戦略の複雑さを強調した豊かでインタラクティブなオンチェーン世界を創造する能力を持ちます。

ChainCatcherは、広大な読者の皆様に対し、ブロックチェーンを理性的に見るよう呼びかけ、リスク意識を向上させ、各種仮想トークンの発行や投機に注意することを提唱します。当サイト内の全てのコンテンツは市場情報や関係者の見解であり、何らかの投資助言として扱われるものではありません。万が一不適切な内容が含まれていた場合は「通報」することができます。私たちは迅速に対処いたします。
チェーンキャッチャー イノベーターとともにWeb3の世界を構築する