本研究比较两种钱包构造:一种同时证明公开逻辑与所有权;另一种只证明秘密知识。原生准入检查验证公开运算,HistoryStep 证明规范 State 转换,而按所有者批处理使单份授权证明封装从 1 个输入扩展到 1,020 个输入时仍几乎保持恒定。
钱包究竟需要证明什么?
公开交易体已经向原生验证逻辑提供余额、数量、槽位和输出算术。私有见证数据只补充一个交易体不能披露的事实:发送者知晓控制所选输入的秘密。
这项实验检验:把两类职责分开后,能否移除钱包侧的公共逻辑证明,同时不削弱已接纳区块的 State 转换。
早期基线要求钱包提交两份证明。可扩展透明知识论证(STARK)证明公开交易算术;另一份基于 Goldwasser–Kalai–Rothblum(GKR)协议的授权证明称为 AuthGKR,用于证明钱包知晓所有者秘密。区块证明随后还会重建同一套公开算术,因此这部分计算实际上被证明了两次。
分离式设计把私有所有权证明放入授权证明封装:这是与交易及其所选输入绑定、并经过随机化的证明对象。
分离式构造
State 是由当前未花费输出与共识计数器组成的认证集合。HistoryStep 是每个已接纳区块携带的递归证明;它验证区块从父 State 到子 State 的精确转换。
- 内存池准入从交易体导出并检查公开谓词;
- 钱包证明自己知晓所选认证输入的所有者秘密;
- 授权断言由验证者导出,不能替换为钱包自行选择的变体;
- HistoryStep 按顺序重建公共逻辑,并证明由此产生的 State 转换。
严格解码会拒绝尾随字节、未知变体,以及针对另一种交易形状的证明。变异测试分别修改交易体、所有者、秘密集合和证明字段,并要求所有变异均被拒绝。
实验一:移除重复的公共证明
第一组基准覆盖一至八个输入的标准交易,以及二十五个输入的归集交易。计时只包含授权证明;在分离式设计中,钱包侧不再生成公开逻辑 STARK。
| 场景 | 证明中位数 | 验证中位数 | 钱包包体 |
|---|---|---|---|
| 标准交易:1 输入 / 2 输出 | 76.02 毫秒 | 15.93 毫秒 | 117.75 KiB |
| 标准交易:4 输入 / 8 输出 | 78.90 毫秒 | 13.84 毫秒 | 120.85 KiB |
| 归集交易:25 输入 / 2 输出 | 269.69 毫秒 | 40.27 毫秒 | 165.47 KiB |
这组基准采用的是受测的“仅授权”证明几何,而不是最终的 PagedSpend 线格式;后者把大型交易拆分成容量固定的物理页面。它的价值在于对比:删除冗余证明并没有删除公开验证,而是把这部分验证交给原生准入规则和规范区块证明。
实验二:按所有者扩展,而不是按页面扩展
由同一主秘密派生的输入被归入一个逻辑授权断言。PagedSpend 可以表示 1–128 个物理页面、最多 1,020 个输入和 256 个输出,而钱包只为该所有者构造一份重新随机化的授权证明封装;该证明对象表明所有者秘密控制全部所选输入。
表中 p50 表示测量中位数,p95 表示第 95 百分位数。
| 输入 | 页面 | 证明封装 p50 / p95 | 完整本地路径 p50 / p95 |
|---|---|---|---|
| 1 | 1 | 218.99 / 341.71 毫秒 | 228.30 / 352.47 毫秒 |
| 100 | 13 | 204.43 / 243.58 毫秒 | 217.32 / 255.46 毫秒 |
| 1,020 | 128 | 199.98 / 250.82 毫秒 | 233.06 / 285.81 毫秒 |
由于公开输入的聚合规模增长,交易意图数据(intent)从约 56.81 KiB 增至 96.50 KiB。授权证明封装维持在约 56 KiB,构造时间也保持在实测样本的波动范围内。证明成本随不同所有者的数量增长,而不是随交易的物理页面数增长。
安全与隐私边界
授权证明封装隐藏支出秘密,并为每份证明重新随机化。它不是机密交易证明:只要交易体可用,所有者、金额、槽位和交易结构仍然公开。公开算术保持透明,因为将其隐藏只会增加证明成本,并不会改变所有权安全性。
结果
每位所有者的私有知识只证明一次。透明交易逻辑在准入时由原生代码检查,并在规范区块转换中证明一次。
同样的分离原则也适用于该钱包之外:零知识证明应覆盖依赖秘密的关系,而不应重复执行规范区块证明无论如何都必须重建的确定性检查。