TL;DR
- ExactOdds는 베팅 전에 결과를 고정하는 커밋-공개 시드(commit-reveal seeds)와 여러 실행 환경에서 게임 프로그램의 출력이 바이트 단위로 동일해야 하는 정확성 법칙(exactness law)을 결합해, 게임 결과와 규칙을 모두 검증하는 프로토콜임.
- 기존의 ‘검증 가능한 공정성’이 결과만 증명하는 데 비해, ExactOdds는 감사 대상 프로그램만 실행을 통과할 수 있도록 해 운영 중 다른 규칙이 적용되지 않음을 검증함.
- 저장소에는 주사위·동전 던지기·룰렛 참조 게임, 정확성 게이트 실행기, 테스트 기준값, 실행 환경별 보고서와 검증 실행에서 나온 소스 해시 영수증이 포함됨.
- 플레이어는 소스 해시, 공개된 서버 시드, 게임 결과와 검증 영수증을 확인해 라운드를 재현할 수 있으며, 감사자와 운영자는 게이트를 실행해 다섯 실행 환경의 결과가 일치하는지 확인할 수 있음.
- ExactOdds는 카지노나 게임 라이선스, 자금 보관 서비스 또는 난수 생성기가 아니며, AGPL-3.0 또는 Slid Phi Labs 상용 라이선스로 제공됨.
ExactOdds
- ExactOdds의 원칙은 증명 가능한 공정한 결과, 증명 가능한 규칙, 둘 다 아니면 어느 쪽도 아님임.
- ExactOdds는 두 요소로 구성된 검증 가능한 공정 게임 프로토콜임. 하나는 베팅 전에 결과가 정해졌음을 보이는 커밋-공개 시드이며, 다른 하나는 게임 프로그램이 Python, JavaScript, TypeScript, C, C++의 각 실행 환경에서 바이트 단위로 동일한 출력을 내도록 요구하는 정확성 법칙임. 이를 충족하지 못하는 프로그램은 거부됨.
- 오늘날의 ‘검증 가능한 공정성’은 결과만 증명하지만, ExactOdds는 규칙도 증명함. 감사자가 승인한 프로그램만 게이트를 통과할 수 있으므로 운영자가 감사자에게 보여준 것과 다른 규칙을 실제 운영에 적용할 수 없음.
저장소 구성
games/: 검증 가능한 주사위 게임provably-fair-dice.cuni, 검증 가능한 동전 던지기 게임provably-fair-coin-flip.cuni, 검증 가능한 룰렛 게임provably-fair-roulette.cuni로 구성된 세 가지 참조 게임임. 짧고 읽기 쉬우며 결정론적이고, 시드를 입력받아 결과를 출력함.gate/: 정확성 게이트 실행기run-gate.sh, 기준 테스트 데이터(fixtures/), 실행 환경별 게이트 보고서GATE_REPORT.md로 구성됨.receipts/: 2026-09-26 검증 실행에서 나온 소스 해시 영수증이 포함됨.paper/: 전체 프로토콜 문서PAPER.md,PAPER.pdf, 카지노 운영자를 위한 한 페이지 요약OPERATOR_ONEPAGER.md가 포함됨.
플레이어를 위한 게임 검증 5단계
- 게임 소스, SHA-256 도구, 그리고 Python 3, node, gcc 중 하나가 필요함.
- 1. 소스를 확보함. 저장소의
games/provably-fair-coin-flip.cuni또는 카지노가 공개한 사본을 사용함. - 2. 소스 해시를 확인함.
sha256sum games/provably-fair-coin-flip.cuni결과가receipts/provably-fair-coin-flip.receipt.json의source_hash와 일치해야 함. 일치하지 않으면 다른 게임이므로 진행을 중단해야 함. - 3. 공개된 시드를 확인함. 라운드가 끝난 뒤 카지노가 공개한
server_seed에echo -n "$server_seed" | sha256sum을 실행한 결과가 베팅 전에 공개된 커밋 값과 일치해야 함. - 4. 라운드를 다시 실행함. 공개된 서버 시드, 플레이어의 클라이언트 시드, 라운드 번호를 프로그램의 동전 던지기 함수에 입력해 실행함. 게이트가 모든 실행 환경의 결과 일치를 보장하므로 어느 환경에서든 실행할 수 있으며, 출력은 카지노가 해당 라운드에 보고한 결과와 일치해야 함.
- 5. 영수증을 확인함.
receipts/에 게이트 판정이 있으며, 감사자는./gate/run-gate.sh를 다시 실행해PASS결과를 재현할 수 있음.
감사자와 운영자를 위한 게이트 실행
./gate/run-gate.sh를 실행함.- ExactOdds 참조 컴파일러가 필요하며, 빌드 경로를
PROVABLY_COMPILER=/path/to/cuni ./gate/run-gate.sh형태로 지정함. - 기본 경로는
../cuni-langs/target/debug/cuni이며, 다음으로~/workspace/cuni-langs/target/debug/cuni, 그다음PATH의cuni를 확인함. - 게이트는 각 게임에 대해 다섯 가지 네이티브 실행 환경의 프로그램을 생성하고 실행한 뒤, 표준 출력이 바이트 단위로 동일한지 요구함. 새 소스 해시 영수증을
receipts/에 기록하고 출력을 기준 테스트 데이터와 대조함. - 종료 코드
0은 모든 게임이 검증을 통과하고 기준 테스트 데이터에 변경이 없음을 의미함.
참고 자료
- 전체 프로토콜:
paper/PAPER.md및paper/PAPER.pdf - 운영자 요약:
paper/OPERATOR_ONEPAGER.md - 실행 환경별 증거:
gate/GATE_REPORT.md
라이선스
- 이중 라이선스 적용 대상임: AGPL-3.0(
LICENSE.AGPL-3.0) 또는 Slid Phi Labs 상용 라이선스(LICENSE.COMMERCIAL)로 제공됨. 자세한 내용은LICENSE와NOTICE참조 대상임. - 저작권 표기: © 2026 Slid Phi Labs / Corey Tasz.
해당하지 않는 것
- 카지노, 게임 라이선스, 자금 보관 서비스 또는 난수 생성기가 아님. 자세한 내용은 논문 §5에 있음.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요