MonaTools

English   広告の消し方 設定 doc

ブロックチェーンによる抽選

対象ブロックチェーン
対象ブロックNo   現在時刻から
block hash
当たり総数
応募者一覧
1行につき1アカウント分の抽選者情報を入力してください。
アドレスでもツイッターアカウントでも何でも可。「:」のみ入力不可
4000バイト以内(アルファベットで4000文字以内)推奨です。
長すぎると抽選結果確認用URLを開けない環境が増えます。
現在のバイト数0バイト
長すぎる場合はアドレスの先頭○文字のみ登録したりリストは別に公開する、など工夫をお願いします
応募総数 0
抽選結果確認用URL
※環境によりURLが長すぎて開けない場合があります。



基本的な使い方

1.対象ブロックチェーン、対象ブロックNo、当たり総数、応募者一覧を入力してください。
2.入力が終わりましたら「抽選結果確認用URL」を一般に公開してください。
公開しなくても抽選はできますが運営が順番を入れ替えるなど不正をしていないことを証明するために該当ブロック採掘前にURLを公開することをお薦めします。
3.該当ブロックが採掘された後「抽選結果確認用URL」を表示して「抽選結果の確認」ボタンを押下してください。
すでに確定した結果を確認するための処置のため入力内容を変更しない限り誰が押下しても同じ結果がでます。


抽選アルゴリズム

前提:

block_hash: 指定ブロックナンバーのブロックハッシュ
atari_count: 当たりの個数、上から順に1位、2位、3位・・・とする
oubo_count:応募総数

具体的なアルゴリズム

例) block_hash: 4b16f3a22a7a12d57ed1229ec0409996ae960cb8ead6fe0b167f482c9ee2fc7c
atari_count: 5
oubo_count: 100

1. block_hashの後ろに順位を付けた文字列を作る

例)1回目のループだと順位は1なのでblock_hashの後ろに1を加える
4b16f3a22a7a12d57ed1229ec0409996ae960cb8ead6fe0b167f482c9ee2fc7c1

2. 1に対してsha256でハッシュ化をn回する(nはループの回数 1ループ目はn=1)

86d29585d0e61ea12920f3a347502f9119a350ca7e563fbc37d20d19f2888e97

3. 2の先頭12文字分を取る

※JavaScriptで標準で扱える数字の桁数の関係で12桁としています
86d29585d0e6

4. 3を10進数化して応募総数で割った余り+1を求める

48

5. 今までの当たり一覧と重複していない時【4の答え】番目をその順位の当たりとする

今までの当たり番号と重複する時は 2のハッシュ化する回数を一回増やして2~4の行程を重複しなくなるまで繰り返す

ハッシュ化する回数を一回増やすとはハッシュ化した結果に対して再度ハッシュ化する
sha256(sha256("4b16f3a22a7a12d57ed1229ec0409996ae960cb8ead6fe0b167f482c9ee2fc7c1"))

6. 次の順位を決めるために1~5を必要な回数だけ繰り返す


詳しくはJavaScriptのソースを読んでください。
また元々はPHP版で実装したものを移植しましたので参考までに。
同じ結果が返ってくるかの検証用にも使っています。

抽選利用の注意点

特定のブロックNOのブロックハッシュを元に抽選しているため マイナーが自分に有利な抽選結果になるブロックハッシュを探してくることができる可能性があります。
そのため大金のかかった抽選ではなく遊び用としてご利用ください。
また難易度が高く自分に有利なブロックハッシュを生成することが難しいBTCチェーンを利用することをお勧めします。

裏技

自動で取ってこれるブロックハッシュはMONAとBTCのみですが その他のブロックチェーンのブロックハッシュや任意の文字列をblock hash欄に入力して抽選することもできます。
例えばETHチェーンのブロック番号○番のhashを使って抽選します、とか 主催者があらかじめ用意した暗号化ZIPの中に使用する文字列を保存しておくなど。
block hashは文字数制限は特に付けてないのでなんでも入れられます。
面白い使い方をいろいろ考えてみてください。