Skip to main content
Crash 라운드의 배수는 베팅이 마감되기 전에 결정되며 이후에는 바꿀 수 없습니다. 백엔드는 베팅이 열리기 전에 무작위 비밀값의 SHA-256 해시를 온체인에 게시하고, 라운드가 시작될 때 프로그램이 Solana 슬롯 해시를 섞으며, 정산 시 비밀값이 공개되므로 누구나 크래시 지점을 다시 계산해 확인할 수 있습니다. 이 페이지에서는 모든 Crash 라운드 뒤에 있는 정확한 메커니즘, 즉 무엇이 커밋되는지, 결과가 언제 확정되는지, 정확한 공식, 그리고 이 방식의 솔직한 한계를 설명합니다. 아직 읽지 않으셨다면 커밋-리빌을 쉬운 말로 설명하는 공정성 검증 개요를 먼저 읽어 보세요.

Crash 라운드 동안 온체인에서는 무슨 일이 일어나나요?

모든 Crash 라운드는 세 개의 온체인 트랜잭션으로 이루어지며, 순서는 다음과 같습니다.
  1. 커밋: 베팅이 열리기 전에 백엔드가 무작위 32바이트 비밀값을 생성하고 그 SHA-256 해시를 온체인에 게시합니다(start_new_round 명령어). 이것이 커밋이며, 이 순간부터 오직 그 비밀값만 라운드를 정산할 수 있습니다. 커밋은 트랜잭션의 CrashRoundPrepared 이벤트에 공개됩니다.
  2. 베팅: 플레이어들이 베팅합니다. 비밀값은 숨겨진 채로 남아 있으며, 커밋이 있으므로 바꿔치기할 수 없습니다.
  3. 라운드 시작 / 엔트로피 기록: 라운드가 시작되면(start_game 명령어) 프로그램은 Solana의 SlotHashes sysvar에서 가장 최근 슬롯 해시를 읽어 라운드에 저장합니다. 앱에서는 이 값을 라운드의 블록 해시라고 부릅니다. 이제 크래시 지점은 완전히 결정됩니다(저장된 슬롯 해시와 커밋된 비밀값만으로 정해지는 순수 함수이기 때문입니다). 다만 비밀값을 모르는 사람은 아직 계산할 수 없습니다. 이 값은 CrashGameStarted 이벤트에 공개됩니다.
  4. 라운드 진행: 배수가 올라가고 플레이어들이 캐시아웃합니다.
  5. 공개: 백엔드가 비밀값을 제출합니다(crash 명령어). 프로그램은 sha256(secret)이 커밋과 같은지 온체인에서 검증하고(일치하지 않으면 트랜잭션이 실패합니다), 크래시 지점을 직접 계산한 뒤 라운드를 확정합니다. CrashRoundFinalized 이벤트에 비밀값, 슬롯 해시, 최종 크래시 지점이 게시됩니다.

크래시 지점의 정확한 공식은 무엇인가요?

크래시 지점은 정확히 다음과 같이 도출됩니다(온체인 프로그램이 실행하는 산술 그대로이며, 정수 연산이므로 예상치 못한 반올림이 없습니다).
다시 계산할 때 중요한 세부 사항은 다음과 같습니다.
  • 연결 순서는 blockhash가 먼저, 그다음 secret입니다.
  • X는 SHA-256 출력의 처음 4바이트를 빅 엔디언으로 읽은 값입니다.
  • 나눗셈은 모두 내림(정수) 나눗셈입니다.
  • max(10000, …) 하한 덕분에 배수는 절대 1.00x 아래로 내려가지 않으며, X의 상한은 분모가 터무니없이 작아지는 것을 막습니다.

계산 예시

X = 0xABCD1234(2,882,343,476)이고 현재 하우스 엣지 1.5%(edge_bps = 150)일 때:

분포는 어떤 모양인가요?

이 공식은 균등 분포인 X를 전형적인 크래시 곡선으로 변환합니다. 라운드가 최소 배수 m에 도달할 확률은 대략 다음과 같습니다.
현재 하우스 엣지 1.5% 기준으로 약 49.25%의 라운드가 2.00x에, 약 9.85%가 10x에 도달하며, 약 1.5%의 라운드는 1.00x에서 즉시 크래시가 납니다(하우스 엣지가 바로 여기에 있습니다). 각 라운드에 적용되는 하우스 엣지는 공개 시점에 온체인에 설정된 값이며, 현재 값은 수수료 및 한도에 나와 있습니다.

보장되는 것과 보장되지 않는 것

프로그램이 강제하는 것:
  • 커밋이 온체인에 올라간 뒤에는 운영자가 라운드의 비밀값을 바꿀 수 없습니다. 해시가 일치하지 않는 비밀값으로는 공개 트랜잭션이 실패합니다.
  • 라운드가 시작되면(슬롯 해시 저장) 크래시 지점은 확정됩니다. 일찍 캐시아웃하든, 늦게 하든, 많은 플레이어가 한꺼번에 하든 아무것도 바뀌지 않습니다. 결과는 배수가 올라가기 시작하기 전에 이미 정해졌습니다.
  • 크래시 지점은 백엔드가 보고하는 것이 아니라 프로그램이 계산합니다. 잘못된 값은 온체인에 기록될 수 없습니다.
  • 검증에 필요한 모든 것(커밋, 슬롯 해시, 비밀값, 최종 크래시 지점)이 온체인 이벤트에 영구적으로 게시됩니다.
솔직한 주의 사항 (이 방식은 VRF가 아니라 커밋-리빌입니다):
  • 시작 타이밍. 운영자는 라운드가 시작되기 전에 비밀값을 알고 있으며, 백엔드가 라운드 시작 트랜잭션을 언제 제출할지 정합니다. 최근 슬롯 해시는 공개되어 있으므로, 이론적으로는 후보 슬롯마다 나올 배수를 미리 계산하고 시작 시점을 조절해 어떤 슬롯 해시가 기록될지에 영향을 줄 수 있습니다. 이 방식은 이를 막지는 못하지만 관찰할 수 있게 만듭니다. 라운드 시작 타이밍은 공개되어 있고, 체계적인 편향이 있다면 누구나 대량으로 다시 계산할 수 있는 공개된 크래시 지점 통계에 드러납니다.
  • 취소. 라운드가 시작된 뒤에는 운영자가 플레이어보다 먼저 결과를 알게 되며, 불리한 라운드를 공개하는 대신 취소할 수도 있습니다. 여기에는 두 가지 엄격한 제한이 있습니다. 취소하면 모든 베팅액이 전액 환불되며(프로그램에는 몰수 경로가 없습니다), 모든 취소는 공개 이벤트를 발생시킵니다. 취소 빈도가 곧 온체인 신호입니다. 취소는 비밀값을 잃어버린 경우(예: 커밋과 공개 사이에 백엔드가 멈춘 경우)를 위한 복구 경로로 존재하며, 사실상 사용되지 않을 것으로 예상됩니다.

Crash 라운드는 어떻게 검증하나요?

앱에서 종료된 각 라운드의 상세 정보에는 공개된 비밀값과 블록 해시가 표시되며, 세 트랜잭션 모두의 링크와 배수를 대신 다시 계산해 주는 공정성 검증 도구가 제공됩니다. 크래시 지점을 직접 다시 계산하는 짧은 스크립트를 포함한 전체 단계별 안내는 라운드 검증을 참고하세요. 게임 자체를 플레이하는 방법(캐시아웃, 베팅 시간, 한도)은 Crash 게임 가이드를 참고하세요.