100% 검증 가능

Provably Fair

크립토 다이스는 암호학적으로 검증 가능하며, 결과 조작이 불가능합니다.

🤔 왜 Provably Fair인가요?

일반적인 온라인 게임에서는 운영자가 결과를 조작할 수 있습니다. 하지만 Provably Fair 시스템은 수학적으로 조작이 불가능하도록 설계되었습니다.

일반 게임

운영자가 결과를 마음대로 조작 가능. 사용자는 확인할 방법이 없음.

Provably Fair

모든 결과를 수학적으로 검증 가능. 운영자도 조작 불가능.

핵심 원리

게임 결과는 서버 시드클라이언트 시드, 그리고 논스(Nonce) 세 가지를 조합하여 계산됩니다. 이 중 하나라도 바뀌면 결과가 완전히 달라집니다.

⚙️ 어떻게 작동하나요?

1️⃣ 게임 시작 전: 서버 시드 해시 공개

서버는 비밀 시드(랜덤 문자열)를 생성하고, 그 해시값만 미리 공개합니다. 원본 시드는 아직 비밀입니다. 이렇게 하면 서버가 나중에 시드를 바꿀 수 없습니다.

2️⃣ 사용자가 클라이언트 시드 설정

사용자는 자신만의 시드를 직접 입력할 수 있습니다. 이 시드도 결과 계산에 포함되므로, 서버가 결과를 예측하거나 조작할 수 없습니다.

3️⃣ 게임 진행: 결과 계산

게임이 진행될 때마다 서버시드 + 클라이언트시드 + 논스를 조합하여 결과(0.00~99.99)를 계산합니다. 논스는 게임마다 1씩 증가합니다.

4️⃣ 시드 교체 시: 원본 공개

사용자가 새 시드를 요청하면, 이전 서버 시드의 원본이 공개됩니다. 이를 통해 모든 이전 게임이 공정했는지 검증할 수 있습니다.

💡 쉽게 비유하면:
봉인된 봉투에 답을 미리 적어두고, 봉투의 사진(해시)만 보여준 뒤 게임을 진행합니다. 나중에 봉투를 열어 원래 답이 맞는지 확인할 수 있습니다.

🎲 크립토 다이스 결과 계산

결과는 0.00 - 99.99 범위로 생성됩니다.

// 1. 세 가지 값을 콜론으로 연결 combined = "서버시드:클라이언트시드:논스" // 2. HMAC-SHA256 해시 생성 hash = HMAC_SHA256(combined, 서버시드) // 3. 해시의 앞 8자리를 10진수로 변환 number = hexToDecimal(hash.slice(0, 8)) // 4. 10000으로 나눈 나머지 / 100 결과 = (number % 10000) / 100 // 0.00 - 99.99

💻 JavaScript 검증 코드

// 브라우저 콘솔(F12)에서 실행 async function verify(serverSeed, clientSeed, nonce) { const enc = new TextEncoder(); const key = await crypto.subtle.importKey( 'raw', enc.encode(serverSeed), {name:'HMAC',hash:'SHA-256'}, false, ['sign'] ); const sig = await crypto.subtle.sign('HMAC', key, enc.encode(serverSeed+':'+clientSeed+':'+nonce)); const hex = [...new Uint8Array(sig)].map(b=>b.toString(16).padStart(2,'0')).join(''); return (parseInt(hex.slice(0,8),16) % 10000) / 100; } // 사용 예시 verify('서버시드','클라이언트시드',1).then(r=>console.log('결과:',r.toFixed(2)));

🔍 직접 검증하기

새 시드 생성 시 이전 시드 원본이 공개됩니다.
00.00
서버 시드 해시:
-

결합 해시:
-

❓ FAQ

0.00 - 99.99 결과는 어떻게 계산되나요?
해시값의 앞 8자리(32비트)를 10진수로 변환한 후, 10000으로 나눈 나머지를 100으로 나눕니다. 이렇게 하면 0.00부터 99.99까지 고르게 분포된 결과가 생성됩니다.
Over/Under 판정 기준은?
Over: 결과 > 타겟이면 승리 (예: Over 50.00 → 결과가 50.01~99.99면 승리)
Under: 결과 < 타겟이면 승리 (예: Under 50.00 → 결과가 0.00~49.99면 승리)
결과가 타겟과 정확히 같으면 양쪽 모두 패배합니다.
배율은 어떻게 계산되나요?
배율 = (100 - 하우스엣지) / 승률
예: 하우스엣지 1%, 승률 50% → 배율 = 99 / 50 = 1.98x