Skip to content

netronsdev/arkcity

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ArkCity Fairness Verification (아크시티 공정성 검증)

아크시티 게임의 뽑기(가챠), 합성, 거래 기록이 공정하게 운영되고 있는지 누구나 독립적으로 검증할 수 있는 오픈소스 코드입니다.

이 레포지토리의 목적

검증 항목 방법
뽑기 확률 서버가 공개한 확률표와 이 코드의 확률표가 동일한지 비교
뽑기 결과 seed + nonce를 입력하면 결과를 재현 → 서버 결과와 대조
시드 무결성 Commit-Reveal 방식으로 서버가 결과를 미리 조작할 수 없음을 증명
거래 기록 Merkle Tree + Polygon 블록체인 앵커링으로 기록 변조 불가
확률표 변조 확률표 해시가 Polygon에 기록됨 → 서버가 몰래 확률을 바꾸면 해시 불일치

구조

gacha_engine.py   ← 서버에서 실제 사용하는 뽑기 엔진 (동일 사본)
merkle_tree.py    ← 거래 기록 Merkle Tree 검증 로직
verify.py         ← 커맨드라인 검증 도구

사용법

1. 확률표 확인

python verify.py --rate-hash

출력 예시:

  ArkCity 확률표
  버전: v1.0
  해시: a1b2c3d4...

  [뽑기 확률]
    일반    92.869%
    고급     6.633%
    희귀     0.474%
    영웅     0.024%
    전설    합성 전용 (뽑기 불가)

  [합성 성공률]
    일반→고급    18.0%
    고급→희귀    18.0%
    희귀→영웅    11.0%
    영웅→전설    11.0%
    천장:       20회 실패 시 천장 수령 가능

2. 뽑기 결과 검증

대시보드(https://netrons.co.kr/game/dashboard)의 소환검증 탭에서 seed와 nonce를 확인한 후:

python verify.py --seed <서버시드> --nonce <클라이언트논스>

결과가 대시보드에 표시된 등급/캐릭터와 일치하면 공정한 뽑기입니다.

3. 시드 해시 검증

서버가 뽑기 전에 커밋한 해시와 실제 시드가 일치하는지:

python verify.py --seed-hash <커밋해시> --seed <서버시드>

Commit-Reveal 뽑기란?

1. 서버가 시드(seed)를 생성하고, SHA-256 해시만 클라이언트에 전달 (커밋)
2. 클라이언트가 논스(nonce)를 생성하여 서버에 전달
3. 서버가 seed + nonce를 결합하여 난수 생성 → 등급/캐릭터 결정 (리빌)
4. seed를 공개하여 클라이언트가 결과를 검증

서버는 커밋 시점에 이미 시드를 확정했으므로, 클라이언트의 논스를 본 후 시드를 바꿀 수 없습니다. 클라이언트의 논스는 서버가 예측할 수 없으므로, 서버가 원하는 결과를 미리 만들 수 없습니다.

Polygon 블록체인 앵커링

  • 10분마다 모든 거래 기록의 Merkle Root를 Polygon 메인넷에 기록
  • 앵커링 지갑: 대시보드에서 확인
  • 기록된 트랜잭션은 Polygonscan에서 누구나 확인 가능
  • 트랜잭션의 Input Data와 대시보드의 Root Hash가 일치하면 기록이 원본 그대로임

확률표 해시 검증

서버는 확률표의 SHA-256 해시를 Polygon에 주기적으로 기록합니다.

  1. python verify.py --rate-hash로 이 코드의 확률표 해시를 확인
  2. 대시보드 블록체인 탭에서 기록된 확률표 해시 확인
  3. 두 값이 일치하면 → 서버가 이 코드와 동일한 확률표를 사용 중

라이선스

MIT License — 자유롭게 사용, 수정, 배포 가능

About

arkcity

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages