摘要

本文按照 Plonky2、RISC Zero 与 ethSTARK 采用的经典约定评估 ParanO(1)d 的实际部署参数,将基于猜想的评分与由有限定理支撑的界限明确区分,并用可执行的 Rust 计算固定每个公布值。每个数值只在其对应指标内比较。

比较中反复使用四个术语。FRI 是下列编码型系统所采用的一类低次数证明。交互式预言机证明(IOP)允许验证者查询已承诺预言机数据的少量位置,而不必读取整张证明表。Toy Problem 分数是业界常用的参数启发式,取决于码率、查询数和域大小上限。逐轮知识可靠性(RBR)则限制提取器在验证者每一步交互中的失败概率;相关的 t/e(t)t/e(t) 约定用攻击工作量 tt 除以其成功概率 e(t)e(t)。表格只在每一行明确写出的指标内比较标量数值,并不把底层协议视为同一对象。

已发布系统与指标已发布数值ParanO(1)d 在对应指标下的数值
Plonky2 默认 FRI,Toy Problem 猜想基于猜想的 100 位安全性;项目估计其默认 Poseidon 配置约为 95 位基于猜想的 128 位安全性,严格采用 Plonky2/Toy Problem 公式,并受实际部署所用域的大小限制
RISC Zero 可靠性计算器,Toy Problem 猜想SEGMENT_SIZE = 2^20 时为基于猜想的 97 位安全性;当其为 2^24 时为基于猜想的 95 位安全性基于猜想的 128 位安全性,采用同类 Toy Problem 码率与查询数计算
ethSTARK / StarkWare,逐轮分析与 t / e(t) 操作次数分析96 位 RBR IOP 前提;按其操作次数定义,编译后 STARK 结果为 95 位钱包的 96.047 位广义 RBR 知识可靠性界;固定无效区块的 95.022 位有限组合(计入工作量)

ParanO(1)d 的数值均从固定的实际部署参数导出,以可执行公式实现,并由回归测试锁定。每个数值都保留其所属指标的适用范围:基于猜想的参数评分、广义 RBR 知识可靠性界,或计入工作量的有限组合。

如何阅读最后一行

这些协议并不相同。96.047 是 ParanO(1)d 交互式钱包基础 IOP 的广义逐轮知识可靠性界。95.022 是下文定义的固定无效区块有限组合,其中计入了工作量。两者分别与最接近的已发布标量约定配对;精确定义在整个比较中始终明确可见。

范围与方法

一旦去掉定义,安全数值就很容易比较;但这样的比较也同时失去意义。“100 位”“96 位”和“128 位”可能分别指基于猜想的查询评分、已有证明支持的交互式可靠性误差、较宽松的单次成功工作量定义、哈希原语,或应用层组合。整数只是分析的最后一步,安全性游戏与归约才是起点。

本研究只提出一个可复现问题:按照成熟证明系统项目所发布的同类经典约定,固定的 ParanO(1)d 证明几何会得到怎样的评分? 四个对象分别评估:

  1. 严格按 Plonky2/Toy-Problem 原式计算的参数评分;
  2. 使用实际接受半径和强制查询前工作量搜索(grinding)的查询工作量评分;
  3. 有定理支撑的钱包基础 IOP 广义 RBR 知识可靠性界;
  4. 有限接受路径的误差总和,并显式说明 grinding 的处理方式。

这些结果不会取平均,也不会压成一个数字,因为它们回答不同问题。公开仓库以不同类型和不同输出章节保存它们。

实际部署参数,而非示例参数

输入取自 ParanO(1)d 提交 93b0252317208c20f8a769afb74681aa9389e286。该版本已记录在独立计算项目中。后续协议修订必须显式更新源码版本绑定与预期结果。

State 是由当前未花费输出与共识计数器组成的认证集合。HistoryStep 是区块从父 State 到子 State 精确转换的递归证明。B64 与 B255 是两种固定证明容量类别,分别容纳最多 64 页和 255 页用户交易。两者执行相同的有效性规则,只是约束域容量不同。

组件查询数码率查询前工作量搜索
钱包授权641/3216 位GF(2128)
HistoryStep B641251/416 位GF(2128)
HistoryStep B2551251/416 位GF(2128)

钱包几何固定在 zk_capsule.rs。BaseFold 查询数下限、查询前搜索量与实际部署参数层级固定在 basefold.rs。独立计算项目只保留完成计算所需的值:

