Abstract

This analysis evaluates committed ParanO(1)d production parameters under the classical conventions published by Plonky2, RISC Zero and ethSTARK. It separates conjectured scores from finite theorem-backed bounds and pins every reported value in executable Rust calculations. Each value is compared only within its named metric.

Four recurring terms are used in the comparison. FRI is the low-degree proof family underlying the listed code-based systems. An interactive oracle proof (IOP) lets a verifier query committed oracle data instead of reading an entire proof table. The Toy Problem score is an industry parameter heuristic based on code rate, query count and a field-size cap. Round-by-round knowledge soundness (RBR) instead bounds the extractor's failure at each verifier move; the related t/e(t)t/e(t) convention divides attack work tt by its success probability e(t)e(t). The table compares scalar scores only within the metric named in each row; it does not treat the underlying protocols as identical objects.

Published system and metricPublished valueParanO(1)d under the corresponding metric
Plonky2 default FRI, Toy Problem conjecture100 bits conjectured; the project estimates its default Poseidon configuration at about 95 bits128 bits conjectured, using the literal Plonky2/Toy-Problem formula and the production field cap
RISC Zero soundness calculator, Toy Problem conjecture97 bits conjectured at SEGMENT_SIZE = 2^20; 95 bits conjectured at 2^24128 bits conjectured, using the same Toy-Problem-style rate/query calculation
ethSTARK / StarkWare, round-by-round and t / e(t) operation-count analysis96-bit RBR IOP premise; 95-bit compiled-STARK result under the stated operation-count definition96.047-bit wallet generalized-RBR knowledge bound; 95.022-bit fixed-invalid-block work-accounted finite composition

The ParanO(1)d values are derived from pinned production inputs, implemented as executable formulas and fixed by regression tests. Each value retains the scope of the metric that produced it: conjectured parameter score, generalized-RBR knowledge bound or finite work-accounted composition.

How to read the final row

The protocols are not identical. The 96.047 figure is a generalized round-by-round knowledge bound for the interactive ParanO(1)d wallet base IOP. The 95.022 figure is the fixed-invalid-block, work-accounted finite composition defined below. Each is paired with the closest published scalar convention; the exact definition remains visible throughout the comparison.

Scope and method

Security numbers are easy to compare after their definitions have been removed. That is also when the comparison stops meaning anything. “100 bits,” “96 bits” and “128 bits” may refer to a conjectured query score, a proved interactive soundness error, a relaxed work-per-success definition, a hash primitive or a composed application. The integer is the last step. The attack game and the reduction come first.

This study asks one reproducible question: what does the committed ParanO(1)d proof geometry score under the same classical conventions published by established proof-system projects? Four objects are evaluated separately:

  1. the literal Plonky2/Toy-Problem parameter score;
  2. a query-work score using the actual production acceptance radius and mandatory pre-query grind;
  3. a theorem-backed generalized RBR knowledge bound for the wallet base IOP;
  4. finite accepting-path error sums, with grind treatment made explicit.

The results are not averaged or collapsed into one number because they answer different questions. The public repository preserves them as different types and different output sections.

Production inputs, not illustrative parameters

The inputs are copied from ParanO(1)d commit 93b0252317208c20f8a769afb74681aa9389e286. That revision is recorded inside the workbench. A later protocol revision must deliberately update both the source pin and the expected results.

State is the authenticated set of current unspent outputs and consensus counters. HistoryStep is the recursive proof of a block's exact transition from its parent State to its child State. B64 and B255 are its two fixed proof-capacity classes, sized for blocks containing up to 64 and 255 user-transaction pages respectively; they enforce the same validity rules with different constraint-domain capacities.

ComponentQueriesRatePre-query grindField
Wallet authorization641/3216 bitsGF(2128)
HistoryStep B641251/416 bitsGF(2128)
HistoryStep B2551251/416 bitsGF(2128)

The wallet geometry is fixed in zk_capsule.rs. The BaseFold query floor, grind and production ladder are fixed in basefold.rs. The independent workbench carries only the values required for the calculation:

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],
};

This duplication is intentional and fail-closed. The production commit is the authority; the workbench is a review artifact. Its tests make a stale copy visible instead of letting a spreadsheet silently outlive the protocol it described.

