Round Lifecycle (라운드 생애주기)
각 Round는 정확히 60초 동안 지속됩니다. 시간은 프로토콜 UTC 기준입니다.
네 가지 단계
| Phase (단계) | Duration (지속 시간) | 설명 |
|---|---|---|
| Announce (공개) | t₀ → t₀+5s | 질문 q_t가 공개됩니다. 질문은 `seed_t mod |
| Commit (커밋) | t₀+5s → t₀+35s | 각 참가자는 commit c_i = HMAC-SHA256(s_i ‖ round_t, b_i)를 제출합니다. 여기서 b_i ∈ {0, 1}는 선택한 답변이고 s_i는 128비트 사용자 비밀값입니다. Commit은 Reveal 단계까지 답변을 숨깁니다. |
| Reveal (공개) | t₀+35s → t₀+50s | 참가자들이 (s_i, b_i)를 공개합니다. Round Engine은 각 commit을 검증합니다. Reveal하지 않은 참가자는 탈락됩니다. |
| Settle (정산) | t₀+50s → t₀+60s | 다수결 `M = argmax_v |
왜 두 단계(commit + reveal)인가?
단순한 설계에서는 플레이어가 b_i를 평문으로 제출할 수 있습니다. 이는 세 가지 문제를 야기합니다:
- 무리 짓기(Herding). 늦게 투표하는 플레이어는 현재 집계를 보고 편승합니다.
- 봇 공모(Bot collusion). 조정된 봇 집단이 공개 신호를 기다린 후 다수결을 휩쓸 수 있습니다.
- 질문 유출(Question leakage). 평문 commit을 사용하면 공격자가 부분 답변을 관찰하고 투표 전에 질문의 실제 분포를 추론할 수 있습니다.
암호학적 Commit / Reveal 프로토콜은 이 세 가지 문제를 모두 제거합니다. Commit 단계에서는 누구도 다른 사람의 답변을 볼 수 없습니다. Reveal 단계에서는 모든 commit이 공개된 (s_i, b_i)에 대해 공개적으로 검증 가능합니다.
자세한 사양은 Cryptographic Protocol을 참조하세요.
Reveal하지 않으면 어떻게 되나요?
해당 Round에서 탈락되며 Round POP을 획득할 수 없습니다. commit은 감사 목적으로 여전히 온체인(Merkle Root의 일부로) 기록됩니다. Reputation Score (평판 점수)는 "신뢰할 수 없는 참가자" 방향으로 약간의 베이지안 업데이트를 받습니다.
네트워크가 느리면 어떻게 되나요?
Round Engine은 느린 클라이언트를 위해 각 단계 경계 이후 2초의 유예 기간을 허용합니다. 그 이후의 commit과 reveal은 자동으로 무시됩니다.
질문은 어떻게 선택되나요?
Question Oracle (질문 오라클, Oracle & Randomness 참조)은 100,000개 이상의 사전 생성 및 사전 보정된 질문 저장소를 유지합니다. 각 질문은 다음 과정을 거칩니다:
- 생성(Generation) — 다중 LLM 앙상블에 의해 생성됩니다.
- 적대적 편향 제거(Adversarial debiasing) — 인구통계학적 및 언어적 프라이밍을 제거합니다.
- 보정 사전 테스트(Calibration pretest) — 합성 모집단을 대상으로 약 50/50의 예상 응답을 검증합니다. 예상 응답이 편향된 질문은 필터링됩니다.
Round 시드 seed_t는 이 저장소에서 결정론적으로 선택하므로, 선택은 예측 불가능하지만 완전히 감사 가능합니다.
Round가 동점이 될 수 있나요?
수학적으로 가능합니다(정확히 50/50). |{b_i=0}| = |{b_i=1}|인 경우 Prize Pool은 Round t+1로 이월되고, 질문이 다시 추출되며, 양측 모두 생존합니다.