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