banner
0xMech

0xMech

Focus on various AI application sharing, Blockchain learners, web3 new leeks
twitter

基于区块链随机数与哈希算法的抽選

著名なビデオサイト B 站の抽選では、10 人の当選者のうち 1 人だけが大会員ではないかもしれません。王思聪が主催する抽選では、100 人の当選者のうち 1 人だけが美女ではないかもしれません。性別の基本的な公平性さえ実現できません。では、どのようにして公平な抽選を実現することができるのでしょうか?
b 站.png
wsc.JPEG
絶対的な当選免疫体として、なぜ自分が当たらないのかを知るために、抽選の原理を学ぶために時間をかけました。公平かつ公正な抽選を実現することは実際には容易ではありませんでした。
ネットライブの抽選では、しばしば画面キャプチャの方法が使用されますが、抽選結果の再現はできません。一部のブロガーは、抽選範囲のソート + ランダム数の方法を使用しています。例えば、100 人の中から 1 人を選ぶ場合、100 人を一定の方法でソートし、0 から 100 までのランダム数を生成し、その数に対応する人が当選者となると考えていますが、この方法ではランダム数が本当にランダムかどうかを確認することはできませんし、参加者は抽選の真実性を検証することもできません。主催者がスクリーンショットを提供しても、抽選の公平性を証明することはできません。

ランダム数を使用することで、各参加者が抽選で同じチャンスを持つことが保証されます。各参加者の選択肢は同等であり、各選択肢が同じ確率で選ばれる可能性があります。ランダム数を使用することで、この公平性が保証されます。
同時に、ランダム数を使用することで、抽選の興味と刺激を高めることができます。各参加者は自分が選ばれるかどうかわからないため、抽選の刺激とサスペンスが増します。
抽選プロセスでランダム性を確保するためには、高品質のランダム数生成器を使用する必要があります。良いランダム数生成器は、バイアスのない、独立した、均等な、周期的なものであるべきです。生成されたランダム数が高品質でない場合、抽選結果が不公平になったり、予測可能性が高くなったりする可能性があります。

私たちは皆、コンピュータは真のランダム数を生成することはできないことを知っています。すべてのコンピュータのランダム数は疑似ランダムです。したがって、私は特定の時間ポイント以降の最初のビットコインブロックのヘッダーハッシュ値をランダム数として使用しました。私はマイニングを行うことができないため、ブロックヘッダーを生成することもできず、ランダム数生成の結果を操作することもできません。抽選の基本的なアルゴリズムはハッシュアルゴリズムを使用しています。
以下に具体的な手順を示します:
1. 参加者の ID を集計します。
2. 固定された時間を決めます。例えば、東 8 区の 2023 年 4 月 22 日 13:00 です。この時間以降の最初のビットコインブロックのヘッダーハッシュ値をランダム数とします。
3. 各人の ID とこのランダム数を一緒にハッシュ化します。
4. 求めたハッシュ値をソートし、当選者の数に基づいて上位の人々を決定します。

私自身はコードを書くことができないため、ChatGPT にこのコードを書いてもらいました。
ChatGPT 写抽奖代码.png
必要なライブラリをインストールした後、実行することができます。参加者の ID は B 站の UID、電話番号、または直接名前であることができます。以下では QQ 番号を使用してデモを行います。以下の 2 つのウェブサイトを使用して、グループのメンバーの QQ 番号をエクスポートします。
qq.png
zz.png
エクスポートした後、QQ 番号で構成される.txt ファイルが得られます。次に、確定した時間にブロックチェーンブラウザを開き、必要なブロックのヘッダーハッシュ値を見つけます。このハッシュ値と.txt ドキュメント名を上記のプログラムに入力し、最後にこのプログラムを実行します。1 位が当選者となります。
hash.png
zj.png
使用されたプログラムはオープンソース化され、コメントセクションに投稿されます。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。