Use a linear quotient-evaluation mask - #267
Conversation
08939c2 to
63929d0
Compare
|
Re-benchmarked the PR 267 changes against main on the six-worker macOS configuration. Comparison revisions:
The synthetic candidate was used so missing main commits could not confound the comparison; it has not been pushed to the PR.
Per-pair time reductions were consistent:
A simple paired t interval over the three pair deltas is 1.286–1.616% for one action and 0.178–0.977% for four actions. All six individual Criterion mean confidence intervals also separated in the faster direction. The four-action effect is small, but these repetitions support it being real rather than benchmark noise. Configuration and controls:
The original final PR leg was rejected because launchd reached 26.8% CPU during it. No estimate from that leg was used. Its replacement used the same binary and settings after a fresh 12-sample quiet admission and passed all guards. |
|
We update this to three coefficients (degree at most 2) in the follow-on PR #294. |
63929d0 to
d4b8c3d
Compare
Summary
with a random linear polynomial
three-base MSM instead of a domain-sized MSM
product
coefficients sufficient
At Orchard's
k = 11, this replaces one 2,049-term commitment with athree-term commitment and one 2,048-term evaluation with a multiply-add. The
polynomial remains in the existing dense storage form, so the multi-opening
representation is unchanged.
This is not the sparse IPA masking polynomial introduced by #224. That mask
is sampled after
x_3and retains its power-of-two support for the IPAfolding functional. This change targets the separate PLONK
quotient-evaluation mask committed before
y, which is exposed throughexactly two evaluation functionals.
Security argument
Write the mask as
r(X) = a + bX. The prover commits toRwith anindependent Pedersen blind before sampling
y, later revealsr(x), commitsto
q_primewith a fresh blind, and only then samplesx_3.The point-set group at
xends withhfollowed byr. Horner foldingtherefore gives
runit coefficient, so the later quotient value containsone affine contribution
r(x_3). The maphas determinant
x_3 - x. The multi-opening verifier rejectsx_3equal toany queried point, so the two revealed functionals are full-rank except for
the scheme's existing negligible challenge-collision event. Independently
blinded commitments hide the coefficients before their challenges, and the
IPA applies its separate sparse mask before revealing its final scalar.
Tests now pin direct evaluation, the two-evaluation rank fact, the global
h-then-rquery order, and the Horner direction: collapsing markerpolynomials
[h, r]atx_1 = 0yieldsr.Compatibility and API
unchanged
mask coefficients instead of a full domain of random coefficients
pub(crate)item or signature changesConstructedQuotient::evaluation_queryhelper isremoved
ConstructedQuotient::evaluatenow acceptsxdirectlyinstead of a precomputed random-mask evaluation
Cold-proof benchmark
Rust 1.97.1, ThinLTO,
circuit,multicore,orbits, Apple M4, ten workers. Eachsample starts a fresh process, explicitly prepares the proving key outside
the timed region, and times the first real Orchard proof. Control was #313
head
0328221; candidate was the same tree plus this patch at177a4f2.The #267 patch is byte-for-byte identical on the submitted current-main
rebase, and #313 changes only the later IPA phase. Order alternated
transactionally; intervals are paired 95% bootstrap intervals. Every proof
verified, with zero swap and no thermal or competitor violations.
The fixed dense-mask commitment measured 1.041 ms for one Action and
1.049 ms for four Actions in the accompanying current-stack phase census,
which agrees with the end-to-end saving.
Validation
k = 11proofs and unchanged canonical proof lengthsSubmitted head is rebased on current main
98846ee, including #315.