~*~ 簡単な説明 ~*~ 不正ができないオンラインガチャを作りました。公開鍵と証明コードを見れば、本当にあなたがレアキャラを引いたかどうか確認できます。 クラウド変数やサーバーを使わなくても、ランダムな処理を公平に実行することができます。 ◆ 遊び方 ➀ 初めての場合は「鍵生成」を選択し、「公開鍵」と「秘密鍵」を作成してください。 これらはガチャの結果を証明する「証明コード」の生成に使います。 ※本来はユーザーごとに決まった公開鍵を使うのですが、このプロジェクトはデモ用なので、今回はその場でランダムに生成します。 ② ガチャを引きます。 ③ 「証明コード」が発行されます。これを「公開鍵」と一緒に見せることで、自分が不正をしていないことを相手に証明できます。 ◆ 排出率 ゴールドキャット 1% シルバーキャット 2% パープルキャット 5% ノーマルキャット・ゴボ・ギガ・テラ・ナノ・ピコ 各10% ◆ 動作が重い場合 → https://turbowarp.org/999611162 ~*~ 詳しい説明 ~*~ 楕円曲線を利用して、不正や偽造ができない乱数をユーザー側で生成させることができるプログラムです。オンラインゲームや抽選の景品のような、公平性を求められる場面で便利に使うことができます。 ◆ 実行手順 ➀ 鍵生成 「鍵生成」を選択すると、「公開鍵」と「秘密鍵」が生成されます。 今回はデモのため、その場でランダムに生成しますが、本来これらは各ユーザーに固有のものです。 ② ガチャを回す サーバーから受け取ったシード値をエドワーズ曲線上の点に変換し、秘密鍵をかけたものを乱数のシード値として利用します。また、秘密鍵の所有をシュノアプロトコルによって証明します。 抽選の実行には256ビットの線形帰還シフトレジスタを使っています。 ③ 検証 公開鍵を使って証明コードを検証します。証明コードが正当なものであれば、ガチャを引いた人が正当な手順でシード値を生成したことを確認できます。 さらにそのシード値により同じ乱数列を生成し、抽選の結果に不正がないか検証することができます。 このガチャは何回でも引くことができますし、一度やめると、過去の抽選結果がリセットされ、また同じ乱数列を生成するという点に注意してください。
効果音 On-Jin ~音人~ https://on-jin.com/ の音源を使用しています。 Entropy Harvesting Test @Retr0id_cloudtest https://scratch.mit.edu/projects/658943245/