pub const PRODUCTION: ProductionParameters = ProductionParameters {
    challenge_field_bits: 128,
    digest_bits: 256,
    wallet_query_count: 64,
    wallet_log_inverse_rate: 5,
    wallet_miss_numerator: 3,
    wallet_miss_denominator: 10,
    wallet_grind_bits: 16,
    max_authorizations_per_block: 255,
    history_query_count: 125,
    history_log_inverse_rate: 2,
    history_grind_bits: 16,
    history_log_message_columns: [18, 19],
};

这种重复是有意的,任何失配都会使检查失败。实际部署代码是权威来源,独立项目用于复核计算。测试会暴露过时副本,避免计算表格在协议已经更新后仍悄然沿用旧参数。

指标一:严格按原式计算的 Toy Problem 评分

Plonky2 实现了常见的码率与查询数表达式,并受域大小限制:

stoy=min ⁣(λF,qlog2(1/ρ)+g),s_{\mathrm{toy}} =\min\!\left(\lambda_F, q\log_2(1/\rho)+g\right),

其中 qq 是查询数,ρ\rho 是码率,gg 是查询前工作量搜索(grinding)的位数,λF\lambda_F 是由域大小决定的上限。计算项目中的实现严格保持原公式的形式:

pub fn literal_toy_problem_score(
    query_count: u32,
    log_inverse_rate: u32,
    grind_bits: u32,
    field_bits: u32,
) -> (f64, f64) {
    let raw = (query_count * log_inverse_rate + grind_bits) as f64;
    (raw, raw.min(field_bits as f64))
}

钱包授权为 64 * 5 + 16 = 336。任一 HistoryStep 类别均为 125 * 2 + 16 = 266。两者都受 GF(2128) 限制为 128 位;256 位摘要的经典碰撞上限同样是 128 位。因此,所显示证明流水线的最弱组件为 128 位

其准确名称是:按 Toy Problem 原公式得到、基于猜想的 128 位经典安全性参数评分。该评分采用基于码率的模型,不枚举有限异常集合。

指标二:实际接受半径下的查询工作量

原公式的码率评分没有包含验证器实际使用的接受半径。因此,第二项仍是基于猜想的工作量评分,但采用真实漏检概率,并计入查询抽样前强制执行的 16 位工作量搜索。

对于钱包授权,选定的列表译码半径为 7/107/10。超出该半径的码字最多只能在 3/103/10 的源位置上一致。六十四次查询全部漏过差异的概率至多为 (3/10)64(3/10)^{64}

log2 ⁣((3/10)64)+16=127.165798027-\log_2\!\left((3/10)^{64}\right)+16 =127.165798027\ldots

HistoryStep,计算采用码率 ρ=1/4\rho=1/4、相对距离 δ=3/4\delta=3/4、域长度 nn,以及实际部署所用的接近半径

γ(n)=δ23δn.\gamma(n)=\frac{\delta}{2}-\frac{3}{\delta n}.

相应评分为

sH(n)=125[log2(1γ(n))]+16.s_H(n)=125\left[-\log_2(1-\gamma(n))\right]+16.
组件查询工作量评分
钱包授权216 个源域元素127.165798 位
HistoryStep B64220100.757887 位
HistoryStep B255221100.758438 位

最弱组件和加法组合都得到 100.757887 位。该结果记为:实际接受半径下、基于猜想的 100.76 位经典查询工作量评分。它采用实际部署的接受半径,而不只使用码率;有限异常集合则留给下文单独分析。

指标三:96.047 位广义 RBR 知识可靠性界

钱包结果是本研究中有定理支撑的部分。它采用 Block、Garreta、Tiwari 与 Zając 定义的广义逐轮知识可靠性(generalized round-by-round knowledge soundness)。协议有 30 次验证器动作,每次动作得到误差界 εi\varepsilon_i;标量广义 RBR 约定取其中最大值:

εRBR=maxiεi.\varepsilon_{\mathrm{RBR}}=\max_i\varepsilon_i.

这不是接受路径上各事件的并合界。在此处把所有动作的界相加,计算的会是另一个量。

精确 Reed–Solomon 几何

源仿射码长度 n=65536n=65\,536,消息长度 K=2048K=2\,048,论文次数 k=K1=2047k=K-1=2\,047,选定半径 γ=7/10\gamma=7/10。七次二进制折叠保持 1/32 码率,并产生从 65,536 递减到 512 的八种码字长度。

计算采用 Ben-Sasson、Carmon、Haböck、Kopparty 与 Saraf(BCHKS)的定理 4.6,重数 m=3m=3,且 h=m+1/2=7/2h=m+1/2=7/2

Aγ=n2h5+3hγρ3ρ3/2+hρ,ρ=204765536.A_\gamma= \left\lceil n\frac{2h^5+3h\gamma\rho}{3\rho^{3/2}} +\frac{h}{\sqrt{\rho}} \right\rceil, \qquad \rho=\frac{2\,047}{65\,536}.

上取整不使用二进制浮点数计算。令 S=248S=2^{48}

s=Sρ=49746066706335,s=\left\lfloor S\sqrt{\rho}\right\rfloor =49\,746\,066\,706\,335,

计算项目验证整数证书

s2nkS2<(s+1)2n.s^2n\le kS^2\lt(s+1)^2n.

代入正分母得到保守的有理数上界

U=20322856980111171824148230963248878495302976517600=4157831957.415756,U= \frac{203\,228\,569\,801\,111\,718\,241\,482\,309\,632} {48\,878\,495\,302\,976\,517\,600} =4\,157\,831\,957.415756\ldots,

因此,BCHKS 异常集合上限为 Aγ=4157831958A_\gamma=4\,157\,831\,958。固定主批处理差异是同一挑战上的非零仿射多项式,至多再贡献一个根:

Nγ=Aγ+1=4157831959.N_\gamma=A_\gamma+1=4\,157\,831\,959.

为什么候选列表不贡献概率

选定的 Sudan 插值加权次数为 19,660,关于 YY 的次数为三。四个系数块分别包含 19,661、17,614、15,567 与 13,520 个单项式:65,536 个齐次约束对应 66,362 个未知数,正余量为 826。因此存在非零插值多项式,且不同因子 Yp(X)Y-p(X) 最多三个。同一整数维数检查在每个折叠层上都保持为正。

bankcompanionmid 预言机分别是授权协议在源数据、伴随断言和中间折叠阶段观察到的三张编码表。提取器完整解码每张表,针对观测值重新编码每个候选,并检查精确授权与折叠链关系。每个列表最多三个元素,因此最多检查 33=273^3=27 组候选三元组。这 27 次检查属于确定性工作,不会加到失败概率中,也不会乘入失败概率。

30 次动作的误差明细

阶段 A 是十一轮 sumcheck,用来把公开的乘积求和关系绑定到所有者证明和公开授权数据。表中的代码名称对应精确的 Fiat–Shamir 挑战值;每行先写明其协议作用,因此无需查阅实现即可阅读。

