문서
FAIRDRUM 문서
사이트가 어떻게 구성되어 있는지에 관한 모든 내용을 여기에 모았습니다. 무엇부터 시작하는지, 라운드가 어떻게 계산되는지, 내 SOL이 어디에 있는지, 그리고 이 모든 것이 작동하도록 무엇을 했는지입니다. 각 항목은 자세한 내용을 담은 별도의 페이지입니다.
플레이어용: 무엇부터 시작할까
게임의 구조
내 SOL과 보호
프로젝트의 구성 요소
- Solana 네트워크의 스마트 컨트랙트. 베팅을 받고, 게임 잔액과 저금통을 보관하고, 라운드 결과와 지급액을 계산합니다. 사이트는 지급액을 계산하지 않으며 바꿀 수도 없습니다.
- 사이트는 정적 페이지이며, 플레이어 데이터베이스를 가진 서버가 없습니다. 컨트랙트를 읽고 트랜잭션을 준비하며, 그 트랜잭션에는 내 지갑이 서명합니다.
- 플랫폼의 지킴이는 별도의 서버에서 실행되는 프로그램입니다. 컨트랙트가 라운드를 정산할 수 있도록 라운드 비밀값을 공개하고, 전용 충전 주소에서 들어온 전송을 잔액에 반영하며, 금고의 금액이 플레이어에 대한 지급 의무보다 적어지지 않는지 지켜봅니다.
사이트가 지금의 상태에 이르기까지 한 일
아래 수치는 2026년 11월 13일 기준 소스 코드와 점검 기록으로 집계했습니다.
컨트랙트
Rust 코드 약 2100줄, 명령 27개. 계산과 회계에 대한 자동 테스트 37개.
사이트
게임 16개, 페이지 37개, 언어 14개 — 완성된 페이지는 모두 519개. 코드 약 10000줄, 언어마다 문구 약 1600개.
코드 점검
내부 코드 점검 7회(발견된 문제는 수정함)와 사이트 자동 테스트 83개. 독립적인 외부 감사는 아직 없었습니다.
네트워크 복제본에서의 리허설
Solana 네트워크의 로컬 복제본에서: 라운드 점검 117건(비밀값 위조, 베팅 반환, 비밀값 루트 변경)과 지킴이 점검 28건(중단, 복제본 두 개 동시 실행, 남의 비밀값 파일).
모든 게임을 실제로 플레이
게임 16개 모두를 브라우저에서 실제 컨트랙트로 플레이했습니다. 라운드가 끝날 때마다 사이트의 잔액을 컨트랙트의 잔액과 대조했습니다. 두 가지 로그인 방법, 거래소에서의 충전, 출금도 점검했습니다.
모든 페이지
모든 언어의 모든 페이지를 휴대폰과 컴퓨터에서 열어 보았습니다. 총 1008회 열었으며 오류, 빈 곳, 가로 스크롤이 없었습니다.
프로젝트를 바꾼 결정
- 외부 오라클 대신 자체 공정 추첨. 측정 결과 오라클이 테스트넷과 메인넷에서 같은 숫자를 반환했고, 이는 라운드의 숫자를 미리 알아낼 수 있었다는 뜻입니다. 오라클은 제거했습니다. 이제 라운드의 숫자는 베팅 전에 기록된 비밀값과 베팅 블록의 해시로 만들어집니다.
- 멈춘 라운드 대신 베팅 반환. 플랫폼이 기한 내에 라운드를 정산하지 않으면 컨트랙트가 베팅을 전액 반환하고, 그 반환은 공개 카운터에 기록됩니다.
- 전용 충전 주소. 플레이어마다 컨트랙트에 자신의 주소가 있습니다. 지갑에서 서명하지 않고 거래소에서 SOL을 보낼 수 있습니다.
- 내 지갑 없이 로그인. 사이트가 플레이어의 브라우저에 지갑을 만듭니다. 키는 사이트에도 플랫폼에도 전달되지 않습니다.
- 사이트 서버에는 키가 없습니다. 플랫폼의 키는 컨트랙트용 별도 서버에만 있습니다.