WOO logo

このページ

ブラックジャック(暗号化版)

このページ

概要

このページでは、暗号通貨を導入しているカジノでよくプレイされる、暗号化されたブラックジャックについて解説します。読者の方は、従来のブラックジャックの基本ルールを既にご存知かと思います。

公正なカジノ

CryptoSlots Casino
3.9 / 5.0
Players rated CryptoSlots Casino 3.9 out of 5 Stars
Sign Up Reload bonus

44% ハロウィンボーナス

$10~$99が44%オフ。交換回数:1日2回。対象ゲーム:全ゲーム(ジャックポットトリガーを除く)。有効期限: 2025年10月1日(水)午前0時01分から2025年10月31日(金)午後11時59分(米国東部夏時間)まで。

CryptoWins Casino
3.9 / 5.0
Players rated CryptoWins Casino 3.9 out of 5 Stars
Sign Up bonus - ベタベタ

77% 最大
₿1

新規顧客向けオファー。利用規約が適用されます。18 歳以上。このオファーは、オンタリオ州在住のプレイヤーにはご利用いただけません。新規顧客向けオファー。利用規約が適用されます。19 歳以上。最低入金額: 5 ドル。最大キャッシュアウト額: 30,000 ドル。一部のゲームのみ: オンライン スロットのリストについては、Web サイトをご覧ください。ボーナスのプレイスルーは 10 日間です。

分析

Crypto.Games のゲームの場合、奇妙なルールは次のとおりです。

  • 4デッキ
  • 各ハンドごとにシャッフルする
  • ディーラーはブラックジャックを覗き見しない
  • ブラックジャックの配当は6:5
  • ディーラーはソフト17でヒットする
  • 2枚のカードでダブル
  • スプリットエースをヒット
  • 早期降伏
  • スプリット後の10とエースはブラックジャックとしてカウントされます
  • スプリット後のダブルは許可されます
  • プレイヤーは一度だけ分割できる(と仮定)

早期サレンダーとスプリット後の10-Aをブラックジャックとしてカウントしない場合、私のブラックジャックハウスエッジ計算機は、基本戦略でハウスエッジを1.91%と算出します。しかし、ブラックジャックのルールバリエーションリストによると、計算機がサポートしていない2つのルールの値は0.74%です。これにより、全体のハウスエッジは1.17%となり、オンラインブラックジャックゲームとしてはかなり高い数値となります。

公正なゲーム

以下は、Crypto.Games がブラックジャック ゲームで 4 デッキ シューからカードをランダムに選択するために使用するプロセスです。

  1. 賭けが行われる前に、サーバー シードの SHA-256 ハッシュをプレイヤーに公開します。
  2. 賭けが行われた後、サーバー シードとクライアント シードをこの順序で組み合わせます。
  3. 手順 1 の結合シードの SHA-512 ハッシュを取得します。
  4. 手順 2 で見つかったハッシュから、左を見つめながら 2 つの文字を取ります。
  5. 手順3の2文字を16進数から10進数に変換します。何を言っているのか理解できない場合は、サイコロ(暗号化版)のページで16進数の計算について解説しています。
  6. ステップ 4 の結果が 207 以下の場合、そのカード番号を 208 枚のカード シュー内の特定のカードにマッピングします。
  7. 該当するカード番号がまだ手札にない場合は、特定のカードにマッピングします。その方法は次のとおりです。
    • ランクを求めるには、カードの数字を13で割り、その余りを取ります。余りをランクに当てはめます。0はエース、1は2、2は3、3は4、4は5、5は6、6は7、7は8、8は9、9は10、10はジャック、11はクイーン、12はキングです。
    • スートを求めるには、カードの数字を13で割り、余りを落とします。さらに、その商を4で割り、余りを取ります。さらに、その余りをスートに当てはめます。0はスペード、1はハート、2はダイヤ、3はクラブです。
  8. それ以外の場合、ステップ 5 の結果が 207 より大きい場合、またはそのカードがすでに見つかっている場合は、ハッシュ内のその 2 桁を無視します。
  9. ハッシュを2つ進めて、ステップ3に戻り、ハッシュの最後まで進みます。これで、ブラックジャックのハンドを処理するのに必要なカードよりも多くのカードが手に入るはずです。

以下は、例の手に対するプロセスの動作方法です。

bj1

上記の画像は「Fair Gaming」パネルから引用したもので、賭けを行う前に撮影されたものです。公正なゲームを保証するために重要なことは、新しいクライアントシード(ランダムな文字列で構いません)と、ゲームタイトルで「Next server seed SHA256」と表示される次のサーバーシードのハッシュを入力して記録することです。以下がその例です。

  • クライアントシード = 5v5b85n85vb856nvbn5vbn

  • 次のサーバーシード SHA256 = 581b31f8cd6e5d4bb510ac0e53a440af7baab92f8f1f220eff14e20201e0b1f6

個人的には、このプロセスを面倒な方法で実行する場合は、これらの項目をコピーしてメモ帳に貼り付けます。

