LogUp*
Introduction
LogUp was originally designed as a protocol to prove non-indexed lookup arguments. In contrast, permutation arguments are defined in the indexed lookup form, and one typically reduces indexed lookup to non-indexed lookup in order to apply LogUp.
A non-indexed lookup argument deals with the problem of proving that, for two arrays X,T with ∣X∣=n,∣T∣=m, the relation X⊆T holds. In contrast, an indexed lookup argument introduces an index array I in place of X to carry out the proof. (Let's see how I looks like later!)
LogUp* focuses on the following setting:
m≪n ⇒ small table
I consists of n small elements.
T consists of m large elements ≈ 128-bit
In this situation, the standard reduction requires committing to the array I∗T (the pullback). While elliptic curve–based commitments offer some solutions, hash-based commitments do not provide an efficient method. The problem becomes particularly severe when the elements of I∗T must be defined over an extension field in order to achieve 128-bit security; the commitment cost grows prohibitively large according to the paper, roughly 6× the cost compared to plain LogUp.
LogUp* addresses this challenge by proposing an efficient alternative that is agnostic to both the underlying field and the commitment scheme.
Background
Non-indexed lookup
Pre-commitment: X,T,acc (acc, also called the multiplicity , indicates how many times each table element in T is looked up by X).
Claim: X⊆T
Challenge: c
Verification:
Indexed lookup
Claim:
Example: If X=(1,2,1,3,4) and T=(1,2,3,4), then in the indexed lookup setting we have I=(0,1,0,2,3), so that I∗T=X.
Reduction: indexed to non-indexed lookup
Pre-commitment: I,T,I∗T,acc
Claim: (I∗T,I)⊆(T,[0,∣T∣)) (or you can say that I∗T is claimed to be pullback)
Challenge: c,γ
Verification:
LogUp* aims to eliminate the need for committing to I∗T in this reduction.
Protocol Explanation
Pullback and pushforward
Notations
A:n=[0,n)→F
B:m=[0,m)→F
I:n→m
Pullback:
Pushforward:
Lemma 1. Duality
Proof
Intuitive example
Let A=(1,2,1,3,4),B=(1,2,3,4),I=(0,1,0,2,3). Then I∗B=A.
If A=(a0,…,an−1), then the right hand is computed as follows:
If B=(b0,…,bm−1), then the left hand is computed as follows:
Both sides match, confirming the duality.
Trading pullback for pushforward
Pre-commitment: I,T
Claim: I∗T(r)=?e
Protocol
Commit to I∗eqr, where
Observe that
Evaluation of a polynomial P in a point r=(r0,…,rk−1) can be computed as an inner product with the multilinear Lagrange kernel: P(r)=⟨P,eqr⟩.
Run sumcheck for the claim ⟨T,I∗eqr⟩=?e, obtaining additional evaluation claims T(r′)=?c,I∗eqr(r′)=?c′.
Open T and I∗eqr.
This protocol proves the evaluation of I∗T(r), provided that I∗eqr was committed correctly. Note that the commitment to I∗T is not performed.
Then we need to check whether I∗eqr indeed is pushforward.
Pushforward proof with LogUp*
General Case
Pre-commitment: I,T,X,Y
Claim: Yis claimed to be pushforward as follows:
Challenge: c
Verification:
Intuitively, if I[i=1,5,7]↦j=3, then the left-hand side contributes c−3X[1]+X[5]+X[7], while the right-hand side uses c−3Y[3] to represent the same value.
Our Case
Pre-commitment: I,T,Y (here X=eqr, and since the verifier can compute eqr directly, there is no need to commit to X).
Challenge: c
Verification:
Thus, the prover only commits to I,T,Y, while the verifier computes eqr on its own to complete the verification.
References
Written by Ryan Kim of Fractalyze
Last updated