自由研究

オンライン麻雀ゲームの牌山イカサマの検証について

投稿日:

今日、雀魂のアップデートがあり、牌山の検証システムに使われるハッシュ値がMD5からSHA-256にアップデートされました。
で、牌山検証とはなんぞや、というと、オンライン麻雀はシステムがイカサマをしているんじゃないかという懸念を払拭するために提供されている仕組みのことなのです。

さて雀魂に搭載されている検証システムはどういうものか、というとですね。

  1. 対局開始時にシステムが牌山を決定し、牌山を文字化した「牌山コード」とその牌山コードの「ハッシュ値」が生成される。
  2. 対局中、プレイヤーは「ハッシュ値」を確認できる。
  3. 対局終了後、プレイヤーは「牌山コード」を見ることができ、「牌山コード」と「ハッシュ値」の一致を検証できる。

という仕組みです。
これによって、たとえば「誰かがリーチしたら、牌山の中が入れ替わって俺のツモに当たり牌が来るんだよ!」という、コンピューター麻雀あるある(大昔のゲームにはマジでこういうものがあったらしいです)のイカサマが行われていないことが分かる、というわけです。
つまり、「雀魂は牌山の中が入れ替わって変なツモを掴まされることは無い」んです。

やりましたね。これで全てのイカサマは封じられました。
……そうでしょうか?

  • リアル麻雀よりも高い確率で天和がアガれるようになっているのでは?
  • 配牌で国士手が来たら、么九牌をツモりやすいような牌山になっているのでは?
  • 特定のプレイヤーを優遇/冷遇した配牌になるように調整されているのでは?
  • 終盤のラス目には一発逆転手が来やすいようになっているのでは?

など、牌山の時点で積み込みを行うイカサマは防げていないのです。

一応立場を表明しておきますが、私は雀魂がイカサマを行っていると考えているわけではなく、「雀魂はイカサマをしていない(はずな)のに、それがきちんと証明できていない」ということを怒っているのです。

さて、ではどうすれば良いか。
牌山に積み込み的なイカサマが無いことを証明するには、牌山の生成方法を公開するしかないでしょう。
しかも、単にランダムな生成アルゴリズムですよと言い張るだけでは、「都合の悪い牌山を捨てる」というイカサマが有り得てしまいます。
雑に言えば「雀魂が牌山のリセマラをするかもしれない」ってことです。
というわけで、牌山生成にユーザーが介入して、雀魂に牌山リセマラをさせないようユーザーの手で制御しなければいけません。

一方で、「牌山生成をユーザーが操作したら、それは牌山丸見えと同じだろ」と思われるでしょう。
もちろん普通に公開すれば丸見えになります。
なので、「生成アルゴリズムは公開するし、イカサマがないことを保証できるようにするが、牌山丸見えにはならない」ようにする必要があります。
話がちょっと学術の範囲に踏みこんでますが、実際のところそんなに難しくはありません。

  1. 牌山生成アルゴリズムは公開しておく。
  2. 対局前に、プレイヤーがそれぞれランダムな数字(P1~P4)を作成する。
  3. 対局開始時に、システムはプレイヤーから得た数字を組み合わせた数字(たとえばP1⊕P2⊕P3⊕P4)を作り、その乱数を元に牌山を生成する。
  4. 対局中は自分の作成した数字以外は見られない。これで牌山丸見えを防ぐ。
  5. 対局終了後、全プレイヤーの作成した数字(P1~P4)を見ることができ、「P1~P4」と「牌山生成アルゴリズム」から、不正なく牌山が生成されたことを検証できる。

などとすれば良いはずです。
ちなみに牌山の全パターンは2の600乗以上あるらしい(参考:麻雀の数学)ので、各プレイヤーはそれを超える範囲の乱数、たとえば1024bitの乱数を持ち寄るべきですね。
あと、この方法を使うとプレイヤーの手で「牌山の乱数調整」が可能になってしまいますが、この対応は例えば「P1~P4に加えて5分ごとに切り替わる乱数値P5も用いて後で公開する」などで対応できるかと思います。

と、いうわけで、「どうせ検証可能にするならここまでやってくれよ」という話でした。おしまい。

-自由研究

執筆者:

関連記事

no image

次世代のライティング手法、AAW―対話型AIによる文章生成でより高品質なコンテンツを

AAWとは何か? 私が提案するAAWは、AI Assisted Writingの略であり、人工知能を活用することで文章を効率的に生成する新しい技法です。 AAWは、ChatGPTのような対話型AIを用 …

no image

不定期連載「認証と周辺技術」その1「認証と識別」

たまには技術っぽい記事もないとな、と思ったので、最近ちょっと気になっている「認証」について、調べながらまとめます。 さらっと書ける範囲でこまめに書きたいです。 はじめに みなさんは普段の生活においてど …

【自由研究】宝くじの中央値っていくらなの?

もくじ 前置き 宝くじ、買ってますか? ギャンブルを語るとき、往々にして「期待値」や「還元率」という言葉が使われます。 例えば2019年のサマージャンボ宝くじの期待値は142円で、還元率は47%なんで …

M5StickC PlusとSwitchBot温湿度計で家中の温度と湿度を管理するぞ

はじまり 結構長いあいだ在宅勤務を続けていると、自宅の情報をデータ化したくなるものです。 特に仕事スペースの快適さというのは気になるもので、以前から温湿度の表示がついた置き時計を置いてたんですが、以下 …

no image

あみだくじはどれぐらいランダムか

あみだくじ。 紙とペンがあればすぐに作ることができるお手軽な抽選方法として知られています。 なにか物事を決めたいとき、あみだくじを使うという人も多いのではないでしょうか。 ふと思ったんですが、あみだく …