CSRAGE

CS2 可验证公平

每一局结果都能加密验证。玩家和平台都改不了结果——你可以自己核对证明。

工作原理

1

承诺

开局前,我们生成随机 server seed,并把其 SHA-256 hash 展示给你。承诺就此锁定——之后无法再改。

SHA256(server_seed) → a3f8c1d…
2

游玩

你的 client seed、递增的 nonce 与 server seed 一起,通过 HMAC-SHA256 算出本局结果。

HMAC(server, client:nonce:0) → result
3

验证

轮换种子时,上一个 server seed 会被公开。核对哈希是否等于原始承诺,再自行复现结果。

✓ Hash matches → outcome is authentic

游戏验证

每次开箱,系统用 HMAC-SHA256,以 server seed(密钥)和消息 算出一个随机浮点数。

浮点数会映射成 1 到 100,000 的 票号。箱子里每个物品占一段连续票号——各段之和正好是 100,000。票号落在谁的区间,谁就是结果。

verify-case.js
1const crypto = require('crypto');
2
3function verifyCaseRoll(serverSeed, clientSeed, nonce) {
4  const hmac = crypto.createHmac('sha256', serverSeed);
5  hmac.update(`${clientSeed}:${nonce}:0`);
6  const buf = hmac.digest();
7
8  const float =
9    buf[0] / 256 +
10    buf[1] / 65536 +
11    buf[2] / 16777216 +
12    buf[3] / 4294967296;
13
14  const ticket = Math.floor(float * 100000) + 1;
15  return { ticket, float };
16}
17
18// Verify the server seed commitment
19function verifyHash(serverSeed, expectedHash) {
20  const hash = crypto.createHash('sha256')
21    .update(serverSeed).digest('hex');
22  return hash === expectedHash;
23}
24
25// Each case item owns a ticket range.
26// All ranges sum to 100,000.
27// The item whose range contains your ticket wins.

验证开箱结果

你的种子

查看当前种子对、修改 client seed,或轮换以公开当前 server seed。

种子历史

已公开 server seed 的历史种子对,用来验证过往任意一局。

About this page

庄家能否操纵结果?

不能。任意回合前我们公布活跃服务器种子的 SHA-256 哈希。实际种子游玩时保密,但哈希固定——若我们更换种子以人为操纵不同结果,新种子将产生不同哈希,轮换瞬间即可发现。结合你自己的客户端种子与每局 nonce,每掷点提前提交且事后可复现,服务器无法「重跑」不喜欢的结果。

什么是服务器种子、客户端种子与 nonce?

服务器种子是后端选取的长随机值,使用时保密;仅其 SHA-256 哈希公开显示。客户端种子是你的随机值——默认为你生成,或在设置中自选。nonce 是活跃种子对上每局游戏递增一的计数器。三者一起输入 HMAC-SHA256:相同输入恒产生相同结果,任意旋转可逐字节复现。

为何需要轮换种子才能验证?

验证需要明文服务器种子,但游玩中公开将让任何人预测下一结果——违背设计初衷。轮换解决:轮换时当前服务器种子退役并向你公开,新种子(含新哈希)为后续游戏提交,nonce 重置。此后可验证退役种子上的每局游戏,下一局在新种子下提交。

能否设置自己的客户端种子,应该吗?

可以。打开设置 → Provably Fair(或滚动至本页「你的种子」),输入任意客户端种子——词、数字均可——点击轮换。此后每结果与你的种子混合,庄家无法提前预测。留空则我们生成强随机值。两者均 Provably Fair;自定义种子主要提供额外安心与向好友解释结果时的清晰审计故事。

如何轮换种子?

前往设置 → Provably Fair(或本页「你的种子」面板)点击「轮换种子」。轮换立即公开当前服务器种子以便验证其上的所有过往游戏,生成新服务器种子并公布哈希,应用你选择的客户端种子(留空则全新随机),nonce 重置为零供下一回合。无冷却——可随时轮换,包括在要完整审计的对局前。

nonce 是什么,为何重要?

nonce 是当前服务器种子/客户端种子对上每回合递增一的 per-game 计数器。即使种子对相同,每个 nonce 产生不同 HMAC 输出因此不同结果。验证回合需提供使用的精确 nonce,否则验证器将复现不同(错误)结果。

箱子对战的公平性有何不同?

箱子对战在大厅各席位间共享单一已提交服务器种子,但各席位需在相同共享箱上获得独立滚动。为实现此点而不用各席位个人客户端种子,HMAC 输入混合共享服务器种子、回合 nonce 与玩家用户 ID。各席位滚动唯一可验证,对战结束时公开共享服务器种子,任何人可重放对战中的任意旋转。

如何验证轮盘、扫雷、二十一点或开箱回合?

打开本页验证器并选择对应游戏。各验证器需要公开的服务器种子(如需要请先轮换)、回合时的客户端种子与回合 nonce——外加游戏特定输入如扫雷地雷数、开箱箱子 ID 或对战席位用户 ID。验证器复现服务器生成的精确结果。若与游戏屏幕不同,保存种子并立即联系客服。

丢失客户端种子或未保存 nonce 怎么办?

活跃种子对与每已结算回合的 nonce 存储于账户,稍后可在设置 → Provably Fair 与游戏内历史(开箱、手牌、扫雷等)检索。未写下值就轮换种子无妨——上一种子对归档仍对你可见,可随时验证其上任一回合。

Provably Fair 与监管审计是一回事吗?

不是,这很重要。Provably Fair 保证每单独回合由服务器提前提交的输入生成,庄家无法事后挑选结果。它本身不认证每游戏长期庄家优势、赔付完整性或特定司法管辖区合规。CSRAGE 将 Provably Fair 与内部控制及(如需要)第三方审查结合——但应视为互补而非可互换。

能否编写自己的验证器而非使用我们的?

可以。每游戏的精确算法以纯 JavaScript 记录于本页。加密原语(SHA-256 用于提交哈希、HMAC-SHA256 用于每回合抽取)是任何主流语言的标准库函数,可移植至 Python、Go、Rust 等。独立验证器帮助整个社区:若你的脚本与屏幕结果不一致,保存输入并联系我们比较参考实现。

玩得越多会改变对我有利或不利的概率吗?

不会。每回合结果仅取决于种子对与该回合 nonce;你的历史、等级、连胜或余额不影响 RNG。长时间对局感受不同是因为方差在多回合间平滑,而非底层概率变化。验证器可证明:可孤立重放单回合,结果不依赖该回合输入之外的任何因素。