动作或范围作用以 2128 为分母的异常集合分子
0–1来源预言机与掩码求值挑战(OwnerRhoOwnerLambda11;1
2–12十一次所有者多线性扩展检查每轮 10
13所有者终端断言挑战(OwnerEta10
14主伴随断言挑战(MainGamma4,157,831,959
15–25阶段 A 的十一轮乘积求和检查每轮 2
26阶段 B 数值与上层表挑战(BetaSource3,644,593,022
27中间预言机挑战(BetaMid499,529,882
28尾部揭示挑战(BetaTail1
2964 个查询随机值(3/10)64116843/2128(3/10)^{64}\le116\,843/2^{128}

MainGamma 是最大动作。所得标量为

εRBR41578319592128,log2εRBR=96.04681569393009.\varepsilon_{\mathrm{RBR}} \le\frac{4\,157\,831\,959}{2^{128}}, \qquad -\log_2\varepsilon_{\mathrm{RBR}} =96.04681569393009.

所得数值是交互式钱包基础 IOP 的96.047 位经典广义 RBR 知识可靠性界完整证明逐项给出候选选择引理、失败状态集合(doomed set)归纳以及每次动作。

let rbr = wallet_generalized_rbr_metrics();
assert_eq!(rbr.source_correlated_agreement_bad_coins, 4_157_831_958);
assert_eq!(rbr.gamma_affine_batch_bad_coins, 1);
assert_eq!(rbr.max_restoration_triples_checked, 27);
assert_eq!(rbr.bad_coin_numerator, 4_157_831_959);
close(rbr.generalized_rbr_bits, 96.046_815_693_930_09, 1e-12);

指标四:有限接受路径的可靠性界

广义 RBR 可靠性与普通接受路径可靠性(accepting-path soundness)不能互换。计算后者时,必须先把有限误差项相加,再用 log2-\log_2 转换。查询前搜索不会自动降低交互记录中的所有可靠性误差项。

对于一份钱包授权:

εwallet=83019550182128+(310)64,\varepsilon_{\mathrm{wallet}} =\frac{8\,301\,955\,018}{2^{128}} +\left(\frac{3}{10}\right)^{64},

得到 95.049176 位。对于 HistoryStep

γ(n)=384n,εH(n)=(1γ(n))125+γ(n)n+12128.\begin{aligned} \gamma(n)&=\frac{3}{8}-\frac{4}{n},\\ \varepsilon_H(n) &=(1-\gamma(n))^{125} +\frac{\gamma(n)n+1}{2^{128}}. \end{aligned}
类别查询项接近项有限和
B6484.757887 位109.415049 位84.757887 位
B25584.758438 位108.415043 位84.758438 位

一个固定无效区块若包含一次虚假授权事件和一次虚假 HistoryStep 事件,在不计查询前搜索的情况下具有保守加法界:每次伪造 84.756737 位

查询前搜索应计入何处

16 位查询前工作量搜索(grinding)紧接在查询抽样之前。若只把它应用于后续查询项,而不乘到无关的有限域异常上,固定无效区块得到 95.021747 位。在计算项目中,这是 ParanO(1)d 最接近 ethSTARK 对比所用较宽松工作量核算口径的标量。

另一项单次实验允许一个区块包含最多 255 个可独立攻击的钱包证明事件:

255εwallet+εH.255\,\varepsilon_{\mathrm{wallet}}+\varepsilon_H.

事件并合在不计查询前搜索时得到 84.490657 位;只对查询项计入查询前搜索时得到 87.054734 位。该数值并非每次伪造工作量的对外摘要指标。在 t/e(t)t/e(t) 定义下,生成 255 次独立尝试同样会消耗相应工作;若在计入所有尝试后再减去 log2(255)\log_2(255),可能把同一重数计算两次。真正的多目标 Fiat–Shamir 陈述需要统一的全局攻击工作量或预言机查询预算。

fixed_invalid_block_finite_no_grind_bits:
    union_probability_bits(&[
        wallet.finite_no_grind_bits,
        limiting_history_finite_no_grind_bits,
    ]),

fixed_invalid_block_query_grind_only_bits:
    union_probability_bits(&[
        wallet.finite_query_grind_only_bits,
        limiting_history_finite_query_grind_only_bits,
    ]),

可执行记录

计算以小型独立 Rust 仓库发布,而不是嵌入节点。它没有共识角色,也不改变任何网络参数。它的作用是让公式可审阅、可执行,并能感知参数漂移。

git clone https://github.com/ignotusnemo/parano1d-soundness.git
cd parano1d-soundness

cargo run --release
cargo test --release
cargo clippy --all-targets --release -- -D warnings
RUSTDOCFLAGS='-D warnings' cargo doc --release --no-deps

测试固定实际部署代码的版本、Toy Problem 原公式数值、两个 HistoryStep 类别、按 248 缩放的平方根证书、全部八个 BCHKS 上限、列表大小为三的插值证书、精确的 30 动作 RBR 误差明细,以及每项有限组合。其中一项回归测试明确规定:27 组候选三元组属于确定性提取器工作,绝不能进入误差分子。

这里证明了什么

所展示每个公式的数值计算均可执行、可复现。96.047 位广义 RBR 结果在其声明的经典交互模型下有定理支撑。128 位与 100.76 位评分明确标为基于猜想的数值。可复现的算术不会把 Toy Problem 猜想变成定理。

如何解释这些结果

所报告数值只用于各自命名指标内的同类比较:

  • 128 位是按 Toy Problem 原公式得到、基于猜想的经典参数评分。
  • 100.76 位是实际接受半径下、基于猜想的经典查询工作量评分。
  • 96.047 位是交互式钱包基础 IOP 的、有定理支撑的经典广义 RBR 知识可靠性界。
  • 95.022 位是按所述查询前搜索规则得到的固定无效区块有限组合,其中计入了工作量。

这些定义与文章开头的比较表一致,并保留在可执行输出中。每个数值只用于其明确命名的指标。

主要来源

Ignotus Nemo