本研究使用一致的 A/A′ 来源替换测试评估候选混合打开构造。仅有低度一致性,并不能把紧凑 FRI 的第零轮预言机绑定到原始交错承诺。完整构造加入来源根和共享认证查询,使每个被抽样的预言机符号都能沿明确路径追溯至承诺列。
一致性不等于来源绑定
多项式承诺会在查询列值之前先固定一个或多个列。交错混合打开协议使用由此前全部协议消息导出的 Fiat–Shamir 挑战值 γ,一次回答多个已承诺列。紧凑 FRI 是这里采用的低次数检验,它证明组合多项式 C 在主求值点上具有声明值。这里的预言机是经过编码的表,验证者只抽查其中若干位置,而不读取整张表。构造研究有意把这项代数断言与另一项要求分开:组合预言机必须来源于原始承诺指定的列。
它证明的是:
应用需要的是更强的断言:
若一个候选构造只把值绑定到交互记录,却不认证其来源,它证明的是第一项而不是第二项。因此,下述 A/A′ 测试是构造的验收门槛,而非部署后才发现的问题。
承诺 A,从 A′ 打开
对抗性测试十分简洁:
commit A
build all_openings and the compact FRI oracle from A′
verify using Com(A)
如果打开协议只检查低次数预言机与组合后的声明值,验证者就没有查询级证据证明该预言机由 A 编码而来。恶意来源可以保持内部完全一致,却与调用方给出的承诺毫无关系。
向 Fiat–Shamir 交互记录继续吸收更多 Merkle 根或由这些根组成的紧凑列表,无法修复这项攻击。交互记录绑定只会在消息提交后固定挑战值,并不能证明一个承诺对象由另一个对象派生。
承诺编码源
完整构造为交错承诺增加一个覆盖编码列的源根。实验采用带域分离、截断至 128 位的 Blake3 Merkle 根。对于每个承诺列,每个源叶都包含同一个 FRI 索引会共同查询的一对码字位置:
leaf(log_rows, n_cols, index) =
H(domain || shape || index ||
col_0[pos0] || col_0[pos1] || ... || col_n[pos0] || col_n[pos1])
证明者状态同时保留编码列和来源树。这是一项有意承担的存储成本:若不保留编码来源,证明者日后便无法回答用于将 FRI 预言机绑定到承诺的共享查询。
使用同一组查询索引
来源绑定与紧凑 FRI 不会各自独立抽取查询。交互记录先吸收紧凑 FRI 的轮根和最终码字,再吸收来源绑定求值与折叠根,最后才抽取一组共享查询索引。两项验证都使用这组索引。
在每个抽样位置,Merkle 认证路径打开编码来源中的符号。协议的张量折叠规则把这些符号合成为紧凑 FRI 所要求的值。折叠层根和成对位置的打开证明则把这项关系延伸到 FRI 各层。
精确陈述
调用方按规范使用混合打开 API 时,验证通过意味着——除声明的可靠性误差外——每个返回的主点打开值都是交错承诺所固定列的多线性扩展(MLE)值。
断言的边界很重要。独立定理只涉及主求值点。次级断言在混合打开协议中接受形状检查并绑定到交互记录,但它们与其他求值点的关系来自调用方外层的多点归约或切片归约。若文档声称多项式承诺方案(PCS)能单独证明任意次级打开断言,就会夸大该原语的保证。
区分绑定与可满足性的测试
决定性测试对 A 作出承诺,再从 A′ 构造其余证明,并要求验证者拒绝。其他变异会修改来源符号、折叠符号与 Merkle 路径。其中一些变异仍保留局部可满足的代数轨迹,只有把来源打开证明与原始承诺核对时才会失败。
这种测试方式可以复用。证明系统不应只修改一项约束并观察失败;它还应修改承诺边界另一侧的对象,同时让内部计算保持自洽。否则,测试可能从未真正触及绑定定理。
递归组合中的成本
完整构造增加了来源根、编码来源留存和批量认证路径。在递归验证器中重放这些路径,会向外层关系加入多组 Poseidon2b 认证族,由此产生了《一次全局 Poseidon 遍历取代九次验证器遍历》所述的内存实验。来源证明有可测成本,但省略它会改变被证明的断言。
验证器必须闭合的边界
交互记录可以把证明者绑定到其消息,而这些消息仍可能没有绑定到应用真正关心的承诺。
任何多项式承诺组合都需要一条显式路径:从终端求值断言出发,经过被查询的预言机,一直回到原始承诺来源。缺少这条路径时,额外的 Fiat–Shamir 吸收只能证明内部一致性,不能证明数据来源。