摘要

本研究比较两种钱包构造:一种同时证明公开逻辑与所有权;另一种只证明秘密知识。原生准入检查验证公开运算,HistoryStep 证明规范 State 转换,而按所有者批处理使单份授权证明封装从 1 个输入扩展到 1,020 个输入时仍几乎保持恒定。

钱包究竟需要证明什么?

公开交易体已经向原生验证逻辑提供余额、数量、槽位和输出算术。私有见证数据只补充一个交易体不能披露的事实:发送者知晓控制所选输入的秘密。

这项实验检验:把两类职责分开后,能否移除钱包侧的公共逻辑证明,同时不削弱已接纳区块的 State 转换。

早期基线要求钱包提交两份证明。可扩展透明知识论证(STARK)证明公开交易算术;另一份基于 Goldwasser–Kalai–Rothblum(GKR)协议的授权证明称为 AuthGKR,用于证明钱包知晓所有者秘密。区块证明随后还会重建同一套公开算术,因此这部分计算实际上被证明了两次。

分离式设计把私有所有权证明放入授权证明封装:这是与交易及其所选输入绑定、并经过随机化的证明对象。

合并式基线交易体 + 逻辑 STARK + 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
11218.99 / 341.71 毫秒228.30 / 352.47 毫秒
10013204.43 / 243.58 毫秒217.32 / 255.46 毫秒
1,020128199.98 / 250.82 毫秒233.06 / 285.81 毫秒

由于公开输入的聚合规模增长,交易意图数据(intent)从约 56.81 KiB 增至 96.50 KiB。授权证明封装维持在约 56 KiB,构造时间也保持在实测样本的波动范围内。证明成本随不同所有者的数量增长,而不是随交易的物理页面数增长。

安全与隐私边界

授权证明封装隐藏支出秘密,并为每份证明重新随机化。它不是机密交易证明:只要交易体可用,所有者、金额、槽位和交易结构仍然公开。公开算术保持透明,因为将其隐藏只会增加证明成本,并不会改变所有权安全性。

结果

确立的设计原则

每位所有者的私有知识只证明一次。透明交易逻辑在准入时由原生代码检查,并在规范区块转换中证明一次。

同样的分离原则也适用于该钱包之外:零知识证明应覆盖依赖秘密的关系,而不应重复执行规范区块证明无论如何都必须重建的确定性检查。