충돌 게임의 결과 확인: 알고리즘, 보안
1) 검증 목적: 정확히 확인한 내용
불확실성: 연산자는 내기 후 (서버 시드 해시의 커밋으로 인해) 결과를 변경할 수 없습니다.
재현성: 입력하면 게임에서 보여준 것과 동일한 승수를 얻을 수 있습니다.
절차 무결성: 메시지 형식, 증분 'nonce', 반올림 규칙 및 "집 가장자리" 는 사양에 따라 엄격하게 적용됩니다.
2) 검증이 불가능한 데이터
1. 서버 씨앗 해시 (커밋) - 해당 '서버 씨앗' 을 사용하기 전에 게시됩니다.
2. 서버 씨앗 (기간이 끝날 때 공개).
3. 클라이언트 씨앗 (씨앗; 직접 설정하거나 플랫폼이 생성합니다).
4. Nonce (현재 '서버 씨앗' 내의 베팅 카운터).
5. 해시 알고리즘 (일반적으로 'HMAC-ș256' 또는 'Ś-256').
6. 메시지 형식 (예: '": "'), 정확한 구분 기호/케이스/인코딩.
7. 해시 매핑 공식 → 승수 (및 반올림/최소 규칙).
3) 검증 알고리즘 (7 단계)
1. 커밋을 비교하십시오: 'Ś-256 (ServerSeed)' 을 세고 게시 된 'ServerSeedHash' 와 비교하십시오.
2. 메시지 수집: 엄격하게 플랫폼 형식 (예: 'msg = ClientSeed + ":" + Nonce').
3. 라운드 해시 계산:
4) 의사 코드 (파이썬/JS에 적합)
"'파이썬
(PHP 3 = 3.0.6, PHP 4)
hmac, hashlib, 수학 가져 오기
def round _ hash (server _ seed: bytes, client _ seed: str, nonce: int) -> bytes:
def take _ u _ from _ hash (h: bytes, k _ bits = 52) -> 플로트:
(PHP 3 = 3.0.6, PHP 4)
스튜브! 게임 문서에서 공식으로 바꾸기
예를 들어 때때로 형식의 변환이 사용됩니다. 충돌 = 바닥 ((const/( r + 1)) 100 )/100
및/또는 "집 가장자리" 는 드문 강제 1입니다. 00 ×. 실제 검사에서이 스터브를 사용하지 마십시오.
최대 반환 (1. 00, 라운드 (1. 0/max (1e-12, 1. 0 - u), 2))
def 확인 (server _ seed _ hex, server _ seed _ hash _ hex, client _ seed, nonce, show _ multiply):
중요: 'stub _ mapping' 대신 플랫폼의 공정성 섹션에서 정확한 공식을 적용하십시오. 그렇지 않으면 수표가 잘못됩니다.
5) 특별한 경우와 함정
한 라운드에서 두 번의 베팅: 많은 플랫폼은 같은 라운드에 배치 되더라도 각 베팅에 대해 'nonce' 증분이 있습니다 (예: bet A → 'nonce = 42', bet B → 'nonce = 43'). 역사별로 확인하십시오.
'클라이언트 씨앗' 변경: 시드를 변경할 때 일반적으로 'nonce' 가 재설정됩니다 (또는 새 스트림이 시작됩니다). 플랫폼의 규칙을 비교하십시오.
배치 '서버 시드': 하나의 '서버 시드' 가 일련의 라운드에서 작동하면 새로운 커밋이 게시됩니다. 다른 시대의 씨앗을 혼동하지 마십시오.
반올림/최소: 두 번째 부호의 불일치-경우의 90% 에서 반올림/최소 규칙의 오류 (예: 고정 1) 특별한 조건에서 00 ×).
인코딩/공간: 여분의 공간/라인 피드, 잘못된 경우, 논 -8 중단 체크.
6) 빠른 라운드 확인 목록
1. 'Ś-256 (ServerSeed)' 은 출판 된 'ServerSeedHash' 와 일치합니까?
2. '메시지' 와 'nonce' 형식이 올바르게 형성되어 있습니까?
3. 사양에 따라 엄격하게 적용되는 알고리즘 ('HMAC-ș256 '/' Ś-256') 및 키/필드 순서는?
4. 매핑과 반올림이 문서와 동일합니까?
5. 특별한 경우 (희귀 한 "인스턴트 충돌", 최소 1) 여부 00 ×, 마우스 가드)?
6. 결과는 페니에 대한 게임의 역사와 일치합니까?
7) 제어 자동화 (실습)
로그: 'client _ seed', 시퀀스 'nonce', 타임 스탬프, 최종 승수를 유지하십시오.
샘플링: '서버 씨앗' 의 "포효" 후 무작위 20-50 라운드를 통해 스크립트를 실행하십시오. 일치 비율을 수정하십시오 (100% 여야합니다).
회귀: 게임/제공자 버전을 변경할 때 동일한 세트를 실행하십시오.
내보내기: 소스가있는 상점 CS/JSON-이것이 "감사 트랙" 입니다.
8) 안전: 실수를하지 않고 자신을 속이는 방법
로컬/오프라인 확인: 운영자의 웹 유효성 검사기에만 의존하지 마십시오. 자신의 스크립트를 유지하십시오
완전한 데이터 패키지없이 수식/형식 없음-확인 없이는 라운드를 신뢰하지 마십시오.
강력한 '클라이언트 씨앗': 무작위로 물어보고 정기적으로 변경하십시오 (이것은 RTP를 증가시키지는 않지만 재현성에 대한 질문은 제외합니다).
TLS/세션: HTTPS 전용 로그인, 2FA, 기록 로그인 및 업로드 추적.
다른 사람에게 '서버 씨앗' 을 제공하지 마십시오. 기간 후에 운영자가 게시합니다. 귀하의 임무는 사전에 "확인" 하지 않고 확인하는 것입니다.
9) 전형적인 "신인 오류"
현장 주문 혼합 ('ClientSeed: Nonce' 대신 'Nonce: ClientSeed').
하나 대신 0에서 'nonce' 를 계산하십시오 (또는 그 반대).
플랫폼의 전체 라운드 (전역 nonce) 의 해시가 사용되었지만 개인 'nonce' 가 필요합니다.
뱅커의 반올림 대 바닥/ceil.
아직 노출되지 않은 '서버 씨앗' 에 대해 확인하십시오.
10) 운영자의 "적색 깃발"
기간이 시작되기 전에 공개 서버 종자 해시가 없습니다.
클라이언트 씨앗을 설정하거나 nonce를 볼 수 없습니다.
공개 승수 해시 매핑 공식은 없습니다.
라운드 이력은 조정을위한 최소한의 데이터를 제공하지 않습니다.
형식과 알고리즘은 통지/사양 아카이브없이 변경되었습니다.
11) 호주 상황 (AU)
통화: AUD에서 승/베팅 기록을 유지하고 스토리 업로드를 유지하십시오 (지원, 논란의 여지가있는 문제).
책임있는 플레이 (RG): 예금/시간 제한, 일시 정지 및 자체 제외-선의의 앱에서 사용 가능; 그것들을 사용하십시오.
플랫폼 관행: 선의의 운영자를 위해 Fairness/Fairly Fair 블록에는 완전한 설명과 검증 예가 포함되어 있습니다. 세부 사항이 부족하면 다른 서비스를 선택해야합니다.
12) 결론
Crash 게임의 결과를 확인하는 것은 명확한 절차입니다
'서버 씨앗 해시' 커밋 검증,
'서버 시드', '클라이언트 시드', '노스' 및 알고리즘으로 '라운드 해시' 복원,
게시 된 매핑 공식 및 반올림 규칙 적용
리뷰와 게임 기록에서 동일한 승수.
자신의 스크립트, 로그 입력 및 정기적으로 임의의 라운드를 확인하십시오. 그래서 당신은 정직을 말이 아니라 수학적으로 확인합니다.
불확실성: 연산자는 내기 후 (서버 시드 해시의 커밋으로 인해) 결과를 변경할 수 없습니다.
재현성: 입력하면 게임에서 보여준 것과 동일한 승수를 얻을 수 있습니다.
절차 무결성: 메시지 형식, 증분 'nonce', 반올림 규칙 및 "집 가장자리" 는 사양에 따라 엄격하게 적용됩니다.
2) 검증이 불가능한 데이터
1. 서버 씨앗 해시 (커밋) - 해당 '서버 씨앗' 을 사용하기 전에 게시됩니다.
2. 서버 씨앗 (기간이 끝날 때 공개).
3. 클라이언트 씨앗 (씨앗; 직접 설정하거나 플랫폼이 생성합니다).
4. Nonce (현재 '서버 씨앗' 내의 베팅 카운터).
5. 해시 알고리즘 (일반적으로 'HMAC-ș256' 또는 'Ś-256').
6. 메시지 형식 (예: '"
7. 해시 매핑 공식 → 승수 (및 반올림/최소 규칙).
💡전체 사양은 운영자의 공정성/공정성 섹션에 있어야합니다. 무언가가 없으면 이것은 적기입니다 (§ 10 참조).
3) 검증 알고리즘 (7 단계)
1. 커밋을 비교하십시오: 'Ś-256 (ServerSeed)' 을 세고 게시 된 'ServerSeedHash' 와 비교하십시오.
2. 메시지 수집: 엄격하게 플랫폼 형식 (예: 'msg = ClientSeed + ":" + Nonce').
3. 라운드 해시 계산:
- 'HMAC-ș256': 'RoundHash = HMAC _ ș256 (key = ServerSeed, msg = 메시지)';
'Ś-256': 'RoundHash = ș256 (ServerSeed | 메시지)' 또는 사양에 지정된대로. |
---|---|
4. 임의성 추출: 첫 번째 'k' 비트 (종종 52) → 정수 'r', 'u = r/2 ² k' 를 사용하십시오. | |
5. 매핑 공식을 적용하십시오: 'u' 를 승수로 변환하십시오 (하우스 에지/특수 케이스는 게임 문서에 따라 고려됩니다). | |
6. 게임 규칙에 따라 반올림 (예: 최대 2 자, 최소 1 명). 00 × 등). | |
7. 역사상 라운드 합계와 비교하십시오. 우연의 일치 = 올바른 정직. |
4) 의사 코드 (파이썬/JS에 적합)
"'파이썬
(PHP 3 = 3.0.6, PHP 4)
hmac, hashlib, 수학 가져 오기
def round _ hash (server _ seed: bytes, client _ seed: str, nonce: int) -> bytes:
- 메시지 = f "{client _ seed}: {nonce}". 인코딩 ("utf-8") 형식은 사양을 참조하십시오
- hmac 반환. (PHP 3 = 3.0.6, PHP 4) sha256). 소화 () 또는 hashlib. sha256 (...)
def take _ u _ from _ hash (h: bytes, k _ bits = 52) -> 플로트:
- 우리는 전체 r로 k 가장 중요한 비트를 취합니다
- r = int. from _ bytes (h, "big")>> (256 - k _ bits)
- return r/( 1 <
(PHP 3 = 3.0.6, PHP 4)
스튜브! 게임 문서에서 공식으로 바꾸기
예를 들어 때때로 형식의 변환이 사용됩니다. 충돌 = 바닥 ((const/( r + 1)) 100 )/100
및/또는 "집 가장자리" 는 드문 강제 1입니다. 00 ×. 실제 검사에서이 스터브를 사용하지 마십시오.
최대 반환 (1. 00, 라운드 (1. 0/max (1e-12, 1. 0 - u), 2))
def 확인 (server _ seed _ hex, server _ seed _ hash _ hex, client _ seed, nonce, show _ multiply):
- 서버 _ 씨 = 바이트. fromhex (server _ seed _ hex)
- 1) 커밋
- hashlib를 주장하십시오. sha256 (server _ seed). hexdigest () = = server _ seed _ hash _ hex. 아래쪽 ()
- 2-3) 라운드 해시
- h = round _ hash (서버 _ seed, 클라이언트 _ seed, nonce)
- 4) u
- (PHP 3 = 3.0.6, PHP 4)
- 5-6) 매핑 + 반올림
- calc _ mult = stub _ mapping (u)
- 7) 비교
- 복귀 복근 (calc _ mult-show _ multiply) <1e-9
- ```
중요: 'stub _ mapping' 대신 플랫폼의 공정성 섹션에서 정확한 공식을 적용하십시오. 그렇지 않으면 수표가 잘못됩니다.
5) 특별한 경우와 함정
한 라운드에서 두 번의 베팅: 많은 플랫폼은 같은 라운드에 배치 되더라도 각 베팅에 대해 'nonce' 증분이 있습니다 (예: bet A → 'nonce = 42', bet B → 'nonce = 43'). 역사별로 확인하십시오.
'클라이언트 씨앗' 변경: 시드를 변경할 때 일반적으로 'nonce' 가 재설정됩니다 (또는 새 스트림이 시작됩니다). 플랫폼의 규칙을 비교하십시오.
배치 '서버 시드': 하나의 '서버 시드' 가 일련의 라운드에서 작동하면 새로운 커밋이 게시됩니다. 다른 시대의 씨앗을 혼동하지 마십시오.
반올림/최소: 두 번째 부호의 불일치-경우의 90% 에서 반올림/최소 규칙의 오류 (예: 고정 1) 특별한 조건에서 00 ×).
인코딩/공간: 여분의 공간/라인 피드, 잘못된 경우, 논 -8 중단 체크.
6) 빠른 라운드 확인 목록
1. 'Ś-256 (ServerSeed)' 은 출판 된 'ServerSeedHash' 와 일치합니까?
2. '메시지' 와 'nonce' 형식이 올바르게 형성되어 있습니까?
3. 사양에 따라 엄격하게 적용되는 알고리즘 ('HMAC-ș256 '/' Ś-256') 및 키/필드 순서는?
4. 매핑과 반올림이 문서와 동일합니까?
5. 특별한 경우 (희귀 한 "인스턴트 충돌", 최소 1) 여부 00 ×, 마우스 가드)?
6. 결과는 페니에 대한 게임의 역사와 일치합니까?
7) 제어 자동화 (실습)
로그: 'client _ seed', 시퀀스 'nonce', 타임 스탬프, 최종 승수를 유지하십시오.
샘플링: '서버 씨앗' 의 "포효" 후 무작위 20-50 라운드를 통해 스크립트를 실행하십시오. 일치 비율을 수정하십시오 (100% 여야합니다).
회귀: 게임/제공자 버전을 변경할 때 동일한 세트를 실행하십시오.
내보내기: 소스가있는 상점 CS/JSON-이것이 "감사 트랙" 입니다.
8) 안전: 실수를하지 않고 자신을 속이는 방법
로컬/오프라인 확인: 운영자의 웹 유효성 검사기에만 의존하지 마십시오. 자신의 스크립트를 유지하십시오
완전한 데이터 패키지없이 수식/형식 없음-확인 없이는 라운드를 신뢰하지 마십시오.
강력한 '클라이언트 씨앗': 무작위로 물어보고 정기적으로 변경하십시오 (이것은 RTP를 증가시키지는 않지만 재현성에 대한 질문은 제외합니다).
TLS/세션: HTTPS 전용 로그인, 2FA, 기록 로그인 및 업로드 추적.
다른 사람에게 '서버 씨앗' 을 제공하지 마십시오. 기간 후에 운영자가 게시합니다. 귀하의 임무는 사전에 "확인" 하지 않고 확인하는 것입니다.
9) 전형적인 "신인 오류"
현장 주문 혼합 ('ClientSeed: Nonce' 대신 'Nonce: ClientSeed').
하나 대신 0에서 'nonce' 를 계산하십시오 (또는 그 반대).
플랫폼의 전체 라운드 (전역 nonce) 의 해시가 사용되었지만 개인 'nonce' 가 필요합니다.
뱅커의 반올림 대 바닥/ceil.
아직 노출되지 않은 '서버 씨앗' 에 대해 확인하십시오.
10) 운영자의 "적색 깃발"
기간이 시작되기 전에 공개 서버 종자 해시가 없습니다.
클라이언트 씨앗을 설정하거나 nonce를 볼 수 없습니다.
공개 승수 해시 매핑 공식은 없습니다.
라운드 이력은 조정을위한 최소한의 데이터를 제공하지 않습니다.
형식과 알고리즘은 통지/사양 아카이브없이 변경되었습니다.
11) 호주 상황 (AU)
통화: AUD에서 승/베팅 기록을 유지하고 스토리 업로드를 유지하십시오 (지원, 논란의 여지가있는 문제).
책임있는 플레이 (RG): 예금/시간 제한, 일시 정지 및 자체 제외-선의의 앱에서 사용 가능; 그것들을 사용하십시오.
플랫폼 관행: 선의의 운영자를 위해 Fairness/Fairly Fair 블록에는 완전한 설명과 검증 예가 포함되어 있습니다. 세부 사항이 부족하면 다른 서비스를 선택해야합니다.
12) 결론
Crash 게임의 결과를 확인하는 것은 명확한 절차입니다
'서버 씨앗 해시' 커밋 검증,
'서버 시드', '클라이언트 시드', '노스' 및 알고리즘으로 '라운드 해시' 복원,
게시 된 매핑 공식 및 반올림 규칙 적용
리뷰와 게임 기록에서 동일한 승수.
자신의 스크립트, 로그 입력 및 정기적으로 임의의 라운드를 확인하십시오. 그래서 당신은 정직을 말이 아니라 수학적으로 확인합니다.