Round (ラウンド) ライフサイクル
各 Round は正確に 60秒 で完了します。時刻はプロトコルUTCに従います。
4つのフェーズ
| フェーズ | 期間 | 内容 |
|---|---|---|
| Announce | t₀ → t₀+5s | 質問 q_t が公開されます。質問は `seed_t mod |
| Commit | t₀+5s → t₀+35s | 各参加者はコミット c_i = HMAC-SHA256(s_i ‖ round_t, b_i) を提出します。ここで b_i ∈ {0, 1} は選択した回答、s_i は128ビットのユーザー秘密鍵です。コミットはRevealまで回答を隠します。 |
| Reveal | t₀+35s → t₀+50s | 参加者は (s_i, b_i) を公開します。Round Engine が各コミットを検証します。Revealを行わなかった参加者は排除されます。 |
| Settle | t₀+50s → t₀+60s | 多数派 `M = argmax_v |
なぜ2つのフェーズ(Commit + Reveal)なのか?
単純な設計では、プレイヤーが b_i を平文で提出することになります。これには3つの問題があります。
- 群集効果(Herding):後から投票するプレイヤーが現在の集計を見て、バンドワゴンに乗ることができます。
- ボットの共謀:調整されたボット群が公開シグナルを待ってから多数派を一掃できます。
- 質問の漏洩:平文のコミットにより、攻撃者が部分的な回答を観察し、投票前に質問の真の分布を推測できます。
暗号学的なCommit/Revealプロトコルは、これら3つの問題をすべて排除します。Commit中は誰も他の人の回答を見ることができません。Reveal中は、すべてのコミットが公開された (s_i, b_i) に対して検証可能です。
詳細な仕様については暗号プロトコルを参照してください。
Revealを行わなかった場合はどうなりますか?
そのRoundから排除され、Round POP(ポイント)は獲得できません。コミットは監査のために(Merkle Rootの一部として)オンチェーンに記録されます。Reputation Score(レピュテーションスコア)は「信頼できない参加者」に向けてベイズ更新されます。
ネットワークが遅延している場合はどうなりますか?
Round Engine は各フェーズの境界を超えて2秒の猶予期間を設けています。それを超えたコミットとRevealは黙って破棄されます。
質問はどのように選択されますか?
Question Oracle(質問オラクル)(Oracle & Randomness参照)は、10万以上の事前生成・事前調整済み質問のリザーバーを維持しています。各質問は以下の処理を経ています。
- 生成:マルチLLMアンサンブルによる生成
- 敵対的デバイアス:人口統計的・言語的なプライミングを除去
- キャリブレーションプリテスト:合成人口に対して約50/50の期待応答を検証。偏った期待応答を持つ質問は除外されます。
Round シード seed_t はこのリザーバーから決定論的に選択するため、選択は予測不可能でありながら完全に監査可能です。
Round が同点になることはありますか?
数学的には可能です(正確に50/50の場合)。|{b_i=0}| = |{b_i=1}| の場合、賞金プールはRound t+1に繰り越され、質問が再抽選され、両方の陣営が生存します。