オリジナルタイトル:心配するのをやめて実行シャーディングを愛する方法
ビデオリンク: https://www.youtube.com/watch?v=A0OXif6r-Qk
講師: Scott Sunarto (@smsunarto) リサーチデーにて
記事編集: Justin Zhao (@hiCaptainZ)
皆さんこんにちは、私の名前はスコット(@smsunarto)で、Augus Labs(@ArgusLabs_)の創設者です。今日は、しばらく触れていなかったトピックについてお話しします。ロールアップが時代の流行となっている中、私たちはデータシャーディングについて話すことが多いですが、実行シャーディングについてはあまり話しません。そこで、少し忘れられた実行シャーディングのトピックを再訪しましょう。
リラックスしたトークになるでしょう。皆さんが複雑な概念を一日中聞いていることは知っていますので、できるだけ実用的に保つように努めます。このプレゼンテーションのために適切なスライドデザインを用意しました。
私を知らない方のために、面白い事実として、私は Twitter でアニメの女の子として知られています。また、ここにいるために大学の卒業式を逃したことが、両親を非常に不満にさせました。現在、私は Argus Labs の創設者です。私たちはインフラや暗号会社ではなく、ゲーム会社として自認しています。私の最大の不満の一つは、暗号ゲームの皆がツールを作りたがる一方で、コンテンツやアプリケーションを作りたがらないことです。ユーザーが実際に使えるアプリケーションがもっと必要です。
以前、私は素晴らしい友人のブライアン・グ(@gubsheep)とアラン・ロ(@alanluo_0)と共にダークフォレスト(@darkforest_eth)の共同制作者でした。ブライアンは現在、0xPARC(@0xPARC)を運営しており、私よりも何倍も賢いです。
今日のトークは実行シャーディングに焦点を当てますが、実行シャーディングに関する私たちの議論のほとんどが不慣れな文脈で行われます。通常、私たちは Ethereum シャーディングや Near シャーディングのようなレイヤー 1 の文脈で実行シャーディングについて議論します。しかし、今日は文脈を少し変えたいと思います。ロールアップ環境でシャーディングがどのように見えるかを考えてみましょう。
ここでの根本的な質問は、なぜゲーム会社が自分たちのロールアップを設計しているのか、そしてロールアップを設計する際に World of Warcraft から何を学べるのかということです。また、ロールアップの設計空間が現在の現実をはるかに超えて拡大できる方法についても探ります。
これらの質問に答えるために、2020 年にダークフォレストのアイデアが最初に考案された時に戻りましょう。私たちは、「すべてのゲームアクションがオンチェーンのトランザクションであるゲームを作ったらどうなるだろう?」と自問しました。当時はそれは不条理な前提でしたが、今日でも多くの人にとってそうです。しかし、それは興味深い仮説だったので、私たちはそれを構築し、ダークフォレストが誕生しました。
ダークフォレストは、Ethereum 上の完全なオンチェーン宇宙探査 MMORTS ゲームで、ZK-Snarks によって動かされています。2020 年当時、ZK は今日ほど人気がなく、ドキュメントはほとんど存在しませんでした。Circom の唯一の利用可能なドキュメントは、ジョルディ・バイリナ(@jbaylina)の Google ドキュメントでした。困難にもかかわらず、私たちはそのプロセスから多くを学び、ダークフォレストはその具現化です。
ダークフォレストは、私たちが思っていたよりも大きく成長した実験でした。私たちは 10,000 人以上のプレイヤーを持ち、数兆のガスを消費し、オンチェーンでお互いを裏切る人々による多くのゲーム内混乱がありました。ダークフォレストとオンチェーンゲームの最も魅力的な点は、プラットフォーム化の性質です。オンチェーンゲームを持つことで、出現する行動の設計空間が開かれ、人々がゲームと相互作用するスマートコントラクトを構築し、ダークフォレストアリーナや GPU マイナーのような代替クライアントやゲームモードを許可します。
しかし、大きな力には大きな責任が伴います。私たちがダークフォレストを xDai で立ち上げたとき、現在は Gnosis Chain として知られていますが、チェーンの全ブロックスペースを埋めてしまいました。これにより、DeFi、NFT、または他の xDAI 関連の何かにとってほぼ使用不可能になりました。
さて、今後はどうなるのでしょうか?私たちは行き止まりにいるのでしょうか?オンチェーンゲームは決して現実にならないのでしょうか?それとも、オンチェーンにあるのは JPEG だけのゲームを作り、人々をお金が木に生えると納得させるのでしょうか?答えは、ソフトウェアに何かをさせることです。私たちの多くは、ブロックチェーンやロールアップについて非常に硬直した方法で考えています。改善の余地があまりないかのように。しかし、私はそうは思いません。私たちは実験し、新しい可能性を見つけることができます。
私たちは自問しました:もしゲーム専用のブロックチェーンをゼロから設計するとしたら、それはどのように見えるでしょうか?私たちは高いスループットが必要ですので、読み書きの両方をスケールさせる必要があります。ほとんどのブロックチェーンは、多くの書き込みを行うように設計されています。秒あたりのトランザクションは人々が誇る指標ですが、現実には、読み取りも同様に重要です。ブロックチェーンノードから読み取れなければ、どこでプレイするかを知ることはできません。これは実際にブロックチェーン構築内で見つけた最初のボトルネックです。
ダークフォレストは、オンチェーンの状態からデータを読み取る必要があったため、フルノードが重く利用され、I/O が爆発する問題に直面しました。これにより、数千ドルのサーバーコストが発生し、xDAI チームが親切に私たちのためにカバーしてくれました。しかし、これは長期的には理想的ではありません。私たちは、秒あたりの書き込みトランザクションだけでなく、ブロックチェーン自体からデータを取得するためにも高いスループットが必要です。
また、ノイジー・ネイバー問題を避けるために、水平スケーラブルなブロックチェーンが必要です。人気のあるゲームが突然ブロックチェーン上で落ち始めて、すべての動作を停止させることは望ましくありません。また、ゲーム用に設計された状態マシンを変更できる柔軟性とカスタマイズ性も必要です。これには、ゲームループを持ち、それを自己実行可能にすることが含まれます。
最後に、これはオンラインゲームアーキテクチャに不慣れな方にはやや曖昧かもしれませんが、高いティックレートが必要です。ティックはゲーム世界における時間の原子単位です。ブロックチェーンの文脈では、ブロックが時間の原子単位です。ゲームでは、ティックがあります。これは、完全なオンチェーンゲームを構築する際に、ブロックチェーンのティックの速度やブロック生成の速度がゲーム自体のティックと等しい場合にほぼ類似しています。
ティックが高い、または秒あたりのブロックが多い場合、ゲームはより応答性が高く感じられます。逆に、ティックが低いと、ゲームはより鈍く感じられます。重要なことは、ブロック生成が遅れると、ゲーム内で視覚的にラグを感じることです。これはひどい体験です。ゲームに負けたことで怒っているゲーマーがコンピュータに叫んでいるのを見たことがあるなら、それは本当に厄介な状況です。
現在、私たちのロールアップは 1 秒あたり 1 ブロックで、これは 1 ティックレートに相当します。よりクールなゲームを持ちたいのであれば、より高いティックレートが必要です。例えば、Minecraft というシンプルなピクセルアートゲームは、1 秒あたり 26 ティックを持っています。Minecraft と同じくらい応答性の高いゲームを構築するには、まだ長い道のりがあります。
一つの解決策は、自分たちのロールアップを展開することです。一見すると、表面的には問題を解決するように見えますが、実際には問題の根本的な原因を解決するわけではありません。例えば、書き込みのスループットは高くなりますが、ゲームが必要とするレベルには達しません。確かに、プレイヤーが 100 人のゲームであれば、それで十分でしょう。しかし、はるかに高いスループットを必要とするゲームを構築したい場合、現在の構造における I/O の方法のために非常に厳しい制限があります。
読み取りに関しては、パフォーマンスの向上は得られません。依然としてインデクサーに依存する必要があります。水平スケーラビリティが本当にありません。ゲームを水平にスケールさせるために新しいロールアップを立ち上げようとすると、既存のスマートコントラクトエコシステムが断片化されます。プレイヤーが展開するマーケットプレイスは、ゲームを水平にスケールさせるために立ち上げた他のチェーンと連携しません。これにより、多くの問題が生じます。
最後に、高いティックレートと秒あたりのブロックは、実際には存在しません。私たちはできる限り押し進めようとします。おそらく、1 秒あたり 2 ブロック、場合によっては 3 ブロックを得るかもしれませんが、これがブロックチェーンが到達できる限界です。再マーシャリングなどのオーバーヘッドが多く、計算サイクルに非常に負担がかかります。
これに対処するために、私たちは 2000 年代初頭や 1990 年代後半にオンラインゲーム、特に MMO が登場した頃に目を向けます。彼らはシャーディングの概念を持っていました。これは新しい概念ではなく、過去に存在していました。データベースアーキテクチャで使用される「シャーディング」という用語は、実際には Ultima Online の参照から来ています。彼らは異なるサーバーを説明するために「シャーディング」という用語を最初に使用した一団です。
では、ゲームにおけるシャーディングはどのように機能するのでしょうか?これは一律の解決策ではありません。ツールボックスの中のツールであり、ゲームにどのように適合させるかは文脈によって異なります。例えば、最初のシャーディング構造は、私が「位置ベースのシャーディング」と呼ぶものです。良いメンタルモデルは、4 つの象限に分かれた直交座標図を想像することです。それぞれの象限には独自のゲームシャードがあります。シャードを横断したいときは、他のシャードに「そこに移動したい」と通信を行い、次に自分のシャードにテレポートされ、以前のプレイヤーの体はそのまま残ります。これにより、サーバーの負荷を複数の物理インスタンスに分散させ、単一のサーバーにゲーム全体の計算を強制することを避けます。
2 つ目の構造は、最近ではより人気があります。これはマルチバースシャーディングと呼ばれ、互いにミラーされたゲームの複数のインスタンスがあります。どのシャードに行くかを選択でき、デフォルトで負荷分散されているため、各サーバーが過度に混雑することはありません。
さて、ここでの重要な質問は、この概念をロールアップにどのように持ち込むかです。これが私たちが World Engine を作成した理由です。World Engine は私たちのフラッグシップインフラであり、基本的にはスタート用に設計された意見のあるシャードシーケンサーです。過去のいくつかのトークで見た多くのシャードシーケンサーの設計とは異なり、私たちの設計は異なり、私たちのニーズにより適しています。私たちが最適化しているのは、A、スループット、B、ロックがランタイムをブロックしないようにすることです。これにより、ティックレートとブロック時間ができるだけ効率的になるようにし、デフォルトで同期的であり、シーケンサーの設計方法は部分的な順序であり、各トランザクションが他のトランザクションの後に発生する必要がないようにします。
ここでの重要なコンポーネントは、2 つの主要な要素があることです。EVM ベースのシャードがあり、これはプレイヤーがゲームと組み合わせるためにスマートコントラクトを展開できる純粋な EVM チェーンのようなものです。市場を作成し、税金をかけるなど、通常のチェーンのようになります。1 秒あたり 1 ブロックまたは 1 つのこと、すべての典型的なデバイスやマーケットプレイスの作業を行うのに十分です。
ここでの秘密の成分は、ゲームシャードを使用することです。これは本質的に高性能ゲームサーバーとして機能するために設計されたミニブロックチェーンです。自分の好みに合わせてこのシャードをカスタマイズできるように、持ち込み実装インターフェースを持っています。基本シャードに注入するために自分のシャードを構築できます。標準のインターフェースセットを実装する必要があります。Cosmos に詳しい方なら、Cosmos には ABC インターフェースがあります。基本的に、これを同様の仕様に適合させて、独自のシャードを World Engine スタックに持ち込むことができます。
ここでの重要な点は、現在のシャーディング構造では達成できない高いティックレートを持っていることです。ここで、Cardinal を紹介したいと思います。Cardinal は World Engine の最初のゲームシャード実装です。これはエンティティ・コンポーネント・システムを使用しており、データ指向アーキテクチャを持っています。これにより、ゲームを並列化し、ゲーム計算のスループットを高めることができます。最大 20 ティック / 秒の設定可能なティックレートを持っています。ここにいるブロックチェーンの人々にとっては、これは 20 ブロック / 秒です。
また、これを地理的にローカライズしてレイテンシを減少させることもできます。現在、シーケンサーは米国に基づいている可能性があり、アジアの人々はそのトランザクションがシーケンサーに到達するまでに 300 ミリ秒のレイテンシを待たなければなりません。これはゲームにおいて大きな問題です。300 ミリ秒は長い時間です。200 ミリ秒のレイテンシで FPS ゲームをプレイしようとすると、実質的に永遠で、すでに死んでいます。
ここで私たちにとっても重要なもう一つの重要な点は、それが自己インデクシングであることです。もはや外部インデクサーを必要としません。ゲーム内の状態をキャッシュするためのフレームワークも必要ありません。これにより、インデクサーがシーケンサーのブロックに追いつこうとすることなく、レイテンシの問題がないリアルタイムゲームを構築することができます。
また、ZK 検証などを並列化できるプラグインシステムもあります。私にとっての最も良い部分は、Go でコードを書くことができることです。もはや Solidity でゲームを動かそうとする苦労はありません。以前に Solidity でブロックチェーンゲームを構築しようとしたことがあるなら、それは絶対に悪夢です。
しかし、私たちのシャード構造の重要な点は、シャードとして何でも構築できることです。シャードが何であるかの無限の設計空間のようなものです。
例えば、ゲームコードを GO で書くのが嫌いな場合は、オプトアウトできますが、再度、私たちは Solidity ゲームシャードに取り組んでおり、これにより多くの Cardinal の利点を保持しながら Solidity でゲーム実装を書くことができます。また、ユニークなメモリプールと基本的なミントのノイジー・ネイバー問題を解決するための順序構造を持つ NFT ミンティングシャードを作成することもできます。NFT を使用してゲームアイデンティティを表現できるゲームアイデンティティシャードを持つこともでき、これによりプライベートキーを提供することなく NFT を使用してゲームアイデンティティを簡単に取引できます。
これは高レベルの構造であり、時間の制約のために深く掘り下げることはできません。ここでの重要な点は、EVM スマートコントラクトがカスタムピックアンドパスを使用してゲームシャードと組み合わせることを許可することです。Geth の周りにラッパーを作成して、彼らの間の通信を可能にします。これにより、双方向に多くの設計空間が開かれます。デフォルトで同期的であり、ロックなしでシャード間でシームレスに組み合わせ可能な相互運用性を持っています。
私たちの共有シーケンサーは、共有シーケンス構造を使用せず、全体の順序を優先する原子バンドルを使用しません。これにはロックメカニズムが必要であり、メインスレッドをブロックする問題を引き起こし、信頼性のないティックレートやブロック時間をもたらし、ゲームのラグを引き起こします。また、各シャードのブロック時間に制限を課し、サービス拒否を防ぐためにさまざまな暗号経済学や構造が必要です。多くの VCR シーケンサー構造で言及されていない大きな問題もあります。異なるシャードが互いに依存してデッドロックを引き起こす場合、デッドロックをどのように解決しますか?非同期設計では、誰もが自分のやりたいことをして、発火して忘れるだけなので、これらの問題はありません。
実際には、シャード間およびロールアップ間の原子バンドルはしばしば必要ありません。私たちのユースケースでは、原子バンドルを必要とせず、ユースケースの純度のためにロールアップを設計する必要はないと考えています。これにより、他の興味深い特性が生まれます。例えば、各ゲームシャードは基本チェーンのための別の DA レイヤーを持つことができます。例えば、基本シャードを使用して Ethereum にデータをプッシュし、ゲームシャードは Celestia にデータをプッシュすることができます。これにより、フルノードを実行するためのハードウェア要件を減らすことができ、基本シャードの Geth フルノードをゲームシャードノードを実行せずに別々に実行できるため、Alchemy などのものと統合しやすくなります。
まとめると、私はここで知的に正直でありたいと思います。多くの人々が自分たちの構造がすべての問題を解決すると主張したいと思っていますが、私たちにとってはそうではありません。私たちは自分たちの構造が私たちにとって有用であると考えていますが、あなたのユースケースには適していないかもしれません。私たちの構造がすべてのユースケースに適合するとは現実的ではありません。私たちにとっては、スループットが高く、水平スケーラビリティ、柔軟性、高いティックレートを提供しますが、癌を治すわけではありません。同期的な組み合わせを必要とする DeFi プロトコルが必要な場合、この構造はあなたにとって適切ではないかもしれません。
結論として、私は人間中心のブロックチェーンアーキテクチャの概念を本当に信じています。特定のユーザーペルソナとユースケースを念頭に置いて設計することで、すべての人の問題を解決しようとするのではなく、トレードオフの空間をより良くナビゲートできます。ルネサンスの時代が到来し、誰もが特定のニーズを満たすために自分自身のロールアップを設計できるようになりました。一般的な解決策に依存するのではなく、Cambrian 爆発を受け入れるべきだと信じています。すべての人に適したレイヤー 1 のようにロールアップを構築しないでください。なぜなら、それは同じ問題を解決するために設計されていないからです。私は、より多くの人々がユースケースやセクターに特化したロールアップ設計空間を探求するのを見ることに興奮しています。例えば、資産交換専用に設計されたロールアップはどのようなものになるでしょうか?意図ベースになるのでしょうか?オンチェーン CLOB 用に設計されたロールアップはどのようなものになるでしょうか?それでは、マイクを MJ に戻します。ありがとうございました。