Pickawの抽選技術・構造はこの共通の基盤の上に成り立っています。

geometry
Drawchain™の公開・検証可能な部分は現在開発中で、間もなくご利用していただけるようになります。Pickawが活動開始以来ずっと設置されている機能なので、過去に遡った検証が可能となります。SNSでぜひPickawをフォローし、到着通知をいち早くお受け取りください!

Drawchain™の概要

Drawchain™
Seed Pool
Seed 45cdz4W0Cc28sZaQ
Seed yVQ42tfQ8McEjIIA
Seed RWwjzQw4ShULofUd
Seed Pool
Seed nnWqTElLhG6OvPPF
Seed 06nrizrLXKHhbEAg
Seed FLvwQhNjahe6WGrO

始めに、Drawchain™ を象徴する左の図をご覧ください。まず全体像を把握していただきたいと思います。あとに説明する少し技術的な部分を、よりよく理解していただくために。

Drawchain™

- シードプールのセット

Drawchain™は、各シードプールの関連性をもとにPickawで実施される全ての抽選を規制しています。

Seed Pool

- シードのセット

各日が、その日に実施された抽選で使用されたシードが由来するシードプールに相当します。

Seed

— 文字列

各シードがユニークで、これをある抽選に関連付けることで、抽選工程・結果を生み出し、また再現することができます。

専門用語

本題に入る前に、この後何度か出てくる専門用語に慣れるため、このページで各用語の定義の一覧表をお見せしたいと思います。

  • master_seed: base62の32文字からなるユニークかつランダムな文字列。
  • seed_pool: 連続生成されるhashの確定リスト。
  • hash, global_hash, ending_hash:16進数で表される、固有かつランダムな64文字の文字列。
  • seed: base62の16文字で生成されたユニークかつランダムな文字列。
  • sha256:標準化された安全性の高いハッシュ関数。
  • base62:62文字で行われる情報の暗号化。

それでは、詳細を見ていきましょう...。

いよいよスタートです!上記のようにDrawchain™とは、シードプールのリストに付けられた名前です。それでは、Drawchain™にいったい何が含まれているのか、そしてシードプールがどのようにそれを構成しているのかを見ていきましょう。

シードプールの作成

seed_pool の起源は、Random.orgによって生成される master_seed に由来しています。これは我々の要求に応じて、毎晩午前零時(UTC)少し前に、翌日に向け生成されるのです。

従って、seed_poolには、24時間分の全最終抽選のリストが含まれているのです。

そのため、このmaster_seedは、seed_poolの有効期間中にすべての抽選を提供するのに十分な大きさの hash のリストを生成するために使用されます。

hash リストを生成する手順は次のとおりです。

  • 1. master_seedsha256 でハッシュして、 hash #1を作成します。
  • 2. hash #1を sha256 で(テキスト化された16進数の形で)ハッシュして 、 hash #2を作成します。
  • 3.十分な大きさのhashのリストができるまで、(2.)の手順を繰り返します。

したがって、すべての hash は連続的に生成され、master_seedに従属しています。

ending_hash は最後に生成された hash であり、直接使用はされませんが、 seed_pool に開始 (master_seed) と終了 (ending_hash) があることを確認することで、 seed_pool の有効期間中にその変更がないことを証明するために存在します。

Seed Pool
199bd291b6a487bdcc2c2ee694fe33795ce68a7f98980f5b122850311c8b0c58
dff3c4d48755ba4b5d502abeeaf634f641d648912ea0f2112a19994446ed2234
054ef27ac47492d889f3ee68bbe31c5a748b1445d0c8d0c39f3434c9ab1563e9
3172b0dbd9355666b0dd60ca841066adde4d8bdae0123998ea0f936d2ae1ea2a
0bebacec2587be7b59279dd0785ddf7d503879e84dc52129d08e73c3d78f2803
...
f866064fc6962b11c85221f3be57bc68d1d017151dc4a9d1b3aee5e06f83660b
970ee7b2a0c4697c2344b8217c0f63c310ac52d6b9bea9b265b5c2d27d007635
TSSJNvGrhPgWYx833cU8DRYCr6Ge6Q8s
master_seed ending_hash hash
未使用の master_seedhash は、 hashseed の予測や抽選の変更を避けるため、 seed_pool がサービス停止するまで、自発的に保留されます。

すべての hash が生成されたら、ようやく seed_pool を使用する準備が整います。前のシードプールは無効化され、新しいものがその役割を引き継ぎます。前の master_seed は公開され、チェック可能になりま (下記参照)。

シードの生成と利用

Pickawで抽選のリクエストがされると、既存の seed_pool の先頭から hash が削除されます。こうして固有 seed が生成され、抽選に割り当てられ、使用されるのです。