bj2

上の画像では、0.00001BTC(ビットコイン)から賭けを始めています。これは約10セントに相当します。プレイヤーはこの賭け金を使って10枚のチップを購入し、その後10枚すべてを賭ける必要があります。なぜこの手順で混乱を招いているのか、私には理解できません。

私の最初の手札は 3 に対して 11 だったので、ダブルして 3 になりました。ディーラーはホールカードに 5 を持っていて、合計は 8 でしたが、その後キングを引いて合計は 18 になりました。つまり、私は 14 対 18 で負けました。

png" />

次に、「フェアゲーミング」パネルに戻り、賭ける前にカードの順番が事前に決まっていたことから、ゲームが公正であったことを確認します。上記の手順に従います。

  1. Fair Gaming パネルから、サーバー シードがYt5IDwsb3Ldc5vyusvcQNfLqqjoYmCHGRkasqXNQであったことがわかります。
  2. その SHA-256 ハッシュを取得すると、 581b31f8cd6e5d4bb510ac0e53a440af7baab92f8f1f220eff14e20201e0b1f6 が得られます。
  3. ステップ2のハッシュと、ベット前に記録された「次のサーバーのシード値SHA256」を比較し、一致していることを確認します。一致しない場合は、プレイヤーが何か間違ったことをしたか、カジノが嘘をついているか不正行為をしている可能性があります。この場合は一致しています。これにより、カードの順番が予め決まっていたことが証明されます。
  4. 正しいカードを入手したか確認するには、サーバーシードとクライアントシードをこの順番で組み合わせてください。そうすると、 Yt5IDwsb3Ldc5vyusvcQNfLqqjoYmCHGRkasqXNQ5v5b85n85vb856nvbn5vbnになります。ナンスを使用する場合は、クライアントシードの末尾にナンスが入ります。
  5. 手順4で得られたハッシュを結合したSHA-512ハッシュを取得します。なぜ2つの異なるハッシュ関数(SHA-256とSHA-512)が使用されているのかは分かりません。結果は2b87fbc5eac7368ef393c8ab292f71a0251702f6db028ca8a855bfaa541b78df3ae996ad22ac022588a46231ed32180d5cbde86dff5d2368cbb7658332bbb9bcとなります。
  6. 最初の 2 文字 ( 2b ) を 16 進数に変換します。2b = 2*16 + 11 = 43。
  7. 43 <= 207なので、これをカードに変換します。ランク = mod(43,13) = 4 となり、5 になります。スート = mod(int(43/13),4) = mod(3,4) = 3 となり、クラブになります。これがプレイヤーに配られる最初のカード、クラブの5です。
  8. 手順4のハッシュを2つ進めて、 87にします。これを16進数から10進数に変換すると、8*16 + 7 = 135となります。
  9. 135 <= 207 であり、まだ見つかっていないので、これをカードに変換します。rank = mod(135,13) = 5 となり、6 にマッピングされます。suit = mod(int(135/13),4) = mod(10,4) = 2 となり、ダイヤにマッピングされます。これはプレイヤーに配られた2枚目のカード、ダイヤの6です。
  10. 手順4のハッシュを2つ進めます( fb )。これを16進数から10進数に変換します:15*16 + 11 = 251。
  11. 251 > 207 なので、これら 2 つの位置をスキップします。
  12. 手順4のハッシュを2つ進めてc5にします。これを16進数から10進数に変換します:12*16 + 5 = 197。
  13. 197 <= 207 であり、まだ見つかっていないので、これをカードに変換します。ランク = mod(197,13) = 2 となり、ランクは3になります。スート = mod(int(197/13),4) = mod(15,4) = 3 となり、クラブになります。これがディーラーに配られる最初の(表向きの)カード、クラブの3です。
  14. 手順4のハッシュを2つ進めます。これはeaです。これを16進数から10進数に変換します。14*16 + 10 = 234。
  15. 234 > 207 なので、これら 2 つの位置をスキップします。
  16. 手順4のハッシュを2つ進めてc7にします。これを16進数から10進数に変換すると、12*16 + 7 = 199となります。
  17. 199 <= 207 であり、まだ見つかっていないので、これをカードに変換します。rank = mod(199,13) = 4 となり、5 にマッピングされます。suit = mod(int(199/13),4) = mod(15,4) = 3 となり、クラブにマッピングされます。これはディーラーに配られる2枚目(裏向き)のカード、クラブの5です。
  18. 手順4のハッシュを2つ進めて、 36になります。これを16進数から10進数に変換すると、3*16 + 6 = 54となります。
  19. 54 <= 207 であり、まだ見つかっていないので、これをカードに変換します。rank = mod(54,13) = 2 で、3 にマッピングされます。suit = mod(int(54/13),4) = mod(4,4) = 0 で、スペードにマッピングされます。このスペードの3は、シューの次のカードであり、ダブルダウン後にプレイヤーに渡されます。したがって、プレイヤーの合計は 5+6+3 = 14 です。
  20. 手順4のハッシュを2つ進めて、 8eにします。これを16進数から10進数に変換します:8*16 + 14 = 142。
  21. 142 <= 207 であり、まだ見つかっていないので、これをカードに変換します。ランク = mod(142,13) = 12 となり、キングに相当します。スート = mod(int(142/13),4) = mod(10,4) = 2 となり、ダイヤに相当します。このダイヤのキングは、シューの中の次のカードで、ディーラーがハード8をヒットし、合計18になったときに配られました。
  22. プレイヤーは14対18で負けます。
  23. さらにカードが必要な場合は、十分な数のカードが見つかるまでこのプロセスをループし続けます。

