암호화폐 리서치
프로바블리 페어란? 해시로 게임 결과 직접 검증하는 법
프로바블리 페어(검증 가능한 공정성)가 서버 시드, 클라이언트 시드, 논스, HMAC-SHA256으로 결과를 만드는 원리와 직접 재계산하는 예시를 단계별로 보여 드립니다. 이 방식으로는 증명할 수 없는 것과 한국에서의 법적 위험까지 함께 정리했습니다.

프로바블리 페어(검증 가능한 공정성)는 온라인 카지노가 베팅 뒤에 게임 결과를 바꾸지 않았다는 것을 이용자가 직접 확인할 수 있게 해 주는 방식입니다. 사이트는 결과를 만드는 비밀 값의 “지문”(해시)을 먼저 보여 주고, 나중에 비밀 값 자체를 공개합니다. 이용자는 공개된 값으로 결과를 다시 계산해서 처음 결과와 같은지 맞춰 보면 됩니다.
원리부터 짚고, 직접 계산해 볼 수 있는 예시를 단계별로 보여 드립니다. 다만 이 방식으로 증명되는 범위는 좁습니다. 결과가 조작되지 않았다는 것만 알려 줄 뿐, 사이트가 출금을 해 줄지, 라이선스가 유효한지, 한국에서 이용해도 되는지는 전혀 말해 주지 않습니다.
먼저 짚고 갑니다. 한국은 온라인 카지노를 허가하지 않으며, 결과 검증이 가능한 게임이라도 해외 사이트에서 돈을 거는 것은 형법 제246조의 도박죄가 될 수 있습니다. 무허가 사이트에서 생긴 문제는 국내에서 보호받을 수 없습니다.
이런 방식은 왜 생겼을까
일반 온라인 카지노에서는 서버가 결과를 만들고, 이용자는 그 결과를 그냥 믿을 수밖에 없습니다. 규제가 잘 된 시장에서는 공인 시험기관이 난수 생성기를 검사하고 규제기관이 감독하지만, 해외 코인 카지노는 그런 감독이 약하거나 없는 경우가 많습니다. 프로바블리 페어는 “운영자를 믿지 않아도 결과를 검증할 수 있게 하자”는 생각에서 나왔고, 비트코인 다이스나 크래시 같은 단순한 자체 게임과 함께 퍼졌습니다.
서버 시드, 클라이언트 시드, 논스… 구성 요소 5가지
| 요소 | 누가 정하나 | 역할 |
|---|---|---|
| 서버 시드 | 카지노 | 결과를 만드는 비밀 값, 사용이 끝난 뒤 공개 |
| 서버 시드 해시 | 카지노 | 서버 시드의 SHA-256 지문, 베팅 전에 미리 공개 |
| 클라이언트 시드 | 이용자(바꿀 수 있음) | 카지노가 혼자 결과를 정하지 못하게 하는 이용자 쪽 값 |
| 논스 | 자동 증가 | 같은 시드 쌍으로 하는 몇 번째 베팅인지 나타내는 번호 |
| 커서 | 자동 | 한 번의 해시로 난수가 모자랄 때 추가 계산 횟수를 세는 값 |
해시와 HMAC
SHA-256은 어떤 입력이든 64자리 16진수 문자열로 바꿔 주는 함수입니다. 입력이 같으면 결과도 늘 같고, 한 글자만 달라져도 결과가 완전히 바뀌며, 결과를 보고 입력을 거꾸로 알아낼 수는 없습니다. 규격은 미국 표준기술연구소(NIST)의 FIPS 180-4 문서에 공개돼 있습니다.
HMAC-SHA256은 비밀 키를 섞어 해시를 만드는 방식입니다(RFC 2104). 프로바블리 페어에서는 서버 시드를 키로, “클라이언트 시드:논스:커서” 형태의 문자열을 메시지로 넣어 결과용 해시를 만듭니다. Stake는 이 구현 방식을 자사 안내 페이지에 공개해 두었습니다.
게임 결과는 이렇게 만들어집니다
- 카지노가 서버 시드를 만들고, 그 SHA-256 해시를 이용자에게 보여 줍니다.
- 이용자가 클라이언트 시드를 정합니다. 기본값을 그대로 둘 수도 있고 직접 바꿀 수도 있습니다.
- 베팅할 때마다 HMAC-SHA256(서버 시드, “클라이언트 시드:논스:커서”)으로 해시를 만듭니다.
- 해시의 앞부분 바이트를 0 이상 1 미만의 숫자로 바꿉니다. Stake 방식은 4바이트로 숫자 하나를 만들며, 32바이트 해시 하나에서 숫자 8개가 나옵니다.
- 그 숫자를 게임별 공식에 넣어 다이스 숫자, 룰렛 칸, 크래시 배당 등을 정합니다.
- 이용자가 시드 쌍을 바꾸면 카지노가 이전 서버 시드를 공개하고, 이용자는 지난 베팅을 전부 다시 계산해 볼 수 있습니다.
직접 계산해 보기
아래 값은 설명을 위해 만든 예시로, 실제 카지노 계정과는 관계가 없습니다. 같은 값을 넣으면 누구나 같은 결과를 얻습니다.
- 서버 시드: 7f3a9c1e5b2d4f6081a3c5e7f9b1d3e5a7c9e1f3b5d7f9a1c3e5b7d9f1a3c5e7
- 서버 시드의 SHA-256 해시(베팅 전 공개): 61ce4aa730fd45d0655b3acbda410e995287339572b7711705b5337e9c3eaadd
- 클라이언트 시드: seoul2026
1단계. 해시 확인 공개된 서버 시드를 SHA-256에 넣어 위 해시가 나오는지 봅니다. 똑같이 나온다면 카지노가 처음 약속한 서버 시드를 바꾸지 않았다는 뜻입니다.
2단계. 결과 해시 만들기 서버 시드를 키로, “seoul2026:1:0”을 메시지로 넣어 HMAC-SHA256을 계산합니다. 결과는 cf72848d9c49b505로 시작합니다.
3단계. 숫자로 바꾸기 앞 4바이트는 16진수 cf, 72, 84, 8d, 곧 10진수 207, 114, 132, 141입니다. 이를 207 ÷ 256 + 114 ÷ 256² + 132 ÷ 256³ + 141 ÷ 256⁴로 더하면 0.8103411(소수 일곱째 자리에서 버림)이 나옵니다. 첫 항 207 ÷ 256만 해도 0.80859375이고, 뒤의 항들이 그 아래 자릿수를 채웁니다.
4단계. 게임 공식 적용 같은 숫자라도 게임마다 공식이 달라 다르게 읽힙니다.
| 논스 | 해시 앞부분 | 변환된 숫자 | 다이스(× 10,001 ÷ 100, 버림) | 룰렛(× 37, 버림) | 림보(0.99 ÷ 숫자, 소수 둘째 자리 버림) |
|---|---|---|---|---|---|
| 1 | cf72848d… | 0.8103411 | 81.04 | 29번 칸 | 1.22배 |
| 2 | c982259d… | 0.7871421 | 78.72 | 29번 칸 | 1.25배 |
| 3 | 7f4c8549… | 0.4972613 | 49.73 | 18번 칸 | 1.99배 |
논스가 1, 2, 3으로 바뀌기만 해도 해시가 완전히 달라져 매번 다른 결과가 나옵니다. 림보 공식의 0.99는 1% 하우스 엣지를 뜻합니다. 같은 원리가 크래시 게임에도 쓰이며, 배당별 확률은 크래시 게임 분석에서 계산해 두었습니다.
어떤 도구로 계산할까
사이트 대부분이 자체 검증 화면을 두고 있지만, 사이트 도구만 쓰면 검증하는 의미가 반감됩니다. 프로그래밍 언어의 표준 라이브러리로도 같은 계산을 할 수 있습니다. 예를 들어 Node.js의 crypto 모듈이나 파이썬의 hmac, hashlib 모듈로 HMAC-SHA256을 계산하고, 위 3단계 방식으로 바이트를 숫자로 바꾸면 됩니다. 사이트가 공개한 공식과 결과가 다르게 나온다면, 어디서 차이가 났는지 문의할 근거가 됩니다.
다이스로 보는 승률과 하우스 엣지
위 예시의 다이스 숫자는 0.00에서 100.00 사이로 나옵니다. “49.50 미만이면 승리”를 고르면 이길 확률은 49.5%이고, 이때 사이트가 주는 배당이 2.00배라면 기대 지급액은 0.495 × 2 = 0.99, 즉 1% 하우스 엣지입니다. 승리 조건을 “10.00 미만”으로 바꾸면 확률은 10%로 줄고 배당은 9.90배쯤으로 올라가는 식이라, 어떤 조건을 골라도 기대값은 같습니다. 검증은 이 숫자가 미리 정해진 대로 나왔는지만 확인해 줄 뿐, 1%라는 엣지를 없애 주지는 않습니다.
공유 시드, 해시 체인 방식도 있습니다
프로바블리 페어 게임이 모두 위와 같은 개인별 시드 방식을 쓰지는 않습니다. 여러 사람이 한 판에 함께 참여하는 크래시 게임은 다른 방식을 쓰는 경우가 많습니다.
- 공유 시드 방식: 개발사 Spribe는 Aviator에서 판마다 서버 시드를 만들고, 그 판에 먼저 베팅한 이용자들의 클라이언트 시드를 함께 섞어 결과를 만든다고 설명합니다. 지난 판 기록 화면에서 시드와 결과 해시를 확인할 수 있습니다.
- 해시 체인 방식: 운영자가 아주 긴 해시 사슬을 미리 만들어 두고, 마지막 해시를 먼저 공개한 뒤 사슬을 거꾸로 따라가며 한 판씩 씁니다. 각 판의 해시를 다시 SHA-256에 넣으면 바로 앞서 공개된 해시가 나와야 하므로, 판 순서와 결과를 중간에 바꿀 수 없습니다.
방식은 달라도 원리는 같습니다. 결과를 정하는 값을 미리 묶어 두었다가 나중에 공개해, 누구나 다시 계산할 수 있게 하는 것입니다.
검증할 때 자주 하는 실수
- 논스 시작 번호: 사이트에 따라 논스가 0부터 시작하기도 하고 1부터 시작하기도 합니다. 번호가 하나 어긋나면 전혀 다른 결과가 나옵니다.
- 해시와 시드 혼동: 베팅 전에 보이는 값은 서버 시드가 아니라 그 해시입니다. 계산에는 나중에 공개되는 원래 서버 시드를 넣어야 합니다.
- 공백과 대소문자: 클라이언트 시드를 복사할 때 앞뒤 공백이 붙거나 대소문자가 바뀌면 결과가 달라집니다.
- 반올림 방식: 공식이 버림인지 반올림인지에 따라 소수 둘째 자리가 달라질 수 있습니다.
- 커서: 블랙잭처럼 숫자가 8개보다 많이 필요한 게임은 커서를 올려 가며 해시를 추가로 만들어야 합니다.
검증 기록은 이렇게 남겨 두세요
나중에 결과를 다시 확인하려면 베팅할 때의 정보가 필요합니다. 베팅 번호, 서버 시드 해시, 클라이언트 시드, 논스, 베팅 금액과 결과를 화면 캡처나 메모로 남겨 두면, 시드를 교체한 뒤 공개된 서버 시드로 언제든 재계산할 수 있습니다. 사이트가 기록 화면을 바꾸거나 계정을 닫으면 이런 자료를 다시 구하기 어렵습니다.
다만 결과가 공식과 다르게 나왔다는 증거가 있어도, 해외 무허가 사이트를 상대로 바로잡아 줄 국내 절차는 없습니다. 운영사 고객센터와 라이선스 규제기관의 분쟁 절차가 사실상 전부입니다.
블록체인에서 난수를 만드는 방식
스마트 계약으로 돌아가는 탈중앙 카지노는 서버 시드 대신 블록체인 위에서 검증 가능한 난수를 쓰기도 합니다. 외부 난수 제공 서비스가 증명과 함께 난수를 넘기면, 계약이 그 증명을 확인한 뒤 결과를 정하는 식입니다. 운영자가 결과에 손대기 어렵다는 장점이 있지만, 계약 코드의 오류나 관리자 권한 같은 다른 위험이 생기며, 이용 기록이 공개 장부에 영구히 남는다는 점도 같습니다.
클라이언트 시드는 왜 바꿔야 할까
클라이언트 시드는 이용자가 결과에 손댈 수 있는 유일한 값입니다. 카지노가 정해 준 기본값을 그대로 쓰면 이론상 카지노가 두 시드를 다 알고 시작하는 셈입니다. 직접 정한 문자열로 바꾸면, 카지노는 서버 시드 해시를 공개한 뒤에 이용자의 값을 보고 결과를 맞춰 넣을 수 없습니다. 시드 쌍을 바꿀 때마다 이전 서버 시드가 공개되므로, 검증하고 싶은 베팅이 있다면 그 뒤에 시드를 교체하면 됩니다.
프로바블리 페어로도 알 수 없는 것
| 증명하는 것 | 증명하지 못하는 것 |
|---|---|
| 베팅 뒤에 결과가 바뀌지 않았다 | 하우스 엣지가 적정한지 |
| 공개된 공식대로 결과가 계산됐다 | 사이트가 출금을 해 줄지 |
| 이용자 시드가 결과에 반영됐다 | 라이선스가 유효한지, 운영사가 누구인지 |
| 외부 개발사 슬롯과 라이브 딜러 게임의 공정성 | |
| 한국에서 이용이 합법인지 |
특히 어디까지 적용되는지 잘 봐야 합니다. 이 방식은 대개 사이트가 직접 만든 다이스, 크래시, 플링코, 림보, 마인즈 같은 오리지널 게임에만 쓰입니다. 외부 개발사의 슬롯이나 라이브 딜러 바카라는 개발사의 난수 생성기와 시험기관 인증에 기대며, 이용자가 해시로 검증할 수 있는 구조가 아닙니다. “프로바블리 페어 카지노”라는 광고가 사이트의 모든 게임을 검증할 수 있다는 뜻은 아닙니다.
규제 시장의 공정성 검사와 뭐가 다를까
규제가 갖춰진 시장에서는 GLI나 eCOGRA 같은 시험기관이 난수 생성기와 게임의 이론상 환급률을 검사하고, 규제기관이 그 결과를 바탕으로 게임을 승인합니다. 이용자가 직접 계산할 수는 없지만, 제3자가 정기적으로 확인하고 문제가 생기면 규제기관이 개입한다는 장점이 있습니다. 프로바블리 페어는 이용자가 스스로 검증할 수 있다는 장점이 있지만, 뒤를 받쳐 줄 감독과 분쟁 해결 장치가 없습니다. 둘은 서로를 대신할 수 없습니다.
문 닫은 사이트가 남긴 교훈
프로바블리 페어를 앞세운 초기 비트코인 다이스 사이트 가운데 상당수는 이미 문을 닫았습니다. 대표적인 예로 PrimeDice는 2025년 8월 종료를 알리고 2025년 10월 8일 베팅을 멈췄습니다. 결과가 공정했는지와 별개로, 사이트가 사라지면 잔액과 기록을 지킬 방법은 운영사의 처리에 달려 있습니다. 검증 가능한 게임이라고 해서 사이트가 계속 운영되거나 내 돈이 안전하다는 보장은 없다는 것을 보여 주는 사례입니다.
코인 카지노 광고와 공정성 문구
“100% 공정”, “조작 불가능” 같은 광고 문구는 대개 프로바블리 페어가 적용된 자체 게임만 가리킵니다. 같은 사이트의 보너스 약관이나 출금 조항이 이용자에게 불리하다면, 게임 결과가 공정하다는 건 별 의미가 없습니다. 보너스 조건이 출금 거부의 사유가 되는 구조는 보너스 약관 해설에서, 코인 입출금 구조는 비트코인 입출금 설명에서 다룹니다.
마무리
프로바블리 페어는 “결과가 미리 정해져 있었고 바뀌지 않았나”라는 좁은 질문에만 답하는 도구입니다. 하우스 엣지, 출금, 라이선스, 그리고 한국에서의 법적 위험은 별개의 문제이며, 그 어느 것도 해시 계산으로 해결되지 않습니다. 처벌 조문은 한국 법률 정리에서, 코인 카지노 전반은 기본 가이드에서, 출금 동결로 이어지는 약관 조항은 KYC 없는 카지노 분석에서 확인할 수 있습니다. 도박 문제로 도움이 필요하면 국번 없이 1336에 전화하거나 도박 문제 도움 페이지를 확인하세요.
프로바블리 페어 FAQ
프로바블리 페어가 뭔가요?
카지노가 게임 결과를 베팅 뒤에 바꾸지 않았다는 사실을 이용자가 직접 확인할 수 있게 하는 방식입니다. 서버 시드의 해시를 먼저 공개하고, 나중에 서버 시드를 공개해 누구나 결과를 다시 계산할 수 있게 합니다.
서버 시드, 클라이언트 시드는 뭐예요?
서버 시드는 카지노가 정하는 비밀 값이고, 클라이언트 시드는 이용자가 정하거나 바꿀 수 있는 값입니다. 두 값과 베팅 순번인 논스를 HMAC-SHA256에 넣어 결과용 해시를 만듭니다.
논스는 뭔가요?
같은 시드 쌍으로 하는 몇 번째 베팅인지를 나타내는 번호입니다. 베팅할 때마다 1씩 늘어나므로 시드를 바꾸지 않아도 매번 다른 결과가 나옵니다.
프로바블리 페어면 믿을 만한 카지노인가요?
아닙니다. 결과가 바뀌지 않았다는 사실만 증명할 뿐, 출금 여부, 라이선스, 하우스 엣지의 적정성, 외부 개발사 게임의 공정성은 증명하지 않습니다. 한국에서 이용이 불법이라는 점도 그대로입니다.
슬롯도 프로바블리 페어로 검증되나요?
대부분은 아닙니다. 이 방식은 주로 사이트 자체 게임에 쓰이고, 외부 개발사 슬롯과 라이브 딜러 게임은 개발사의 난수 생성기와 시험기관 인증에 기댑니다.
클라이언트 시드, 꼭 바꿔야 하나요?
바꾸는 편이 검증의 의미를 살립니다. 직접 정한 값을 쓰면 카지노가 서버 시드 해시를 공개한 뒤 이용자 값에 맞춰 결과를 조정할 수 없습니다. 시드 쌍을 바꾸면 이전 서버 시드가 공개돼 지난 베팅을 검증할 수 있습니다.
크래시 게임도 같은 방식으로 검증하나요?
개인별 시드 방식을 쓰는 크래시도 있지만, 여러 이용자가 함께 하는 게임은 판마다 서버 시드와 참여자 시드를 섞는 공유 시드 방식이나, 미리 만든 해시 사슬을 거꾸로 쓰는 해시 체인 방식을 쓰기도 합니다.
계산 결과가 다르게 나오면 어떻게 하나요?
먼저 논스 시작 번호, 시드 복사 오류, 반올림 방식을 다시 확인합니다. 그래도 다르다면 베팅 번호와 시드 정보를 근거로 운영사에 문의할 수 있지만, 해외 무허가 사이트를 상대로 이를 바로잡을 국내 절차는 없습니다.
해시를 거꾸로 풀어 서버 시드를 알아낼 수는 없나요?
SHA-256은 결과로부터 입력을 거꾸로 알아낼 수 없도록 설계된 함수입니다. 그래서 카지노가 서버 시드의 해시를 미리 공개해도 이용자는 서버 시드를 알 수 없고, 카지노는 나중에 다른 시드를 내밀 수 없습니다.
사이트 검증 도구만 써도 되나요?
가능하지만, 독립적인 도구로 한 번 더 계산하는 편이 낫습니다. 프로그래밍 언어의 표준 라이브러리로 HMAC-SHA256을 계산하고 공개된 공식을 적용하면 같은 결과가 나와야 합니다.
출처
- Stake: provably fair implementation (HMAC-SHA256, server seed, client seed, nonce, cursor)
- Stake: provably fair conversions (bytes to floats)
- Stake: provably fair game events (dice, roulette, limbo formulas)
- Spribe: Aviator (provably fair round seeds)
- bustabit (public hash chain)
- NIST FIPS 180-4: Secure Hash Standard (SHA-256)
- RFC 2104: HMAC
- Python documentation: hmac module
- Node.js crypto.createHmac documentation
- Gaming Laboratories International (GLI)
- eCOGRA
- PrimeDice closure discussed on Bitcointalk (Aug 2025; betting ended 8 Oct 2025)
- 국가법령정보센터: 형법 제246조
- 한국도박문제예방치유원: 헬프라인 1336