Metric one: the literal Toy Problem score

Plonky2 implements the familiar rate/query expression and caps it by the field:

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

where qq is the number of queries, ρ\rho is the code rate, gg is the pre-query proof-of-work grind and λF\lambda_F is the field cap. The implementation in the workbench is deliberately literal:

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))
}

For wallet authorization, 64 * 5 + 16 = 336. For either HistoryStep class, 125 * 2 + 16 = 266. Both are capped at 128 bits by GF(2128); the 256-bit digest also has a 128-bit classical collision ceiling. The weakest displayed pipeline component is therefore 128 bits.

The exact label is 128-bit literal Toy-Problem-style conjectured classical parameter score. The score imports a rate-based model; it does not enumerate finite exceptional sets.

Metric two: production-radius query work

The literal rate score does not include the acceptance radius used by the verifier. A second, still conjectured, work score therefore uses the actual miss probability and charges the mandatory 16-bit grind immediately before query sampling.

For wallet authorization, the selected list-decoding radius is 7/107/10. A word outside that radius can agree on at most 3/103/10 of the source positions. Sixty-four queries miss every discrepancy with probability at most (3/10)64(3/10)^{64}:

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

For HistoryStep, the calculation uses rate ρ=1/4\rho=1/4, relative distance δ=3/4\delta=3/4, domain length nn and the production proximity radius

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

The corresponding score is

sH(n)=125[log2(1γ(n))]+16.s_H(n)=125\left[-\log_2(1-\gamma(n))\right]+16.
ComponentDomainQuery-work score
Wallet authorization216 source fields127.165798 bits
HistoryStep B64220100.757887 bits
HistoryStep B255221100.758438 bits

The weakest component and the additive composition both round to 100.757887 bits. This is reported as a 100.76-bit production-radius conjectured classical query-work score. It uses the deployed radius rather than the rate alone, while intentionally leaving the finite exceptional sets to the separate analysis below.

Metric three: a 96.047-bit generalized RBR knowledge bound

The wallet result is the theorem-backed part of this study. It uses generalized round-by-round knowledge in the sense of Block, Garreta, Tiwari and Zając. The protocol has 30 verifier moves. Each move receives an error bound εi\varepsilon_i, and the scalar generalized-RBR convention is their maximum:

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

This is not an accepting-path union. Summing all move bounds here would calculate a different object.

The exact Reed–Solomon geometry

The source affine code has length n=65536n=65\,536, message length K=2048K=2\,048, paper degree k=K1=2047k=K-1=2\,047 and selected radius γ=7/10\gamma=7/10. Seven binary folds preserve rate 1/32 and produce eight codeword lengths from 65,536 down to 512.

The calculation applies Theorem 4.6 of Ben-Sasson, Carmon, Haböck, Kopparty and Saraf (BCHKS) with multiplicity m=3m=3 and 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}.

The ceiling is not evaluated with binary floating point. With S=248S=2^{48} and

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

the workbench checks the integer certificate

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

Substitution into the positive denominators gives the conservative rational upper bound

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,

so the BCHKS exceptional-set ceiling is Aγ=4157831958A_\gamma=4\,157\,831\,958. The fixed main batching discrepancy is a nonzero affine polynomial in the same challenge and contributes at most one additional root:

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

Why the candidate list contributes no probability

The selected Sudan interpolation has weighted degree 19,660 and YY-degree three. Its four coefficient blocks contain 19,661, 17,614, 15,567 and 13,520 monomials: 66,362 unknowns against 65,536 homogeneous constraints, leaving a positive margin of 826. A nonzero interpolant exists, and at most three distinct factors Yp(X)Y-p(X) can occur. The same integer dimension check remains positive on every folded layer.

The bank, companion and mid oracles are the three encoded tables observed at the source, companion-claim and intermediate-fold stages of the authorization protocol. The extractor completely decodes each table, re-encodes every candidate against the observed values, and checks the exact authorization and fold-chain relations. Each list has at most three elements, so at most 33=273^3=27 candidate triples are examined. Those 27 checks are deterministic work. They are neither added to nor multiplied into the failure probability.