手順が多すぎると思われるかもしれませんが、ご容赦ください。そこで、代わりにPHPスクリプトを作成しました。使い方は以下のとおりです。

  1. PHP サンドボックスに移動します。
  2. 3 行目にサーバー シードを入力します。
  3. 4 行目にクライアント シードを入力します。
  4. 5 行目に次のサーバー シードのハッシュを入力します。
  5. 「コードを実行」をクリックします。

プログラムは、賭ける前に提供されたサーバー シード ハッシュとゲームで配られたカードとを照合します。

コードのコピーも用意していますので、下のボタンをクリックすると表示されます。

[ネタバレ]

PHP 1行目

// Crypto.Games のブラックジャック公平性チェック
$server_seed = "Yt5IDwsb3Ldc5vyusvcQNfLqqjoYmCHGRkasqXNQ";
$client_seed = "5v5b85n85vb856nvbn5vbn";
$next_hash = "581b31f8cd6e5d4bb510ac0e53a440af7baab92f8f1f220eff14e20201e0b1f6";
$rank_array=配列("A",2,3,4,5,6,7,8,9,10,"J","Q","K");
$suit_array=array("スペード","ハート","ダイヤモンド","クラブ");
$cards_found=0;
$位置=0;
$combined_seed = $server_seed.$client_seed;
echo "結合シード = $combined_seed\n";
$combined_hash = ハッシュ('sha512'、$combined_seed);
echo "結合されたシードのハッシュ = $combined_hash\n";
する
{
    $first_two=substr($combined_hash、$position、2);
    $hex_to_dec=hexdec($first_two);
    ($hex_to_dec <=207) の場合
    {
        $繰り返し=0;
        ($cards_found>0) の場合
        {
            ($i=0; $i<$cards_found; $i++) の場合
            {
                if ( $hex_to_dec == $card_array[$i] ) 
                { $repeat=1; }
            }
        }
        ($repeat==0) の場合
        {
            $card_array[$cards_found] = $hex_to_dec;
            $cards_found++;
            $rank=$hex_to_dec%13;
            $suit=intdiv($hex_to_dec,13)%4;
            echo "カード $cards_found = \t$rank_array[$rank] / $suit_array[$suit]\n";
        }
    }
    $位置+=2;
    ($position==128)の場合
    {
        echo "エラー -- ハッシュにスペースがありません。\n";
        $cards_found=10;
    }
}
$cards_found<20 の間;
$server_seed_hash=ハッシュ('sha256', $server_seed);
($server_seed_hash==$next_hash) の場合
{ echo "サーバーシードが一致しました。\n"; }
それ以外
{   
    echo "サーバーシードが一致しません!\n";
    echo "サーバーシード =\t$server_seed\n";
    echo "サーバーシードハッシュ =\t$server_seed_hash\n";
    echo "次のハッシュとされるもの=\t$next_hash\n";
}

// 手順
// 1. 「step」を 0 に、「position」を 0 にします。 
// 2. サーバーおよびクライアントのシード、ステップ、サーバーのシードをこの順序で結合します。 
// 3. 手順 2 の文字列の SHA-512 ハッシュを生成します。
// 4. 手順 3 のハッシュの「位置」から最初の 2 文字を 16 進数から 10 進数に変換します。
// 5. 手順 4 の結果が 0 ~ 207 の場合、それを 4 デッキ シューの特定のカードにマッピングします。
// 6. ステップ 5 の結果がまだ出ている場合は、それがゲームで次に配られるカードになります。 
// 7. 手順 6 から実際のカードまでのカードの位置を取得するには、次のようにします。 
// A. 手順 4 の結果を 13 で割り、余りを計算します。
// B. 手順 7A の結果を次のようにマップしてランクを取得します: 0 を A、1 を 2、2 を 3、...、9 を 10、10 を J、11 を Q、12 を K。
// C. 手順 4 の結果を 13 で割り、余りを DROP します。  
// D. 手順 7C の結果を 4 で割り、余りを計算します。
// E. 手順 7D の結果を次のようにマッピングしてスーツを取得します: 0 をスペード、1 をハート、2 をダイヤモンド、3 をクラブ。 
// 8. ハッシュの最後まで手順 4 ~ 7 を繰り返しますが、ゲームでこれだけのカードが必要になる可能性は低いです。
?>
[/ネタバレ]