The high-level idea of [BLN+20] is twofold. On one hand, it upgrades the amortized linear-relation proof for Ajtai commitments from [BBC+18a] into a levelled SIS commitment, making the commitment object recursively compressing. On the other hand, it gives a lattice analogue of the Bulletproofs folding argument [BBB+18]. Concretely, we have:
levelled SIS commitments, with communication
for levels, and hence communication on ;
a lattice analogue of the Bulletproofs folding argument [BBB+18], with smaller polylogarithmic proof size but much larger extraction slack in knowledge soundness.
is the number of committed secret values. Recall the note section 4.8 on [BBC+18a] that the one-level construction has communication after balancing the number of commitments and the opening proof size after amortization. We begin by showing how [BLN+20] reduces the communication via a two-level commitment instantiation. As in the previous lattice argument note, we suppress the zero-knowledge layer: the commitment is hiding, and the proof is made zero-knowledge by Gaussian masking with rejection sampling in the Fiat-Shamir-with-aborts style.
The levelling idea starts by committing to commitments. On message , commitment keys , , and . The top commitment is
This is SIS-commitment-like at each level: the lower level compresses blocks of , and the upper level compresses the lower-level commitments. At this point this is just the commitment map: an honest opening is a matrix whose image under the above map is , and is short.
For levels, let , , and . The bottom matrix is , and for , . Define and , and define recursively
The statement is , where is the number of levels.
Similar to the challenges in section 4.8, the challenges are matrices over the challenge set the same as the one in section 4.8, with shape , and for .
For a matrix whose rows are split into consecutive blocks of equal size, define the block transpose
We also use the recursive folding map from [BLN+20]. The base case is
For , split the input tuple into consecutive subtuples, such that for ,
Then
Fix and with compatible dimensions. For challenges with the shapes above:
there exist matrices with such that
for every compatible matrix ,
if each is vertically split as , then
We prove all three parts by induction on . For , the definition gives . Thus the first part holds with , and the second and third parts are immediate.
Assume the claims hold for . Split into subtuples as was defined , and write
Also split the rows of into blocks , each of shape . Then
By induction, each is a bounded linear combination of the matrices in . Multiplying by gives coefficient matrices whose norm grows by at most a factor , since challenge entries have coefficient norm at most . Hence the new coefficients satisfy , proving the first part.
For the second part, using the induction on each subtuple,
Therefore multiplying by on the left is the same as replacing every input by before the recursive fold.
For the third part, since each splits into vertical blocks, then by induction, each splits into the corresponding folded block. Horizontal concatenation followed by multiplication by preserves this vertical block decomposition, so the vertical output block is
This proves the stacking identity and completes the induction. ∎
To describe the prover’s messages that are folded, we write as for , as a leaf of elements. In the levelled commitment perspective, the intermediate commitments are viewed as internal nodes of the tree, and for , define intermediate vertices recursively by
of shape elements. Finally,
with shape elements, so . For the response, the prover uses the tuple
where is ordered with the first coordinate varying fastest. This is the protocol order used by ; the recursive definition of each intermediate vertex still stacks its children under a fixed prefix.
We now show the 0-1 compression invariant from [BBC+18a] in the levelled setting of [BLN+20]. The point of lemma 4.9.1 is twofold here: the vertical decomposition lets us treat a folded intermediate commitment as the stack of folded child commitments, while the left multiplication property lets us pull out the next SIS matrix . Then only rearranges this vertical stack into the horizontal sibling blocks expected by the next challenge. With this abstraction, we show by induction over the levels of the commitment tree.
At the root, , and therefore we have .
For the inductive step, write , where is the tuple of the children of the vertices in . By the definition of intermediate commitments, each vertex in is the vertical stack of the -commitments to its children. Using the vertical decomposition and left multiplication properties of lemma 4.9.1, we have
Applying and the next challenge gives
The block transpose only exposes the sibling blocks of in the order needed for the next challenge matrix.
We now show an amortized opening protocol for the levelled commitment, which is public-coin, so all consistency and norm checks can be deferred to the end of the verification.
The prover computes the levelled commitment and sends .
The verifier samples the random challenge matrix with the shape specified above.
After receiving , the prover sends , of shape elements.
After receiving all responses , the verifier checks the response are short, and the consistency by
where .
The opening argument does not extract an exact opening to the original commitment map, and the source of this relaxation is already illustrated in the one-level vanilla construction of [BBC+18a]: special soundness subtracts two accepting responses, so the target is not scaled in the plain SIS setting, but the extracted preimage has a larger norm. If each accepted response has norm bounded by , then the extracted difference is naturally bounded by .
In the extractor of [BBC+18a], the extracted opening is represented by bounded integers. However, in a levelled commitment, the extracted preimage is not just an opening witness; it is also meant to be an internal value produced by a lower-level commitment. The same internal value is seen in two ways: the upper-layer consumes an integer representative, as SIS is strong when the integer bound is still small, while the lower-layer only sees the corresponding residue class modulo the lower modulus. The gap between these two views is a multiple of the lower modulus, and these multiples are exactly the carry matrices in .
For two levels, this definition specializes to a relaxed opening satisfying
The extra term records the missing multiples of when the lower-level computation is viewed as an integer input to the top commitment. This relaxation is still meaningful when parameters force the extracted to stay within SIS-binding bounds.
Although the commitment is tree shaped, extraction is better viewed depth-wise. All vertices at a same level are folded into one response, and the relaxed opening records the consistency between neighboring layers.
We now define the relaxed version of the levelled commitment map, in parallel with the exact map :
A bounded relaxed opening to is a tuple such that every column of has norm at most , every column of has norm at most , and
An exact opening to is the case where all carry matrices are zeroed out.
Similar to the theorem 4.8.7 in [BBC+18a], we define the knowledge soundness for [BLN+20].
If a prover convinces a verifier with probability , there is an extractor outputs a bounded relaxed opening, where and for . It runs in expected time.
Noticing
is exactly compressing commitments to ones as in [BBC+18a], we can use the same row-local rewinding idea as theorem 4.8.7.
Fix the column of . The desired column-wise relaxed opening has the form
where is the column of for . Iterating over extracts the full set of relaxed opening.
For now, ignore the runtime of sampling challenges for accepting transcripts, and suppose the extractor obtains two accepting transcripts whose first challenges and differ only in the row. The verification equation gives
Choose a coordinate where the two challenge rows differ, and orient the subtraction such that . Taking the column after subtracting the two accepting equations gives
Thus the extractor obtains a bounded preimage of under .
In a levelled commitment, this vector is only the upper-layer input; the tree construction is then used to recursively explain this extracted column by lower-level preimages.
For the next transition, write the row blocks of as , so that
The column of is then spread across the columns of , and the verification is
To extract the block of the column of , the extractor therefore rewinds the row of . If two accepting second challenges and differ only in this row, choose a coordinate and orient such that . Taking the column after subtracting the two level-two equations gives
The right hand side is the block of the extracted column of , which is the column of . Iterating over explains all blocks of that column; these ’s become the child slots in the transcript tree.
The heavy-row argument lemma 4.8.8 from [Dam10] is still the runtime core of the extractor.
Let have density at least . Fix , and call a row -heavy if its row-density is at least . If a -entry of is sampled uniformly, then its row is -heavy with probability at least . Moreover, conditioned on a -heavy row, resampling a column gives another -entry with probability at least . If the resampled column is required to differ from the original one, this probability is at least .
There are at most -entries in light rows, so at least -entries in heavy rows, and the probability lower bound holds. The rest follows the same argument in lemma 4.8.8. ∎
The 0-1 matrices are used in the runtime analysis, serving the same challenge-indexing purpose as in [BBC+18a], but now used in the extraction tree. Fix a partial transcript prefix . First define
The row is indexed by the prover randomness and the current challenge . The column is indexed by the future challenge choice . The entry is iff these choices give a full accepting transcript extending , such that
To apply the heavy-row argument to one row of the next challenge, reindex this same 0-1 matrix. Let be a row index in . Write for the row of , and for the rows obtained from by deleting . Define
Thus the rows of fix the prover randomness and the non-interesting rows of , while its columns are indexed by the row of together with all later challenges. At the root, and the first rewinding uses the row of . Beyond the root, determines how the current extraction target is seen at the next level: it becomes several target rows in spaced by , as was previously discussed.
The original one-level use sets , and the probability is at least in lemma 4.8.8. For the tree extractor, the same lemma is used with a larger slack : set the heavy threshold to , and an accepting entry lands in a heavy row with probability at least . After landing in such a row, resampling only the target row(s) in the challenge being rewound gives another accepting challenge with probability at least .
The extractor in [BLN+20] builds a tree of partial transcripts, and the leaves are accepting full transcripts. A state at depth is written as
Here is the address of the vertex in the tree, where each records which child slot was taken:
The block of the current column (because of ) being followed,
One of the two rewounded children, left or right.
The arguments are the current challenge, the current response, and the column currently being extracted. Reading the challenges and responses along the addressed path gives the prefix used when rewinding the prover.
The first step is the same operation with empty prefix and target row in (namely the column of ). Sample two first challenges that differ only in this row, run the prover on both, and choose a coordinate where the two rows differ, oriented so the difference is . The two resulting children are depth- states storing their own , and both carry the index . Their edge already gives
Fix a non-root, non-leaf state . The first task is to determine which rows of the next challenge have to be rewound. The column of is spread by across the rows
of the next challenge . For each row , the algorithm creates a pair of child candidates by sampling two challenges and that are equivalent except for the row, and rewinding the prover from the prefix to obtain the two responses and .
For , these candidates are the next partial-transcript children. For , they must be accepting leaf transcripts instead.
For the first child, the extractor keeps resampling the row of and reruns the prover until the resulting transcript is accepting; it aborts after failed attempts.
For the second child, it rewinds to the same prefix and repeats the same search for ; it aborts after failed attempts.
Choose a coordinate where the two challenge rows differ,
and orient the pair so the difference is . The two responses become the and children, and both use as the next column to be extracted. The edge created by this local rewind is
Thus a depth state with creates children, and level has vertices, as in the paper.
Now we can bound the abort probability in the same order as the paper. Let denote the per-step heavy-row fraction parameter, and let the retry parameter in the tree construction be . Fix a level- vertex , and write
for the path from the root to . Let be the indices for which is a right child. Let be the event that the tree construction aborts while trying to complete this fixed leaf vertex . Write for the event that the row selected by this path is -heavy in , and write for the corresponding event in the reindexed matrix . The aborting probability for left and right children is derived differently: for a left child it comes directly from , while for a right child it first comes through the reindexed matrix and then through .
The first step is the only boundary case. If is a right child, then the first challenge was obtained by resampling one target row while keeping the other rows fixed, so the proof first goes through :
Here moves the target row of from the row index into the column index: a row of is fixed by the non-target rows of , and is the concatenation of the ordinary rows obtained by varying that target row. Thus the heavy-row lemma applies to after this row-column rearrangement. Conditioned on , the selected row of has density at least . Now split this selected row according to the value of the target row. Each piece is one ordinary row of , so another application of the heavy-row lemma gives
thus
If is a left child, then the first challenge is sampled as a full challenge, and the bound starts directly from :
After this boundary step, the proof continues in the same way through , inserting immediately before for every right child on the path. Let be the conjunction of these heavy-row events, such that the threshold divided by a factor of at each peeling step. Then
On , the event holds. Concretely, for the prefix on the path to , the row has density at least . The columns of this row are indexed by the remaining final challenge , so this is the success probability for one attempt in the first final-challenge search. Since and , this local success probability is lower-bounded by . With attempts, the first leaf abort probability less than .
The paired leaf search needs one more heavy-row step. Write for the target row of the final challenge determined by this leaf. After the first final challenge is fixed, the extractor resamples only this row for the second final challenge, so the analysis passes to the row
whose columns are indexed by the resampled target row. Conditioned on , this row has density at least . This event fails with probability at most , and, when it holds, the successful resampling probability is at least
where the subtraction excludes choosing the same target row again. By the lower bound on in theorem 4.9.2, this is still at least , and the attempts make the second leaf abort probability less than .
Combining the failure of , the extra possible failure of , and the two leaf searches, for a fixed leaf vertex we get
The paper sets . Union bounding over all vertices at level , which are of them, given that is a constant, and , then the aborting probability is at most
Thus one run of TreeConstruct succeeds with constant probability, up to the negligible term. For a fixed target column , running independent copies gives a successful tree except with negligible probability. The extractor needs this for all columns of , so it repeats the same procedure for every . Since , , is constant, and , the total expected running time remains .
Once the tree is built, extraction is just reading off neighboring children. For a vertex whose current target is the column, the two children created for the row give
Collecting these sibling differences over gives the preimage block for the parent target column after the block transition. Repeating down the tree and concatenating the extracted blocks level by level produces the relaxed opening for the chosen column of ; Iterating over columns gives the full relaxed opening.
The binding intuition is then about the relaxed relation extracted from the argument. For two levels, write the lifted inputs seen by the top matrix as
Both relaxed openings to the same satisfy
Suppose the two bounded relaxed openings and are distinct, and both open to the same . If , then the two integer representations of the upper-layer inputs are different, and hence
gives a short SIS relation for . If , then . In this case, either the lower-layer images of differ modulo , which again makes the lifted top inputs different and gives SIS for , or their equality modulo gives a short nonzero SIS solution for . The separated moduli and norm bounds are chosen so that the differences stay inside the SIS-binding range.
For constant , the parameter balancing in the paper gives communication
If , this becomes
The extractor recovers a relaxed opening: a matrix and matrices satisfying the relaxed recursive commitment equation. The communication saving therefore comes with knowledge slack, with parameters set so that the slack remains below the relevant SIS bounds.
The second construction asks whether the Bulletproofs [BBB+18] folding trick can be made lattice-compatible. The starting statement is the RSIS equation
over . Here the number of integer secrets is . In one folding round, the prover sends
The verifier samples a monomial challenge , and the prover responds with
Then
so the verifier can replace the old statement by
with witness of half the length. The verifier also checks that remains short.
Repeating for rounds reduces the witness length by ; setting leaves a single ring element and gives logarithmic-length communication.
For one round, extraction rewinds to three accepting transcripts with distinct challenges gives
for the same . Choose coefficients by solving the Vandermonde system
Then the and terms cancel, and formally
The challenge set is chosen to consist of monomials . For pairwise distinct monomials, the paper uses the fact that has coefficients in , and obtains . After clearing this denominator, one obtains a one-round relaxed preimage
with when each accepted response is bounded by .
This is the sense in which the Bulletproofs-style extraction is approximate: the extractor does not recover a short preimage of the original target , but a larger preimage of the scaled target . Recursing through folds multiplies both effects. Extraction gives a relaxed solution to
with
when . Thus logarithmic folding buys a much smaller transcript, but pays a large slack: the target is scaled by and the extracted witness norm grows by roughly . With repetition to reduce soundness error, the proof size is
Both constructions are non-PCP routes to succinct, plausibly quantum-safe ZK, but neither extracts an exact original witness. Levelled commitments have larger proofs but smaller, more controllable slack. Bulletproofs folding has the better proof-size expression when slack is cheap, but the relaxed equation and coefficient growth can force much larger parameters in applications where the extracted witness feeds into other cryptographic components. The paper’s main open direction is to keep the algebraic folding/compression while reducing coefficient growth enough to become competitive with generic PCP/Merkle-tree based post-quantum arguments in concrete size.