DAPPSのソースを見てみましょう。不正をしていないかチェックする事が出来るのもDAPPSのだいご味です。
ブロックチェーン上でアイテムやトークンを置くことで、一番ユーザーにとって重要だと感じられる点は、「自分の物である」と言う部分ですが、
もう一つ、「運営が不正していない」と「安心できる」点も、重要な点です。
特に、オンラインカジノなどのギャンブルは、例えばじゃんけんで、自分が「グー」を出したら必ず「パー」をコンピューターが出せるようにする事が出来ます。
ゲームを始めたばかりのユーザーに対しては勝率を緩く設定しておき、徐々にはまって来たと判断したならば、大きく掛けたときに必ず負けるようにする、と言う方法も取る事が出来ます。
ソーシャルゲームのガチャ、ルートボックスなども、確立表記こそされていますが、その裏側は運営のみぞ知る部分でした。
今回は、不正を本当にしていないのかの調べ方を例を見ながら紹介したいと思います。
DAPPSは、オープンソースです。(DAPPSの定義にはいくつかの説があります。)
ブロックチェーン上にある事で、誰でもプログラムを見る事ができ、公正が保たれます。
運営側が、グーを出したら必ずパーを出すようなスクリプトを仕込んでいたら、誰かがそれを見つけてしまうのが、DAPPSです。
ギャンブルのジャンルになりますが、コードを見たところ、とても読みやすかったので、紹介します。
Ruletkaは、ロシアンルーレットゲームです。
ルールは簡単で、
6人がそれぞれ同額のETHを出し合い場にそろうと、そのうちランダムで1人が死にます。
生き残った5人で場に出されたETHを分け合うゲームです。
0.1Ethを掛けたならば、六分の五の確率で、手数料・場代を引いた0.118ETHが返ってきます。
これが普通のブラウザゲームでオンラインカジノとして出ていたならば、
運営が操作して勝率をいじっているに違いない、と感じる事でしょう。
Etherscanのcodeを押すと、どういうロジックで1人を選ぶのかを読むことができます。
誰が負けるかは、
「uint256 deadSeat = random();」にて決まっており、
random()は、
「return uint256(uint256(keccak256(block.timestamp, block.difficulty))%6);」にて決められます。
負けたdeadSeat以外に対して、
「distributeFunds(_roomId, deadSeat);」にて分配が行われ、
分配される金額は、
CTO、CEOへの手数料(halfFee)を引いた部屋の総額である
room.balanceを、executeRoom()にて導き出したうえで、その5当分が分配されます。
keccak256()は、簡単に言えば、指定した値を元に、まったく違う暗号を作る物で、タイムスタンプ等を組み合わせて、「乱数」として利用される事があります。
六人から負ける一人を選ぶ方法は、「乱数」で定義されており、
これ以外の選ばれ方は、コードには書かれていません。
運営が特定のアドレスだけ勝率が高くできる、と言うような部分などは一切ありません。
運営が、ブラックボックスを操作して、任意のアカウントを勝たせる、と言う方法は取れません。
※なお、絶対に安全かどうかで言うと、keccak256での乱数生成は、やや不安はあり、操作出来る可能性はあります。
https://blockchain.gunosy.io/entry/prngs-in-smartcontract
さて、DAPPSでのゲームでは、コードを読む事で公正さをユーザーが確認できます。
DAPPS以外のオンラインカジノなどのコードを確認できないサイトでも、eCOGARA(NPOとしてオンラインカジノがして安全で公平なものであるかを監視する独立審査機関)の認証を取ったり、ハッシュ値を公開したり、イギリスに登記して…などして、公正さを証明しています。
しかし逆に、公正さが無かったとしたらどのように人は行動するでしょうか。
ある程度プレイしてみて、もし負けが続いたならば、きっとこのゲームは「不正しているに違いない」から「絶対に勝てない」とあきらめてしまう人も出てくるでしょう。
大きく掛けた時に、たまたま負けが何回か続いてしまったならば、
公正さがあるゲームならば「たまたま」だと感じるかもしれませんが、「運営が操作している」と少しでも感じたならば、そのまま「やめてしまう」か、「怒る」など、負の感情が芽生える事でしょう。
公正さを出せば出すほど、どんなに負けても「このゲームにズルは無いからいつか勝てる」と、何百回も遊べるゲームとなります。
そこに、不正をさりげなく埋め込める余地があったとしても、公正さの影に隠れて見えなくなります。
もし、悪意があるオンラインカジノの運営者だとしたら、自分のサイトはどれだけ公正であるか、同業他社よりもいかに公正であるかをアピールしていきつつ、巻き上げる事が出来るポイントをいくつか忍ばせる事でしょう。
悪意のある運営者にとっても、実は「公正さ」はとても重要なアピールポイントと言えるかもしれません。
コードを公開しているから信用が出来る、Decentralizedだから安心だ、とついつい手放しに信用してしまう所ですが、
本当に信用できる公正さかは、ある程度確認するすべを持っておくことも必要かもしれません。