跳转至

亲自验证一个分数

无需听我们的一面之词。三项独立检查。

1. 在测试向量上重放验证器

向量vectors/*.json)是 (护照, 期望裁决) 对。公开验证器(ref/)必须精确返回 这些裁决-每种实现(C#、PHP、C++…)逐字节相同的裁决。这是协议的出口标准。

cd ref/csharp/NelfeScoring.Vectors
dotnet run -c Release      # → 11/11 向量达到期望裁决

2. 验证护照签名

每份护照由本机对其规范形式(JSON Canonicalization Scheme, RFC 8785签名 (ECDSA P-256):

  1. 移除 signature 字段;
  2. 将其余部分按 JCS 规范化(键排序、无空格、最小转义);
  3. 用设备公钥(key_id = SHA-256(SPKI DER))验证签名(ASN.1 DER, base64url)。

签名覆盖一切:分数,核心/内容/MEM/监听器指纹,检查点,票据。事后改动一个字节 = 签名无效。

3. 验证先后性(区块链锚定)

每个上榜分数-以及每款游戏的开局-都归入一棵 Merkle 树,其根通过 OpenTimestamps 锚定 于 Bitcoin。用标准客户端,任何人都能在没有我们的情况下验证数据存在于某个 Bitcoin 区块 之前

锚定证明先后性,而非真伪:它保证记录未被回填到开局之前,且后续撤回同样带时间戳(历史 只增不改)。

三者共同确立

检查 证明什么
向量 所应用的规则正是已公布的。
签名 护照未被篡改且来自那台机器
锚定 数据存在于 Bitcoin 区块之前-无回填。

它们不证明:闭源监听器读取了正确的内存地址。那份信任来自监听器认证