직접 공정성 확인하기
사이트가 컨트랙트에 대해 말하는 모든 것은 네트워크의 공개 데이터와 대조할 수 있습니다. 아래는 가장 간단한 것(2분)부터 가장 깊은 것(코드 빌드)까지의 확인 방법입니다. 대부분은 프로그래밍이 필요 없습니다.
확인의 원리
사이트는 위조되거나 틀릴 수 있지만 블록체인의 기록은 그렇지 않습니다. 그러므로 프로젝트 사이트가 아니라 네트워크 익스플로러에서 확인하세요. 블록체인의 내용을 보여 주는 독립 사이트(Solscan, Solana Explorer, SolanaFM 등)입니다. 남이 보낸 메시지의 링크가 아니라 직접 주소를 입력해 여세요.
확인에는 두 가지 주소가 필요합니다: 프로그램(컨트랙트)과 토큰. '보안' 페이지에 표시됩니다. 최소 두 곳 이상의 독립적인 출처(저장소, 공식 채널)에서 추가로 대조하세요. 주소가 서로 다르다면 누군가 속이려는 것입니다.
빠른 확인(2–10분)
| 확인할 것 | 보는 곳 | 정상 상태 | 다르다면 |
|---|---|---|---|
| 1. 새 토큰을 찍어 낼 수 있는가 | 익스플로러의 토큰 페이지, Mint Authority 필드 | 비어 있음(회수됨) | 그 주소의 주인은 토큰을 얼마든지 발행해 보유분의 가치를 떨어뜨릴 수 있습니다. |
| 2. 토큰을 동결할 수 있는가 | 같은 페이지, Freeze Authority 필드 | 꽝 | 소유자가 내 지갑을 포함해 어느 지갑이든 동결할 수 있습니다. |
| 3. 누가 코드를 바꿀 수 있는가 | 프로그램 페이지, Upgrade Authority 필드 | 비어 있음(코드 동결) 또는 업데이트에 지연이 걸린 멀티시그 주소 | 일반 주소 하나라면 소유자가 언제든 다른 규칙을 올릴 수 있다는 뜻입니다. |
| 4. 토큰 총 발행량 | 토큰 페이지: Supply | 100,000,000,000 이하이며 소각으로만 줄어듦 | 더 많다면 발행량이 늘어났다는 뜻입니다. |
| 5. 토큰이 일치하는가 | 내 지갑의 토큰 주소와 '보안' 페이지의 주소 비교 | 주소가 글자 단위로 동일 | 진짜 FAIRDRUM이 아닙니다. 구매도 입금도 하지 마세요. |
| 6. 보관소에 토큰이 충분한가 | '보안' 페이지의 보관소 주소와 토큰 잔액, '경제 구조'의 적립금 액수 | 보관소 잔액이 적립금 합계(그리고 플레이어들의 게임 잔액)보다 적지 않음 | 컨트랙트는 항상 토큰으로 뒷받침되어야 합니다. 차이가 난다면 심각한 신호입니다. |
'보안' 페이지 상단의 표는 같은 필드를 네트워크에서 직접 읽어 ✔ 또는 ⚠로 표시하지만, 그것만 믿지 말고 한 번은 직접 대조하세요.
내 스핀 확인하기
모든 스핀은 네트워크에 기록을 남기며, 화면의 결과를 그 기록과 대조할 수 있습니다.
트랜잭션을 찾으세요
스핀 후 버튼 아래에 '트랜잭션' 링크가 나타납니다. 익스플로러의 기록을 엽니다. 또는 익스플로러에서 내 지갑 기록을 열고 FAIRDRUM 프로그램이 포함된 트랜잭션을 고르세요.
정상 상태: 상태가 Success이고 명령 목록이 보입니다.
두 쌍의 호출을 찾으세요
첫 번째 트랜잭션에는 Switchboard 호출(난수 요청, commit)과 FAIRDRUM 프로그램의
spin_commit호출(베팅)이 있습니다. 두 번째에는 Switchboard 호출(공개, reveal)과spin_settle(정산)이 있습니다. 익스플로러마다 이름 표기가 조금씩 다릅니다(SpinCommit, spinCommit).순서를 비교하세요
베팅이 난수 공개보다 먼저 기록되었습니다. 첫 트랜잭션의 블록 번호(Slot)가 두 번째보다 작습니다. 이는 베팅 시점에 본인도 프로젝트도 결과를 몰랐다는 뜻입니다.
두 번째 트랜잭션의 로그(Logs)를 보세요
거기에는 스핀 수, 상금, 미니 잭팟·잭팟·슈퍼 잭팟 당첨이 기록된
SpinSettled이벤트가 있습니다. 휠이 보여 준 것과 같은 숫자입니다.난수 계정의 소유자를 확인하세요
트랜잭션에 지정된 난수 계정은 Switchboard 프로그램 소유여야 합니다. 컨트랙트는 다른 계정을 스스로 거부하지만 직접 확인해 볼 만합니다. 계정을 열고 Owner 필드를 보세요.
깊은 확인
코드를 빌드해 해시 비교
프로젝트의 GitHub 저장소(공개 후 링크가 올라옵니다)를 받아 재현 가능 모드로 프로그램을 빌드하고(anchor build --verifiable) 해시를 네트워크의 것과 비교하세요(solana-verify). 일치한다면 네트워크에 바로 이 공개 코드가 올라가 있다는 뜻입니다.
상수 읽기
게임의 모든 수치는 consts.rs 한 파일에 모여 있습니다: 분배 비율, 확률, 상금 사다리, 수수료, 기한. 사이트의 표는 바로 이 파일에서 생성되므로 사이트와 컨트랙트 사이에 차이가 있어서는 안 됩니다.
테스트 실행
저장소에는 규칙·계산 테스트(cargo test)와 클라이언트 테스트(npm test)가 있습니다. 예를 들어 모든 풀과 잔액의 합이 보관소의 토큰을 넘지 않는지 검사합니다.
결과 산출 방식 분석
컨트랙트는 공개된 32바이트 난수에서 SHA-256으로 숫자를 얻습니다. 메인 휠은 SHA-256("FDRM-M" + 난수 + 블록 번호) 블록에서 실행된 스핀마다 4바이트(little-endian)씩 가져옵니다. 골드 휠은 SHA-256("FDRM-G" + 난수 + 실행된 스핀 번호)입니다. 숫자는 232 분율의 기준값과 비교되며, 기준값 자체는 정산 시점의 주간 규모와 적립금 크기에 따라 달라지므로 과거 스핀을 완전히 재계산하려면 해당 슬롯의 프로그램 상태가 함께 필요합니다. 공식은 math.rs와 engine.rs에 있습니다.
기간별 로그 읽기
누구나 일정 기간의 모든 SpinSettled 이벤트를 네트워크에서 내려받아 골드 빈도와 적립금 크기를 직접 셀 수 있습니다. '확률'과 비교해 보세요. 스핀 수가 적으면 편차가 매우 큽니다. 1% 확률을 보려면 수천 번의 스핀이 필요합니다.
확인할 수 없는 것
- 오라클의 정직성. 난수는 Switchboard 네트워크에서 옵니다. 컨트랙트는 값이 올바른 계정에서 왔고 베팅 후에 공개되었는지 검사하지만, 오라클 노드들이 담합하지 않았는지는 검사할 수 없습니다. 이것은 외부 의존성입니다.
- 코드에 오류가 없다는 것. 테스트와 공개 코드는 신뢰를 높이지만 독립 감사를 대신할 수 없습니다. 감사 링크가 올라오기 전까지는 감사가 없는 것입니다.
- 미래. 업데이트 권한이 회수되기 전까지는 새 버전으로 규칙이 바뀔 수 있습니다. 프로그램 업데이트 트랜잭션을 지켜보세요.
- 관리자가 컨트랙트 밖에서 하는 일. 관리자 토큰의 매도, 마케팅, 상장 결정은 컨트랙트가 통제하지 않습니다. 홍보 기금의 지급은 공개되지만 '어디에 썼는지'는 컨트랙트가 검사하지 않습니다.