カード生成

「不正」を排除するカードゲームのアルゴリズムを一般に提案したいと思います。 つまり ゲームの調整は参加者によって共同で生成され、特定のカードの「対決」は1人のプレイヤーに対してのみ行うことができます。



簡単にするために、アルゴリズムは3人で説明されていますが、N> = 3に簡単に拡張できます。



各プレイヤーは3つのランダムな順列を生成します:A1..3。 製品A = A3 * A2 * A1は、ゲームのレイアウトです。 ここで、番号iのカードを開く必要がある場合、最初のプレイヤーは2番目のA1(i)に移行し、2番目は3番目のA2(A1(i))= A2 * A1(i)に移行し、3番目はA(i)= A3 * A2 * A1( i)。 カードを3人目のプレーヤーだけに公開する必要がある場合-A(i)彼は公開しません。



3番目のプレーヤーはC3のランダムな順列を生成し、それを最初のプレーヤーに渡し、2番目のプレーヤーに転送しますD3 =(C3 ^(-1))* A3。 ここで、2番目のプレーヤーだけにカードを開く必要がある場合、最初のプレーヤーは2番目のA1(i)に進み、2番目は最初のD3 * A2 * A1(i)に戻り、最初のプレーヤーはC3 * D3 * A2 * A1(i)= A(i)を計算します。



さらに、3番目のプレーヤーはランダムな順列F3を生成して2番目のプレーヤーに渡し、G3 = A3 * F3 ^(-1)を1番目のプレーヤーに渡します。 さて、最初のプレイヤーだけのためにカードを開く必要がある場合、彼は2番目のA1(i)を渡し、2番目は彼をF3 * A2 * A1(i)に戻し、最初のプレイヤーはG3 * F3 * A2 * A1(i)= A(i)を計算します。



ゲームの開始前に、各プレーヤーは、ランダムな順列Xごとに数値X + k * nのハッシュを公開します。ここで、0 <x <= N!-1は順列の序数、n = N!です。 順列の数、kはランダムな大きな数、ハッシュソルトです。 ゲームの終わりに、プレイヤーは順列を公開し、他のプレイヤーのハッシュを開いてチェックします。



アルゴリズムの制限:

-2つのピア間で交換されるデータは暗号化されたチャネルを介して送信され、参加者の証明書は事前に全員に知られています。

-2人の参加者が共謀する可能性を排除する必要があります。



All Articles