# QVP-1 · Quantum Verification Protocol

**中文名称：** Quantum 链上验签协议  
**版本：** 1（实验版）  
**实现：** `QuantumLamportRegistry.sol`  
**状态：** 本地测试通过；BSC 主网合约已部署，地址为 [`0x50D67b7179ff149F958d59d75F1eEce58D169646`](https://bscscan.com/address/0x50D67b7179ff149F958d59d75F1eEce58D169646)，[BscScan 源码验证](https://bscscan.com/address/0x50D67b7179ff149F958d59d75F1eEce58D169646#code)与 [Sourcify](https://repo.sourcify.dev/56/0x50D67b7179ff149F958d59d75F1eEce58D169646)均为 Exact Match；QVP-1 测试网合约尚未部署  
**许可：** MIT

QVP-1 是 Quantum 项目自己的协议版本号，**不是** BNB Chain 的 BEP 或 BAP 编号。它规定如何在 BSC 智能合约内验证一次性哈希签名，并留下任何人都可读取的验签记录。

## 参与者

- **注册账户（owner）：** 用普通 EVM 钱包交易登记公钥承诺。链上记录以该地址为索引。
- **一次性签名者：** 持有在本地生成的 512 个随机秘密片段。每套密钥只能签署一个挑战。
- **提交者（relayer）：** 把公钥和签名发送到合约并支付 Gas。任何地址都可以提交，因此提交者地址不代表签名者身份。

## 消息与验签规则

1. 每个秘密片段是独立生成的 32 字节随机数。公钥包含 256 对 `keccak256(秘密片段)`，按位顺序排列，共 512 个 `bytes32`。
2. 公钥承诺是 `keccak256(abi.encode(publicKey))`。注册账户调用 `registerKey(commitment)`，在当前 nonce 登记这一承诺；同一账户不能重复登记已用过的承诺。
3. 待证明内容先形成 `payloadHash: bytes32`。合约返回的挑战为：

   ```text
   keccak256(abi.encode(
     DOMAIN_TAG, chainId, contractAddress, owner,
     nonce, payloadHash, validUntil, commitment
   ))
   ```

   `DOMAIN_TAG = keccak256("QUANTUM_LAMPORT_ATTEST_V1")`。链 ID、合约地址、账户、nonce、有效期及承诺共同限制证明的适用范围。
4. 按挑战的 256 个位，从每对秘密片段中选出对应的一个，得到 256 个 `bytes32` 的一次性签名。
5. `verifyAndRecord` 先核对完整公钥的承诺，再逐位运行 256 次 Keccak 检查。成功后消耗该密钥、推进 nonce，写入 `attestations(owner, nonce)` 并发出 `LamportVerified` 事件。已使用或已撤销的密钥不能再次提交。

注册账户若丢失未使用的秘密片段，可以用原 EVM 钱包调用 `cancelKey()` 废弃当前密钥，然后登记新密钥。这是传统钱包授权的恢复操作。

## 可以核验的结果

任何人可通过合约地址读取 `keySlots(owner, nonce)`、`attestations(owner, nonce)`，并检查 `KeyRegistered`、`KeyCancelled`、`LamportVerified` 事件。交易 calldata 公开完整公钥与一次性签名；在测试中，验签调用约 24,708 字节、约 80 万 Gas。最终链上费用以所用网络的实时估算和交易回执为准。

QVP-1 证明的是：**合约接受的指定消息摘要通过了已登记的一次性哈希签名检查**。消息摘要本身不证明原始内容真实、合法或由某个自然人撰写。

## 安全边界

- BSC 交易签名、部署交易、密钥登记及撤销仍依赖现有 EVM 账户机制。QVP-1 不会让 BSC 原生交易、钱包、代币、共识或资产托管获得抗量子保护。
- Lamport 一次性私钥绝不可复用；签名与公钥公开后，不能把它当作长期可重复使用的身份凭据。
- 这份演示实现没有经过独立安全审计，也不是 NIST 标准化的 ML-DSA、SLH-DSA、LMS 或 XMSS 实现。不得用于托管资产或声称生产级安全保证。
- 有效证明出现在交易待确认池后，其他提交者可抢先转发同一证明。链上记录的内容仍是同一账户与摘要，但 `relayer` 可能不同。
- 如果注册账户的传统 EVM 密钥失陷，攻击者仍可能登记或撤销密钥；QVP-1 不能单独保护该账户所有权。

实现与复现步骤见 [README.md](./README.md)。背景可参见 [NIST 对状态型哈希签名的说明](https://csrc.nist.gov/pubs/sp/800/208/final)、[BNB Chain 后量子迁移报告](https://www.bnbchain.org/en/blog/bsc-post-quantum-cryptography-migration-report)和 [BEP-707 草案](https://github.com/bnb-chain/BEPs/pull/707)。