The 30-move ledger

Phase A is the eleven-round sumcheck that binds the transparent product-sum relation between the owner proof and the public authorization data. The code names in the table identify the exact Fiat–Shamir challenges; their protocol roles are stated first so the ledger can be read without consulting the implementation.

Move or move rangeRoleEscape-set numerator over 2128
0–1Source-oracle and mask-evaluation challenges (OwnerRho, OwnerLambda)11; 1
2–12Eleven owner multilinear-extension checks10 per round
13Owner terminal-claim challenge (OwnerEta)10
14Main companion-claim challenge (MainGamma)4,157,831,959
15–25Eleven Phase-A product-sum rounds2 per round
26Phase-B value and upper-table challenge (BetaSource)3,644,593,022
27Mid-oracle challenge (BetaMid)499,529,882
28Tail-reveal challenge (BetaTail)1
2964 query seeds(3/10)64116843/2128(3/10)^{64}\le116\,843/2^{128}

MainGamma is the maximum move. The resulting scalar is

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

The resulting figure is a 96.047-bit classical generalized RBR knowledge bound for the interactive wallet base IOP. The complete proof note gives the candidate-selector lemma, the doomed-set induction and every move individually.

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);

Metric four: finite accepting-path ledgers

Generalized RBR and ordinary accepting-path soundness are not interchangeable. For the latter, the finite error terms are added first and only then converted with log2-\log_2. The initial calculation gives transcript grinding no automatic soundness credit.

For one wallet authorization:

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

which gives 95.049176 bits. For 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}
ClassQuery termProximity termFinite sum
B6484.757887 bits109.415049 bits84.757887 bits
B25584.758438 bits108.415043 bits84.758438 bits

One fixed invalid block containing one false authorization and one false HistoryStep event has the conservative additive bound 84.756737 bits per forgery without grind credit.

Where the grind belongs

The 16-bit grind occurs immediately before query sampling. Applying it only to the later query term, rather than multiplying unrelated finite field exceptions, gives a fixed-invalid-block result of 95.021747 bits. This is the closest ParanO(1)d scalar in the workbench to the relaxed work-accounting convention used in the ethSTARK comparison.

A separate one-shot experiment lets one block contain up to 255 independently attackable wallet proof events:

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

That union gives 84.490657 bits without grind credit and 87.054734 bits when grind is applied only to the query term. It is not the per-forgery work headline. Under a t/e(t)t/e(t) definition, generating 255 independent attempts also consumes their work; subtracting log2(255)\log_2(255) after charging all attempts can count the same multiplicity twice. A true multi-target Fiat–Shamir statement needs one global adversarial work or oracle-query budget.

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,
    ]),

The executable record

The calculation is published as a small independent Rust repository rather than embedded in the node. It has no consensus role and changes no network parameter. Its purpose is to make the formulas inspectable, executable and sensitive to parameter drift.

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

The tests pin the production source revision, the literal Toy Problem values, both HistoryStep classes, the 248-scale square-root certificate, all eight BCHKS ceilings, the list-size-three interpolation certificate, the exact 30-move RBR ledger and each finite composition. In particular, one regression test states that the 27 candidate triples are deterministic extractor work and must never appear in the error numerator.

What is proved here

The numerical evaluation of every displayed formula is executable and reproducible. The 96.047-bit generalized-RBR result is theorem-backed under its stated classical interactive model. The 128-bit and 100.76-bit scores deliberately retain their conjectured labels. Reproducible arithmetic does not turn the Toy Problem conjecture into a theorem.

Interpretation of the results

The reported values are intended for like-for-like comparison within their named metrics:

  • 128 bits is the literal Toy-Problem-style conjectured classical parameter score.
  • 100.76 bits is the production-radius conjectured classical query-work score.
  • 96.047 bits is the theorem-backed classical generalized-RBR knowledge bound for the interactive wallet base IOP.
  • 95.022 bits is the fixed-invalid-block work-accounted finite composition under the stated grind convention.

These definitions match the comparison table at the beginning of the article and are preserved in the executable output. Each value is used only within its named metric.

Primary sources

Ignotus Nemo