递归验证器必须能够放入同一认证类别的后继证明。本文给出不动点接受测试,在 2^23 个位置的类别中闭合一条双链接链,记录两项实现探针,并将递归机制与应用层区块语义明确区分。
不动点检验
把验证器嵌入证明,本身并不足以建立递归。后继关系必须容纳同一认证类别的验证器,并再次公开相同的公共布局。否则,电路会在每一步继续增长,或终止于无法继续递归的原生判定。
这里的关系是证明约束所强制执行的计算;证明类别固定该关系的约束矩阵、公共输入输出布局和证明参数。只有当一个类别能够验证同一类别的前驱证明,且这些对象均保持不变时,递归才达到不动点。
实验采用了一个直接的验收标准:
两条链接都必须使用同一类别、同一矩阵标识,以及相同的公共输入输出形状。通过这项检验的最小实测类别采用含 223 个域位置的约束域。这是容量结果,不是安全参数。
在关系内部重放 BaseFold
BaseFold 是递归证明使用的多项式承诺与打开系统。其原生验证器接收承诺、轮次消息、交互记录挑战值、查询打开证明和 Merkle 认证路径。递归关系在 FieldR1cs 中重现每一步;FieldR1cs 是把原生验证操作写入证明时采用的二进制域约束表示。协议并不接受由宿主预先计算的布尔值。
- 验证器算术表示在 GF(2128) 上;
- 交互记录轨迹吸收相同的消息,并导出相同的挑战值;
- 公共 I/O 在相邻链接间绑定前驱与后继断言;
- 矩阵摘要标识被重放的确切验证器类别。
只要字节序、填充规则或挑战调度不同,即使计算形似验证器,也属于另一套协议。递归验收必须绑定原生验证器所接受的同一组证明字节和同一陈述。
将递归机制与区块语义分开
不动点实验有意采用最小链接关系,只回答一个问题:这一验证器类别能否无限地验证自身?区块头规则、交易根、授权和精确的 UTXO 转换均不在该检验范围内;只有在类别边界闭合之后,才将它们组合进来。
这种分离使每项结果都能归因于单一边界。我们可以在不混入区块语义的情况下评估递归闭合,也可以在不悄然改变递归类别的情况下组合应用规则。
两项实现探针
类别闭合还揭示了原生验证器基准无法体现的实现成本和转录边界要求:
| 探针 | 观测结果 | 解释 |
|---|---|---|
| 复用类别断言摘要 | 224 位置类别:206 秒 → 36 秒 | 固定于类别的摘要此前会作为见证数据被重复重建 |
| 可变长度交互记录的终结 | 边界变异区分了部分吸收与完整终结 | 不完整的吸收率分块必须显式填充并终结 |
第一项是在断言语义不变的前提下进行的性能优化。第二项是对抗性验收测试,它固定了必要的交互记录规则:递归安全性涵盖摘要边界上的每一项字节调度,而不只是最外层的证明等式。
已确立的约束
- 每个链接验证同一认证类别的前驱。
- 基础情形在不绕过类别身份的前提下建立初始断言。
- 相邻链接对精确的公共起点与终点断言保持一致。
- 交互记录挑战值在被验证的轨迹内部导出。
- 原生终端验证与递归重放检查完全相同的关系。
结果
223 类别在反复应用验证器时实现了闭合。有了这一固定形状,区块语义便可以继续添加和优化,而证明大小与验证器几何不会随链龄增长。由此得到的设计原则具有普适性:先建立递归不动点,再接入应用中规模最大的关系。