hashseed_pool の末尾から消費することで、次からの文字列が予測され、抽選がシャッフルされるのを防ぎます (まだ使用されていない hash は公開されません)。

seed の生成手順は次のとおりです。

  • 1. hash は基数10に変換され、 seed (62 16 )の制限値で割られます。その後残った部分だけを使用します(この演算は別名 modulo とも呼ばれます)。
  • 2. 得られた数値を base62 に変換し、16文字の文字列を生成するのに必要な数のゼロを前に置き、 seed がを生成します。
前述のとおり、シードは base62 内の 16 文字の文字列です。つまり、大きな数値に変換でき、その逆も可能です。したがって、小数値 (基数 10) は 0 (含む) から 62 16 (除外) までの間、つまり 47672401706823533450263330816 になります。

生成された seed は保存され、抽選に使用することができます... 。この工程が seed_pool が無効になるまで繰り返されるのです。

Seed Pool
199bd291b6a487bdcc2c2ee694fe33795ce68a7f98980f5b122850311c8b0c58
dff3c4d48755ba4b5d502abeeaf634f641d648912ea0f2112a19994446ed2234lidjXjrPQvOVTNcM
054ef27ac47492d889f3ee68bbe31c5a748b1445d0c8d0c39f3434c9ab1563e9veBU6I7Kr7ATAk6l
3172b0dbd9355666b0dd60ca841066adde4d8bdae0123998ea0f936d2ae1ea2aEH5WZd5kvxgPp2Fc
0bebacec2587be7b59279dd0785ddf7d503879e84dc52129d08e73c3d78f2803SJvamW7ILjC7hQEr
...
f866064fc6962b11c85221f3be57bc68d1d017151dc4a9d1b3aee5e06f83660bunused
970ee7b2a0c4697c2344b8217c0f63c310ac52d6b9bea9b265b5c2d27d007635unused
TSSJNvGrhPgWYx833cU8DRYCr6Ge6Q8s
master_seed ending_hash hash seed

この図を見ると、シードプールが無効になるまでに(seed_pool の末尾の hash から) 4 つのシードが生成されたことがわかります。他の hash は未使用のままで、 seed は作成されていません。

抽選検証

seed_poolseed がどのように生成されるかがわかったところで、インタラクティブでおもしろいパートに移ります : どうやって当選者が偶然の賜物であることを証明するか?についてです。あなた自身で、自ら体験していただ来たいと思います!

検証は以下に挙げる様々な方法で、Drawchain™のどの段階からでも行うことが可能です。

master_seed から行う場合

まず始めに、 seed_poolhash の生成に使用されている master_seed が、Drawchain™、あるいは該当のシードプールから直接 master_seed に添付されているリンクを通じて、Random.orgに由来していることを確認します。

注意 : Random.orgによるこのチェック方法は、 master_seed が属する seed_pool が無効化にされてからのみ可能となります。

seed_pool から行う場合

また、我々の作成したJSFiddleにより、生成された hash リストが変更されず、上記のロジックに従っているかどうかをいつでも確認することができます。JSFiddleは以下で利用可能です。

使い方

  • 1. 「スタートハッシュ」の欄に master_seed (または seed_poolhash ) を入力します。
  • 2. 同じ seed_pool 内の ending_hash (または後に続く hash) を「End hash*」フィールドに入力します。
  • 3. 「計算」ボタンをクリックします。

seed から行う場合

更に、JSFiddleはポジションの生成も行っており、これにより抽選完了後間もなく、 seed から抽選者のポジションをいつでも確認できるようになります。JSFiddleは以下で利用可能です。

使い方

  • 1.「抽選シード」の欄に抽選の seed を入力します。
  • 2.「エントリー数」の欄にキャンペーンの参加者数を入力します。
  • 3. 「当選者数」の欄にキャンペーンの当選者数を入力します。
  • 4. 「計算」ボタンをクリックします。
アプリケーションのソースコードを公開すれば、抽選が技術的ルールに従って実施されていることをもっと簡単に証明することができたんじゃないか、と思われるかもしれません。残念ながら、当社のコードは我々が所有しており、第三者への提供を避けたいという思いがあったのです。だからこそ、この画面を設けました。また、このオープンソースバージョンをうまく使っていただける保証がなかったということもあり、確実性にかけたものを提供するよりは、「いっそノウハウの公開自体をしない」という選択をするに至ったのです。また選出プロセスにおいても、単純に1から参加者数の間で、ランダムに数字を選ぶこともできました。しかしそれでは、Pickawではありません。 😉

その考案・開発だけで数ヶ月を要したDrawchain™とそのメカニズム。もうこれで秘密はありません!どうかこれまでの説明が明瞭で、混乱を招くことがなく、お分かりいただけていたらいいのですが。