本页面最初以英文撰写。译文由 AI 辅助翻译,仍在持续完善 — 请告诉我们 如果您发现任何不妥之处。

验证牌局

每张处理的手牌。 SPN 是可被证明公平的。 我们承诺对我们的随机数生成器种子进行加密哈希。 之前 出完牌后,在手牌后揭示种子。 你可以独立验证这笔交易是否被操纵——无需信任。

工作原理

1

在发牌之前

我们的服务器生成一个随机的 256 位种子,并计算其 SHA-256 哈希值(即“承诺值”)。 承诺会立即保存在你的手牌记录中——在发到第一张卡之前。

2

发牌。

牌组使用一个以相同随机种子作为种子的确定性 Fisher-Yates 算法进行洗牌。 每个牌位都由那个种子决定——在记录下承诺之后,无法更改牌组顺序。

3

手牌完成后

原始种子会在你的手牌历史中显示。 你现在可以验证了: SHA-256(已揭示的种子)必须等于存储的承诺。如果它匹配,交易就是公平的。

逐步验证

步骤1 — 导出你的手牌历史记录

登录你的账户,进入个人资料 → 手牌历史 → 导出。 下载 JSON 文件。 找到你想验证的手牌,并定位到 rngSeedrngCommitment 字段。

步骤 2 — 对种子进行哈希处理

使用以下任意方法对已揭示的种子运行 SHA-256。 输出必须与 rngCommitment 的值完全一致。

macOS / Linux(终端)

echo -n "YOUR_RNG_SEED_HERE" | sha256sum

Windows(PowerShell)

$seed = "YOUR_RNG_SEED_HERE"
$bytes = [System.Text.Encoding]::UTF8.GetBytes($seed)
$hash = [System.Security.Cryptography.SHA256]::Create().ComputeHash($bytes)
($hash | ForEach-Object { $_.ToString("x2") }) -join ""

使用我们的开源验证器(Node.js)

npx spn-rng-verify --seed YOUR_RNG_SEED_HERE --commitment YOUR_RNG_COMMITMENT_HERE

spn-rng-verify 包已发布在 npm 上,且不依赖任何 SPN 依赖——它是一个独立的 SHA-256 检查器,你可以在运行前检查它。

步骤 3 — 比较

哈希结果必须与手牌记录中的 rngCommitment 字段完全一致。 如果结果一致,交易就是公平的,且在承诺之后种子没有被修改。 如果不匹配,请立即联系支持。

为什么这很重要

传统的在线扑克房间会要求你信任他们的随机数生成器。我们不会——因为你不应该被要求这么做。 承诺会在发牌前记录在案。 服务器无法通过某种机制在发现你即将诈唬,或对手有强手牌后改变洗牌顺序。

SPN上的每笔手牌都可以被验证。 我们不会对某个子集进行采样或审计——每次交易、每次交易时,完整的密码学证明都可用。

想查看所有手牌的统计分布吗? 我们每天发布随机生成图像的统计数据,显示观察到的手牌频率与预期频率的对比。

查看 RNG 统计信息

关于我们的可再生天然气(RNG)实施有疑问吗?

联系支持