Ethereumブロックチェーンでゲーム「Rock-Scissors-Paper」を作成した方法

2018年4月、社内でEthereumブロックチェーンスマートコントラクトでゲームをリリースするというアイデアが浮上しました。 数日間考えていくつかのオプションを試した後、私たちは子供の頃からよく知られているゲーム「石、はさみ、紙」に落ち着きました。

議論の中で私たちが検討した他の選択肢については開示しませんが、多くの論争、議論、楽しみがありました。 不合理すぎるものもあれば、非常に複雑なものもあれば、ブロックチェーンテクノロジーにまったく適合しないものもありました。 すぐにリリースされる可能性が非常に高い、いくつかの非常に深刻なオプションがありました。



最初にゲーム「石、はさみ、紙」を作成するというアイデアは、セキュリティの専門家によって厳しく批判されました。 彼らの主な議論は、イーサリアムブロックチェーン上に何かを隠すことは不可能であり、すべての情報はパブリックドメインにあるということでした。 つまり、経験を積んだ人は、相手の動きが何であるかを確認してから、戻りの動きをすることができます。 移動が格納されている変数がパブリックドメインにないという事実でさえ、その発見に対する障害にとどまりません。 明らかな解決策は、2段階のキー開示でsha3データ暗号化を使用することでした。



最初の段階で、クライアントは、ランダムに生成されたキーで暗号化された移動を送信します。 それから、相手もスマートコントラクトからの確認を待って、自分の動きを送信しました。 第二段階では、相手は自分の動きを解読するためにキーをスマートコントラクトに送ります。 その後、ゲームの結果はスマートコントラクトによって解読され、勝者が決定されます。



スタジオの論理図!









作業開始の3日後、ゲームのプロトタイプはすでに準備ができていました。 インスピレーションを得て、私たちは皆、オフィスでゲームをテストしましたが、将来どのような困難に直面するかはまだわかりません。 プロトタイプにより、暗号化された動きを送信し、相手の動きを聞き、秘密鍵を送信して勝者を決定することができました。 したがって、実際には、このアイデアは実行可能であり、妥当な時間内に実装できることがわかりました。



私たちはどのように間違っていました...







次の3週間はあまりスムーズではありませんでした。 ゲームアクションを実行するには、イーサリアムブロックチェーンで署名付きトランザクションを形成する必要があることが判明しました。 ブラウザプラグインメタマスク–イーサリアムウォレットの形で、このための既製のソリューションがあります。 彼らはゲーム内で自分の財布を上げませんでした。 このため、モバイルブラウザ向けゲームのモバイルバージョンはすぐに落ちました。 それらにプラグインをインストールする方法はまだありません。 大きな問題は、ページのリロード時またはテーブル間の切り替え時の単一の時点でのゲーム状態の決定であり、まだ部分的に残っています。 このような問題が要素的に解決されるサーバーではなく、ブロックチェーンで作業していることを忘れないでください;ここから情報を取得することは非常にエキゾチックです。



対戦相手の参加、動きの開始、動きの完了など、多くのゲームイベントを常に聴いています。 また、現在のスコア、ラウンド開始時間などのゲーム情報のリクエストを常に送信しています。 さらに、ゲームの状態のほとんどは、1つのイベントや1つの変数ではなく、いくつかのイベントをいくつかの変数(ブロックチェーンからの直接データ取得の結果)で一度に重ね合わせることによって決定されます。 たとえば、ゲームが2回以上勝利し、3回目のラウンドで秘密鍵を送信するときが来た場合です。 ゲームが開始され、対戦相手が接続し、3ラウンドが通過し、暗号化された動きが両側から送信されたという事実を追跡する必要があります。 この時点でページをリロードしてみて、ブロックチェーンとのすべての関係を再度復元する必要があります。



情報の各要求または受信は非同期に発生します。 遅延は互いに重なり合っているため、アプリケーションの実行はサーバーバージョンよりも大幅に遅くなります。 同時に、神は安定した接続に関する問題を禁じています。 何かを見逃した場合、ゲームの状態はまったく復元されません。最も不快なのは、この状況ではプレイヤーが状況を明確にするのに何もできないということです。 ほとんどの場合、ページをリロードするだけで、クライアントでこのような問題を解決できます。 ある時点で、当初計画された形でのプロジェクトの運命は失敗の危険にさらされていました。 複数のゲームラウンドを放棄して、ゲームをカットするという考えがありました。 ゲームが常に1回勝利すれば、混乱せずに見逃すことは簡単になると考えました。 別の可能な解決策は、複数のテーブルを切り替える可能性を閉じることです。 この機会は、相手の動きの退屈な待ち時間を埋めるために作られました-あなたは並行していくつかのテーブルでプレーすることができます。 他方が待機している間に一方に移動します。



幸いなことに、これらの強制的な措置を講じることはできませんでした-その理由、オフィス内のバグのあるWi-Fiルーター、および状況が多かれ少なかれ改善されたことがわかりました。







その結果、プロジェクトはほぼ元の形で行われました。 プロジェクトの主な目標は、ブロックチェーン技術とエンターテイメントを普及させることです。 参加するには、暗号通貨の世界の基礎を身に付けなければなりません-ウォレットの作成、テストエーテルの受信、トランザクションの作成、暗号化、ウォレットアドレス、ネットワークの種類など。 さらに、ブロックチェーン上でゲームをプレイするプロセスは、ユーザーエクスペリエンスがネガティブな方向でわずかに異なります。待機時間は退屈な場合があります。 大量のテストガスの場合、移動時間は15〜20秒かかりますが、少量の場合、移動時間は7〜11時間かかります。 しかし、これについては楽観的です。なぜなら、 私たちは、この技術のさらなる改善と、その広範な使用の可能性の拡大を信じています。 このプロジェクトの外観はどのくらいタイムリーですか? 指定された目標に基づいて-技術開発のレベルに基づいて、かなりタイムリーに-かなり時期尚早に。



第二部へのリンク



All Articles