Satoshi Diceの公平なサイコロ

CryptoKittiesはリリースされてからすぐにEthereumの人気DAppとなりEthereumの全トランザクションのうち15%もCryptoKittiesに費やされるほどになっています。これに伴って以下のグラフのようにEthereumのトランザクション手数料もすごいスピードで高くなりました。

f:id:lotz84:20171210222254p:plain

Ethereum Network Transaction Fees

特定のアプリケーションが人気になった影響でその受け皿である仮想通貨のトランザクションが圧迫されて手数料が高くなってしまうのはブロックチェーンの問題の一つだと思いますが、実は過去にもBitcoin上でも同じような現象がありました。

Satoshi Diceは2012年に登場したアプリで一時期はBitcoinトランザクションのほとんどが費やされたほどの人気が出たそうです。遊び方は簡単で指定されたアドレスにBitcoin(現在はBitcoin Cash)を振り込むだけ。すぐに結果が出て、勝てば送金アドレスに賞金が振り込まれる仕組みです。

このゲームの人気の秘密は誰でも手軽に参加できることと、運営がイカサマをしていないことが検証できる仕組みだと思います。そもそもSatoshi Diceのサイコロがどのように振られているかというと、まず運営は送金されてきたトランザクションのハッシュに秘密の文字列を結合してハッシュ関数にかけます。出てきた文字列の先頭4文字を16進数の数字として見た時に設定された値より低ければ勝ちとします。この値は複数用意されていて、値が低いほど勝った時に得られる賞金の倍率が高くなるという仕組みです。(参考: Satoshi Dice - Bitcoin Wiki

f:id:lotz84:20171211083133p:plain

もちろん秘密の文字列は運営のサーバーだけに存在するのでこれだけならイカサマし放題なのですが、公平性を示すための仕組みがあります。まず秘密の文字列は毎日変更されます。そして将来使われる予定の秘密の文字列は数日先までそのハッシュ値が公開されます。最後に過去の秘密の文字列はそのまま公開されます。ハッシュ値と公開された秘密の文字列は次のWebサイトで確認することができます。https://satoshidice.com/provablyfair このサイトの情報と照らし合わせることでSatoshi Diceに参加したユーザーは公開された秘密の文字列から過去に振られたサイコロが公平だったかどうかを検証することができるのです。

素晴らしい仕組みですが一つ不満があるとすれば特定の運営サーバーに依存してしまっていることでしょうか。仮想通貨を利用するならば全ての仕組みが分散されていて欲しいものです。