SlideShare a Scribd company logo
cqlin
New Applications for Universal, Pairing Based SNARKs
with Preprocessing
Liam Eagen
Blockstream Research
June 2, 2023
Liam Eagen (Blockstream Research) cqlin June 2, 2023 1 / 17
Motivation
Lin-check problem is ubiquitous in SNARKs
Liam Eagen (Blockstream Research) cqlin June 2, 2023 2 / 17
Motivation
Lin-check problem is ubiquitous in SNARKs
Many approaches linear in sparsity (number of non-zero entries) of
matrix
Liam Eagen (Blockstream Research) cqlin June 2, 2023 2 / 17
Motivation
Lin-check problem is ubiquitous in SNARKs
Many approaches linear in sparsity (number of non-zero entries) of
matrix
This is O(n2) for dense matrices
Liam Eagen (Blockstream Research) cqlin June 2, 2023 2 / 17
Motivation
Lin-check problem is ubiquitous in SNARKs
Many approaches linear in sparsity (number of non-zero entries) of
matrix
This is O(n2) for dense matrices
Dense matrix multiplication useful in zkML
Liam Eagen (Blockstream Research) cqlin June 2, 2023 2 / 17
Motivation
Lin-check problem is ubiquitous in SNARKs
Many approaches linear in sparsity (number of non-zero entries) of
matrix
This is O(n2) for dense matrices
Dense matrix multiplication useful in zkML
Prior work [GKMMM] implies O(n) lin-check protocol
▶ Special SRS depends on the size of the matrix
▶ Has O(n3
) setup time
Liam Eagen (Blockstream Research) cqlin June 2, 2023 2 / 17
Why Pairings and Preprocessing?
Ariel’s SNARK trilogy (zkSummit 9/Zero Knowledge Podcast ep.
274)
Liam Eagen (Blockstream Research) cqlin June 2, 2023 3 / 17
Why Pairings and Preprocessing?
Ariel’s SNARK trilogy (zkSummit 9/Zero Knowledge Podcast ep.
274)
1 Pairings get succinctness without PCP, need per-circuit trusted setup
Liam Eagen (Blockstream Research) cqlin June 2, 2023 3 / 17
Why Pairings and Preprocessing?
Ariel’s SNARK trilogy (zkSummit 9/Zero Knowledge Podcast ep.
274)
1 Pairings get succinctness without PCP, need per-circuit trusted setup
2 Polynomial commitment schemes abstract pairing, universal trusted
setup
Liam Eagen (Blockstream Research) cqlin June 2, 2023 3 / 17
Why Pairings and Preprocessing?
Ariel’s SNARK trilogy (zkSummit 9/Zero Knowledge Podcast ep.
274)
1 Pairings get succinctness without PCP, need per-circuit trusted setup
2 Polynomial commitment schemes abstract pairing, universal trusted
setup
3 Pairing with preprocessing breaks PCS abstraction for more power in
particular applications, e.g. lookup arguments
Liam Eagen (Blockstream Research) cqlin June 2, 2023 3 / 17
Why Pairings and Preprocessing?
Ariel’s SNARK trilogy (zkSummit 9/Zero Knowledge Podcast ep.
274)
1 Pairings get succinctness without PCP, need per-circuit trusted setup
2 Polynomial commitment schemes abstract pairing, universal trusted
setup
3 Pairing with preprocessing breaks PCS abstraction for more power in
particular applications, e.g. lookup arguments
What other applications benefit from pairings and preprocessing?
Liam Eagen (Blockstream Research) cqlin June 2, 2023 3 / 17
Why Pairings and Preprocessing?
Ariel’s SNARK trilogy (zkSummit 9/Zero Knowledge Podcast ep.
274)
1 Pairings get succinctness without PCP, need per-circuit trusted setup
2 Polynomial commitment schemes abstract pairing, universal trusted
setup
3 Pairing with preprocessing breaks PCS abstraction for more power in
particular applications, e.g. lookup arguments
What other applications benefit from pairings and preprocessing?
cqlin!
Liam Eagen (Blockstream Research) cqlin June 2, 2023 3 / 17
Preliminaries
Fix a pairing friendly curve
Liam Eagen (Blockstream Research) cqlin June 2, 2023 4 / 17
Preliminaries
Fix a pairing friendly curve
Commit to polynomials using KZG, write [F(x)] for commitment to
polynomial F(X)
Liam Eagen (Blockstream Research) cqlin June 2, 2023 4 / 17
Preliminaries
Fix a pairing friendly curve
Commit to polynomials using KZG, write [F(x)] for commitment to
polynomial F(X)
Prove F(a) = b by proving Q(X) = (F(X) − b)/(X − a) is a
polynomial
Liam Eagen (Blockstream Research) cqlin June 2, 2023 4 / 17
Preliminaries
Fix a pairing friendly curve
Commit to polynomials using KZG, write [F(x)] for commitment to
polynomial F(X)
Prove F(a) = b by proving Q(X) = (F(X) − b)/(X − a) is a
polynomial
More generally for Z(X) =
Q
i (X − ai ), F(ai ) = G(ai ) iff
F(X) = G(X) mod Z(X)
Liam Eagen (Blockstream Research) cqlin June 2, 2023 4 / 17
Preliminaries
Fix a pairing friendly curve
Commit to polynomials using KZG, write [F(x)] for commitment to
polynomial F(X)
Prove F(a) = b by proving Q(X) = (F(X) − b)/(X − a) is a
polynomial
More generally for Z(X) =
Q
i (X − ai ), F(ai ) = G(ai ) iff
F(X) = G(X) mod Z(X)
Equivalently, if there exists a polynomial
Q(X) = (F(X) − G(X))/Z(X)
Liam Eagen (Blockstream Research) cqlin June 2, 2023 4 / 17
Preliminaries
Let ω be a root of unity or order N
Liam Eagen (Blockstream Research) cqlin June 2, 2023 5 / 17
Preliminaries
Let ω be a root of unity or order N
Lagrange polynomials Li (ωj ) = δi,j
Liam Eagen (Blockstream Research) cqlin June 2, 2023 5 / 17
Preliminaries
Let ω be a root of unity or order N
Lagrange polynomials Li (ωj ) = δi,j
Encode vector ⃗
v ∈ FN as F(ωi ) = vi
Liam Eagen (Blockstream Research) cqlin June 2, 2023 5 / 17
Preliminaries
Let ω be a root of unity or order N
Lagrange polynomials Li (ωj ) = δi,j
Encode vector ⃗
v ∈ FN as F(ωi ) = vi
Equivalently F(X) =
P
i∈[n] vi Li (X)
Liam Eagen (Blockstream Research) cqlin June 2, 2023 5 / 17
Preliminaries
Let ω be a root of unity or order N
Lagrange polynomials Li (ωj ) = δi,j
Encode vector ⃗
v ∈ FN as F(ωi ) = vi
Equivalently F(X) =
P
i∈[n] vi Li (X)
If deg F(X) < N, then F(0) =
P
i∈[N] F(ωi ) [Aurora]
Liam Eagen (Blockstream Research) cqlin June 2, 2023 5 / 17
Sparse Commitments
What is a Sparse Commitment?
Liam Eagen (Blockstream Research) cqlin June 2, 2023 6 / 17
Sparse Commitments
What is a Sparse Commitment?
Let P(X) be a degree d polynomial
In general, committing to [P(x)] requires d scalar multiplications
Liam Eagen (Blockstream Research) cqlin June 2, 2023 6 / 17
Sparse Commitments
What is a Sparse Commitment?
Let P(X) be a degree d polynomial
In general, committing to [P(x)] requires d scalar multiplications
Sometimes, P(X) is sparse with respect to some basis Bi (X) of
n ≤ d polynomials
Liam Eagen (Blockstream Research) cqlin June 2, 2023 6 / 17
Sparse Commitments
What is a Sparse Commitment?
Let P(X) be a degree d polynomial
In general, committing to [P(x)] requires d scalar multiplications
Sometimes, P(X) is sparse with respect to some basis Bi (X) of
n ≤ d polynomials
That is P(X) =
P
i∈[n] fi Bi (X) where at most k values of fi are
non-zero and k << d
Liam Eagen (Blockstream Research) cqlin June 2, 2023 6 / 17
Sparse Commitments
What is a Sparse Commitment?
Let P(X) be a degree d polynomial
In general, committing to [P(x)] requires d scalar multiplications
Sometimes, P(X) is sparse with respect to some basis Bi (X) of
n ≤ d polynomials
That is P(X) =
P
i∈[n] fi Bi (X) where at most k values of fi are
non-zero and k << d
When P(X) is k, Bi (X) sparse, we can compute a commitment to
P(X) in O(k) time given precomputed commitments to Bi (X)
Liam Eagen (Blockstream Research) cqlin June 2, 2023 6 / 17
Sparse Commitments
What is a Sparse Commitment?
Let P(X) be a degree d polynomial
In general, committing to [P(x)] requires d scalar multiplications
Sometimes, P(X) is sparse with respect to some basis Bi (X) of
n ≤ d polynomials
That is P(X) =
P
i∈[n] fi Bi (X) where at most k values of fi are
non-zero and k << d
When P(X) is k, Bi (X) sparse, we can compute a commitment to
P(X) in O(k) time given precomputed commitments to Bi (X)
P(X) =
P
i∈[n] ki [Bi (x)]
Liam Eagen (Blockstream Research) cqlin June 2, 2023 6 / 17
Sparse Commitments
What is a Sparse Commitment?
Let P(X) be a degree d polynomial
In general, committing to [P(x)] requires d scalar multiplications
Sometimes, P(X) is sparse with respect to some basis Bi (X) of
n ≤ d polynomials
That is P(X) =
P
i∈[n] fi Bi (X) where at most k values of fi are
non-zero and k << d
When P(X) is k, Bi (X) sparse, we can compute a commitment to
P(X) in O(k) time given precomputed commitments to Bi (X)
P(X) =
P
i∈[n] ki [Bi (x)]
Sparsity is linear: if P(X) is Bi (X) sparse, then P(X)F(X) is
Bi (X)F(X) sparse
Liam Eagen (Blockstream Research) cqlin June 2, 2023 6 / 17
Sparse Commitments: Simple Examples
Assume P(X) is Bi (X) sparse
Liam Eagen (Blockstream Research) cqlin June 2, 2023 7 / 17
Sparse Commitments: Simple Examples
Assume P(X) is Bi (X) sparse
1 Degree Checks
Liam Eagen (Blockstream Research) cqlin June 2, 2023 7 / 17
Sparse Commitments: Simple Examples
Assume P(X) is Bi (X) sparse
1 Degree Checks
1 Suppose want to show deg P(X) = d, but SRS has degree N
Liam Eagen (Blockstream Research) cqlin June 2, 2023 7 / 17
Sparse Commitments: Simple Examples
Assume P(X) is Bi (X) sparse
1 Degree Checks
1 Suppose want to show deg P(X) = d, but SRS has degree N
2 Precompute Di = [xN−d
Bi (x)]
Liam Eagen (Blockstream Research) cqlin June 2, 2023 7 / 17
Sparse Commitments: Simple Examples
Assume P(X) is Bi (X) sparse
1 Degree Checks
1 Suppose want to show deg P(X) = d, but SRS has degree N
2 Precompute Di = [xN−d
Bi (x)]
3 Prover can compute D =
P
i∈[n] fi Di in O(k) time
4 Verifier checks e([P(x)], [xN−d
]) = e(D, [1])
Liam Eagen (Blockstream Research) cqlin June 2, 2023 7 / 17
Sparse Commitments: Simple Examples
Assume P(X) is Bi (X) sparse
1 Degree Checks
1 Suppose want to show deg P(X) = d, but SRS has degree N
2 Precompute Di = [xN−d
Bi (x)]
3 Prover can compute D =
P
i∈[n] fi Di in O(k) time
4 Verifier checks e([P(x)], [xN−d
]) = e(D, [1])
2 Opening at fixed value
Liam Eagen (Blockstream Research) cqlin June 2, 2023 7 / 17
Sparse Commitments: Simple Examples
Assume P(X) is Bi (X) sparse
1 Degree Checks
1 Suppose want to show deg P(X) = d, but SRS has degree N
2 Precompute Di = [xN−d
Bi (x)]
3 Prover can compute D =
P
i∈[n] fi Di in O(k) time
4 Verifier checks e([P(x)], [xN−d
]) = e(D, [1])
2 Opening at fixed value
1 Suppose prover wants to open P(0) = c, for example as part of
sum-check
Liam Eagen (Blockstream Research) cqlin June 2, 2023 7 / 17
Sparse Commitments: Simple Examples
Assume P(X) is Bi (X) sparse
1 Degree Checks
1 Suppose want to show deg P(X) = d, but SRS has degree N
2 Precompute Di = [xN−d
Bi (x)]
3 Prover can compute D =
P
i∈[n] fi Di in O(k) time
4 Verifier checks e([P(x)], [xN−d
]) = e(D, [1])
2 Opening at fixed value
1 Suppose prover wants to open P(0) = c, for example as part of
sum-check
2 Precompute Zi = [Bi (x) − Bi (0)/x]
Liam Eagen (Blockstream Research) cqlin June 2, 2023 7 / 17
Sparse Commitments: Simple Examples
Assume P(X) is Bi (X) sparse
1 Degree Checks
1 Suppose want to show deg P(X) = d, but SRS has degree N
2 Precompute Di = [xN−d
Bi (x)]
3 Prover can compute D =
P
i∈[n] fi Di in O(k) time
4 Verifier checks e([P(x)], [xN−d
]) = e(D, [1])
2 Opening at fixed value
1 Suppose prover wants to open P(0) = c, for example as part of
sum-check
2 Precompute Zi = [Bi (x) − Bi (0)/x]
3 Prover can compute Z =
P
i∈[n] fi Zi in O(k) time
4 Verifier checks e([P(x)] − c[1], [1]) = e(Z, [x])
Liam Eagen (Blockstream Research) cqlin June 2, 2023 7 / 17
Sparse Commitments: cq and Lookup Arguments
Sparse commitments are a key part of lookup arguments [Caulk,etc.]
especially cq
Liam Eagen (Blockstream Research) cqlin June 2, 2023 8 / 17
Sparse Commitments: cq and Lookup Arguments
Sparse commitments are a key part of lookup arguments [Caulk,etc.]
especially cq
Given T(X) encoding a table ⃗
t ∈ FN, want to prove T(ωi ) = v for
some i
Liam Eagen (Blockstream Research) cqlin June 2, 2023 8 / 17
Sparse Commitments: cq and Lookup Arguments
Sparse commitments are a key part of lookup arguments [Caulk,etc.]
especially cq
Given T(X) encoding a table ⃗
t ∈ FN, want to prove T(ωi ) = v for
some i
Let A(X) be n Lagrange sparse and B(X) and Q(X) satisfy
T(X)A(X) = B(X) + (XN − 1)Q(X)
Liam Eagen (Blockstream Research) cqlin June 2, 2023 8 / 17
Sparse Commitments: cq and Lookup Arguments
Sparse commitments are a key part of lookup arguments [Caulk,etc.]
especially cq
Given T(X) encoding a table ⃗
t ∈ FN, want to prove T(ωi ) = v for
some i
Let A(X) be n Lagrange sparse and B(X) and Q(X) satisfy
T(X)A(X) = B(X) + (XN − 1)Q(X)
T(ωi )A(ωi ) = B(ωi ), so B(X) is also n Lagrange sparse
Liam Eagen (Blockstream Research) cqlin June 2, 2023 8 / 17
Sparse Commitments: cq and Lookup Arguments
Sparse commitments are a key part of lookup arguments [Caulk,etc.]
especially cq
Given T(X) encoding a table ⃗
t ∈ FN, want to prove T(ωi ) = v for
some i
Let A(X) be n Lagrange sparse and B(X) and Q(X) satisfy
T(X)A(X) = B(X) + (XN − 1)Q(X)
T(ωi )A(ωi ) = B(ωi ), so B(X) is also n Lagrange sparse
Q(X) is n sparse wrt to the basis Qi (X) such that
T(X)Li (X) = ti Li (X) + (XN − 1)Qi (X)
Liam Eagen (Blockstream Research) cqlin June 2, 2023 8 / 17
Sparse Commitments: cq and Lookup Arguments
Sparse commitments are a key part of lookup arguments [Caulk,etc.]
especially cq
Given T(X) encoding a table ⃗
t ∈ FN, want to prove T(ωi ) = v for
some i
Let A(X) be n Lagrange sparse and B(X) and Q(X) satisfy
T(X)A(X) = B(X) + (XN − 1)Q(X)
T(ωi )A(ωi ) = B(ωi ), so B(X) is also n Lagrange sparse
Q(X) is n sparse wrt to the basis Qi (X) such that
T(X)Li (X) = ti Li (X) + (XN − 1)Qi (X)
Can compute all [Qi (x)] in O(N log N) time using FK technique
Liam Eagen (Blockstream Research) cqlin June 2, 2023 8 / 17
Sparse Commitments: cq and Lookup Arguments
Sparse commitments are a key part of lookup arguments [Caulk,etc.]
especially cq
Given T(X) encoding a table ⃗
t ∈ FN, want to prove T(ωi ) = v for
some i
Let A(X) be n Lagrange sparse and B(X) and Q(X) satisfy
T(X)A(X) = B(X) + (XN − 1)Q(X)
T(ωi )A(ωi ) = B(ωi ), so B(X) is also n Lagrange sparse
Q(X) is n sparse wrt to the basis Qi (X) such that
T(X)Li (X) = ti Li (X) + (XN − 1)Qi (X)
Can compute all [Qi (x)] in O(N log N) time using FK technique
Can commit to [A(x)], [B(x)], and [Q(x)] in O(n) scalar
multiplications
Liam Eagen (Blockstream Research) cqlin June 2, 2023 8 / 17
Sparse Commitments: cq and Lookup Arguments
Sparse commitments are a key part of lookup arguments [Caulk,etc.]
especially cq
Given T(X) encoding a table ⃗
t ∈ FN, want to prove T(ωi ) = v for
some i
Let A(X) be n Lagrange sparse and B(X) and Q(X) satisfy
T(X)A(X) = B(X) + (XN − 1)Q(X)
T(ωi )A(ωi ) = B(ωi ), so B(X) is also n Lagrange sparse
Q(X) is n sparse wrt to the basis Qi (X) such that
T(X)Li (X) = ti Li (X) + (XN − 1)Qi (X)
Can compute all [Qi (x)] in O(N log N) time using FK technique
Can commit to [A(x)], [B(x)], and [Q(x)] in O(n) scalar
multiplications
cq defines A(X) and B(X) to encode log derivative lookup [BP++,
MVLookup]
Liam Eagen (Blockstream Research) cqlin June 2, 2023 8 / 17
Lin-Check
Fix n × n matrix M
Liam Eagen (Blockstream Research) cqlin June 2, 2023 9 / 17
Lin-Check
Fix n × n matrix M
Given commitments to vectors ⃗
a and ⃗
b show M⃗
a = ⃗
b
Liam Eagen (Blockstream Research) cqlin June 2, 2023 9 / 17
Lin-Check
Fix n × n matrix M
Given commitments to vectors ⃗
a and ⃗
b show M⃗
a = ⃗
b
Goal: do this in O(n) group and scalar operations
Liam Eagen (Blockstream Research) cqlin June 2, 2023 9 / 17
Lin-Check
Fix n × n matrix M
Given commitments to vectors ⃗
a and ⃗
b show M⃗
a = ⃗
b
Goal: do this in O(n) group and scalar operations
How?
Liam Eagen (Blockstream Research) cqlin June 2, 2023 9 / 17
Lin-Check
Fix n × n matrix M
Given commitments to vectors ⃗
a and ⃗
b show M⃗
a = ⃗
b
Goal: do this in O(n) group and scalar operations
How?
1 State M⃗
a = ⃗
b in terms of (bivariate) polynomials
Liam Eagen (Blockstream Research) cqlin June 2, 2023 9 / 17
Lin-Check
Fix n × n matrix M
Given commitments to vectors ⃗
a and ⃗
b show M⃗
a = ⃗
b
Goal: do this in O(n) group and scalar operations
How?
1 State M⃗
a = ⃗
b in terms of (bivariate) polynomials
2 Use a pairing to perform M⃗
a as polynomial multiplication
Liam Eagen (Blockstream Research) cqlin June 2, 2023 9 / 17
Lin-Check
Fix n × n matrix M
Given commitments to vectors ⃗
a and ⃗
b show M⃗
a = ⃗
b
Goal: do this in O(n) group and scalar operations
How?
1 State M⃗
a = ⃗
b in terms of (bivariate) polynomials
2 Use a pairing to perform M⃗
a as polynomial multiplication
3 Exploit the fact M is fixed and precompute quotients
Liam Eagen (Blockstream Research) cqlin June 2, 2023 9 / 17
Lin-Check
Fix n × n matrix M
Given commitments to vectors ⃗
a and ⃗
b show M⃗
a = ⃗
b
Goal: do this in O(n) group and scalar operations
How?
1 State M⃗
a = ⃗
b in terms of (bivariate) polynomials
2 Use a pairing to perform M⃗
a as polynomial multiplication
3 Exploit the fact M is fixed and precompute quotients
4 Find a sparse basis for all commitments
Liam Eagen (Blockstream Research) cqlin June 2, 2023 9 / 17
Lin-Check
Fix n × n matrix M
Given commitments to vectors ⃗
a and ⃗
b show M⃗
a = ⃗
b
Goal: do this in O(n) group and scalar operations
How?
1 State M⃗
a = ⃗
b in terms of (bivariate) polynomials
2 Use a pairing to perform M⃗
a as polynomial multiplication
3 Exploit the fact M is fixed and precompute quotients
4 Find a sparse basis for all commitments
5 Commit to everything in O(n) group scalar multiplications
Liam Eagen (Blockstream Research) cqlin June 2, 2023 9 / 17
Lin-Check
Fix n × n matrix M
Given commitments to vectors ⃗
a and ⃗
b show M⃗
a = ⃗
b
Goal: do this in O(n) group and scalar operations
How?
1 State M⃗
a = ⃗
b in terms of (bivariate) polynomials
2 Use a pairing to perform M⃗
a as polynomial multiplication
3 Exploit the fact M is fixed and precompute quotients
4 Find a sparse basis for all commitments
5 Commit to everything in O(n) group scalar multiplications
6 Reduce bivariate form to univariate form
Liam Eagen (Blockstream Research) cqlin June 2, 2023 9 / 17
Encode into Polynomials
Recall: M⃗
a =
P
i∈[n] ai ⃗
ci where ⃗
ci the columns of M
Liam Eagen (Blockstream Research) cqlin June 2, 2023 10 / 17
Encode into Polynomials
Recall: M⃗
a =
P
i∈[n] ai ⃗
ci where ⃗
ci the columns of M
Encode ⃗
b and ⃗
ci pointwise as polynomials B(X) and Ci (X)
Liam Eagen (Blockstream Research) cqlin June 2, 2023 10 / 17
Encode into Polynomials
Recall: M⃗
a =
P
i∈[n] ai ⃗
ci where ⃗
ci the columns of M
Encode ⃗
b and ⃗
ci pointwise as polynomials B(X) and Ci (X)
Now: M⃗
a = ⃗
b iff
P
i∈[n] ai Ci (X) = B(X)
Liam Eagen (Blockstream Research) cqlin June 2, 2023 10 / 17
Encode into Polynomials
Recall: M⃗
a =
P
i∈[n] ai ⃗
ci where ⃗
ci the columns of M
Encode ⃗
b and ⃗
ci pointwise as polynomials B(X) and Ci (X)
Now: M⃗
a = ⃗
b iff
P
i∈[n] ai Ci (X) = B(X)
M is a vector of vectors, so we can encode into bivariate M(X, Y )
such that M(X, ωi ) = Ci (X)
Liam Eagen (Blockstream Research) cqlin June 2, 2023 10 / 17
Encode into Polynomials
Recall: M⃗
a =
P
i∈[n] ai ⃗
ci where ⃗
ci the columns of M
Encode ⃗
b and ⃗
ci pointwise as polynomials B(X) and Ci (X)
Now: M⃗
a = ⃗
b iff
P
i∈[n] ai Ci (X) = B(X)
M is a vector of vectors, so we can encode into bivariate M(X, Y )
such that M(X, ωi ) = Ci (X)
Encode ⃗
a as polynomial A(Y )
Liam Eagen (Blockstream Research) cqlin June 2, 2023 10 / 17
Encode into Polynomials
Recall: M⃗
a =
P
i∈[n] ai ⃗
ci where ⃗
ci the columns of M
Encode ⃗
b and ⃗
ci pointwise as polynomials B(X) and Ci (X)
Now: M⃗
a = ⃗
b iff
P
i∈[n] ai Ci (X) = B(X)
M is a vector of vectors, so we can encode into bivariate M(X, Y )
such that M(X, ωi ) = Ci (X)
Encode ⃗
a as polynomial A(Y )
Now: M⃗
a = ⃗
b iff
P
i∈[n] A(ωi )M(X, ωi ) = B(X)
Liam Eagen (Blockstream Research) cqlin June 2, 2023 10 / 17
Encode into Polynomials (cont.)
Let R(X, ωi ) = M(X, ωi )A(ωi ) = ai Ci (X)
Liam Eagen (Blockstream Research) cqlin June 2, 2023 11 / 17
Encode into Polynomials (cont.)
Let R(X, ωi ) = M(X, ωi )A(ωi ) = ai Ci (X)
Which means R(X, Y ) = M(X, Y )A(Y ) mod Y n − 1
Liam Eagen (Blockstream Research) cqlin June 2, 2023 11 / 17
Encode into Polynomials (cont.)
Let R(X, ωi ) = M(X, ωi )A(ωi ) = ai Ci (X)
Which means R(X, Y ) = M(X, Y )A(Y ) mod Y n − 1
Which means R(X, Y ) = M(X, Y )A(Y ) + (Y n − 1)Q(X, Y )
Liam Eagen (Blockstream Research) cqlin June 2, 2023 11 / 17
Encode into Polynomials (cont.)
Let R(X, ωi ) = M(X, ωi )A(ωi ) = ai Ci (X)
Which means R(X, Y ) = M(X, Y )A(Y ) mod Y n − 1
Which means R(X, Y ) = M(X, Y )A(Y ) + (Y n − 1)Q(X, Y )
Now: M⃗
a = ⃗
b iff
1 R(X, Y ) = M(X, Y )A(Y ) + (Y n
− 1)Q(X, Y )
2
P
i∈[n] R(X, ωi
) = B(X)
3 degY R(X, Y ) < n, etc.
Liam Eagen (Blockstream Research) cqlin June 2, 2023 11 / 17
Encode into Polynomials (cont.)
Let R(X, ωi ) = M(X, ωi )A(ωi ) = ai Ci (X)
Which means R(X, Y ) = M(X, Y )A(Y ) mod Y n − 1
Which means R(X, Y ) = M(X, Y )A(Y ) + (Y n − 1)Q(X, Y )
Now: M⃗
a = ⃗
b iff
1 R(X, Y ) = M(X, Y )A(Y ) + (Y n
− 1)Q(X, Y )
2
P
i∈[n] R(X, ωi
) = B(X)
3 degY R(X, Y ) < n, etc.
Sum-check equivalent to R(X, 0) = B(X)
Liam Eagen (Blockstream Research) cqlin June 2, 2023 11 / 17
Proving in Linear Time
Want to construct [A(y)], [B(x)], [R(x, y)], and [Q(x, y)] in O(n)
time
Liam Eagen (Blockstream Research) cqlin June 2, 2023 12 / 17
Proving in Linear Time
Want to construct [A(y)], [B(x)], [R(x, y)], and [Q(x, y)] in O(n)
time
Need to find basis for each that is n sparse
Liam Eagen (Blockstream Research) cqlin June 2, 2023 12 / 17
Proving in Linear Time
Want to construct [A(y)], [B(x)], [R(x, y)], and [Q(x, y)] in O(n)
time
Need to find basis for each that is n sparse
Commitments to A(Y ) and B(X) are easy given [Li (x)] and [Li (y)]
Liam Eagen (Blockstream Research) cqlin June 2, 2023 12 / 17
Proving in Linear Time
Want to construct [A(y)], [B(x)], [R(x, y)], and [Q(x, y)] in O(n)
time
Need to find basis for each that is n sparse
Commitments to A(Y ) and B(X) are easy given [Li (x)] and [Li (y)]
Degree checks are also easy
Liam Eagen (Blockstream Research) cqlin June 2, 2023 12 / 17
Proving in Linear Time
Want to construct [A(y)], [B(x)], [R(x, y)], and [Q(x, y)] in O(n)
time
Need to find basis for each that is n sparse
Commitments to A(Y ) and B(X) are easy given [Li (x)] and [Li (y)]
Degree checks are also easy
Can compute [R(x, y)] =
P
i∈[n] ai [Li (y)Ci (x)] in O(n) scalar
multiplications given precomputed [Li (y)Ci (x)]
Liam Eagen (Blockstream Research) cqlin June 2, 2023 12 / 17
Proving in Linear Time
Want to construct [A(y)], [B(x)], [R(x, y)], and [Q(x, y)] in O(n)
time
Need to find basis for each that is n sparse
Commitments to A(Y ) and B(X) are easy given [Li (x)] and [Li (y)]
Degree checks are also easy
Can compute [R(x, y)] =
P
i∈[n] ai [Li (y)Ci (x)] in O(n) scalar
multiplications given precomputed [Li (y)Ci (x)]
The sum check can be computed in O(n) time using KZG openings
of Li (Y )Ci (X) at Y = 0
Liam Eagen (Blockstream Research) cqlin June 2, 2023 12 / 17
Proving in Linear Time
Want to construct [A(y)], [B(x)], [R(x, y)], and [Q(x, y)] in O(n)
time
Need to find basis for each that is n sparse
Commitments to A(Y ) and B(X) are easy given [Li (x)] and [Li (y)]
Degree checks are also easy
Can compute [R(x, y)] =
P
i∈[n] ai [Li (y)Ci (x)] in O(n) scalar
multiplications given precomputed [Li (y)Ci (x)]
The sum check can be computed in O(n) time using KZG openings
of Li (Y )Ci (X) at Y = 0
How to compute Q(X, Y )? Use the cq technique
Liam Eagen (Blockstream Research) cqlin June 2, 2023 12 / 17
Proving in Linear Time
Want to construct [A(y)], [B(x)], [R(x, y)], and [Q(x, y)] in O(n)
time
Need to find basis for each that is n sparse
Commitments to A(Y ) and B(X) are easy given [Li (x)] and [Li (y)]
Degree checks are also easy
Can compute [R(x, y)] =
P
i∈[n] ai [Li (y)Ci (x)] in O(n) scalar
multiplications given precomputed [Li (y)Ci (x)]
The sum check can be computed in O(n) time using KZG openings
of Li (Y )Ci (X) at Y = 0
How to compute Q(X, Y )? Use the cq technique
Define Qi (X, Y ) such that
Ci (X)Li (Y ) = M(X, Y )Li (Y ) + (Y n − 1)Qi (X, Y )
Liam Eagen (Blockstream Research) cqlin June 2, 2023 12 / 17
Proving in Linear Time
Want to construct [A(y)], [B(x)], [R(x, y)], and [Q(x, y)] in O(n)
time
Need to find basis for each that is n sparse
Commitments to A(Y ) and B(X) are easy given [Li (x)] and [Li (y)]
Degree checks are also easy
Can compute [R(x, y)] =
P
i∈[n] ai [Li (y)Ci (x)] in O(n) scalar
multiplications given precomputed [Li (y)Ci (x)]
The sum check can be computed in O(n) time using KZG openings
of Li (Y )Ci (X) at Y = 0
How to compute Q(X, Y )? Use the cq technique
Define Qi (X, Y ) such that
Ci (X)Li (Y ) = M(X, Y )Li (Y ) + (Y n − 1)Qi (X, Y )
Now [Q(X, Y )] =
P
i∈[n] ai [Qi (x, y)] can be computed in O(n) time
Liam Eagen (Blockstream Research) cqlin June 2, 2023 12 / 17
Final touches
Prefer to use a univariate SRS
Liam Eagen (Blockstream Research) cqlin June 2, 2023 13 / 17
Final touches
Prefer to use a univariate SRS
Can make the substitution Y = Xn
Liam Eagen (Blockstream Research) cqlin June 2, 2023 13 / 17
Final touches
Prefer to use a univariate SRS
Can make the substitution Y = Xn
Prefer to accept the input vector via F(X) that pointwise encodes ⃗
a
rather than A(Y )
Liam Eagen (Blockstream Research) cqlin June 2, 2023 13 / 17
Final touches
Prefer to use a univariate SRS
Can make the substitution Y = Xn
Prefer to accept the input vector via F(X) that pointwise encodes ⃗
a
rather than A(Y )
Can check A(α) = F(αn) at a random point in O(n) time
Liam Eagen (Blockstream Research) cqlin June 2, 2023 13 / 17
Final touches
Prefer to use a univariate SRS
Can make the substitution Y = Xn
Prefer to accept the input vector via F(X) that pointwise encodes ⃗
a
rather than A(Y )
Can check A(α) = F(αn) at a random point in O(n) time
That’s it! Given O(n) precomputed commitments can prove lin-check
in O(n) time
Liam Eagen (Blockstream Research) cqlin June 2, 2023 13 / 17
Future Work
Improvements to cqlin
Liam Eagen (Blockstream Research) cqlin June 2, 2023 14 / 17
Future Work
Improvements to cqlin
▶ Generalize to other vanishing sets
Liam Eagen (Blockstream Research) cqlin June 2, 2023 14 / 17
Future Work
Improvements to cqlin
▶ Generalize to other vanishing sets
▶ Reduce prover work and/or proof size
Liam Eagen (Blockstream Research) cqlin June 2, 2023 14 / 17
Future Work
Improvements to cqlin
▶ Generalize to other vanishing sets
▶ Reduce prover work and/or proof size
▶ Improve setup time and SRS size for sparse matrices
Liam Eagen (Blockstream Research) cqlin June 2, 2023 14 / 17
Future Work
Improvements to cqlin
▶ Generalize to other vanishing sets
▶ Reduce prover work and/or proof size
▶ Improve setup time and SRS size for sparse matrices
Other applications of precomputation and pairings?
Liam Eagen (Blockstream Research) cqlin June 2, 2023 14 / 17
Thank You!
Liam Eagen (Blockstream Research) cqlin June 2, 2023 15 / 17
Precomputation
Most of the precomputation straightforward
1 Degree checks very simple
2 Openings at zero for Li (X) follow from symmetry
Complicated part: computing Qi (X, Y ) in O(n2) group operations
Solution: use the FK technique on the rows of M(X, Y ) and sum the
results
FK technique
1 Want to compute KZG openings at N roots of unity
2 Write vector of KZG openings as a 2N × 2N circulant matrix times
vector of [xi
]
3 Circulant matrix diagonalizes as FDF−1
where F is the DFT matrix
4 This product computable in
O(N log N) + O(N) + O(N log N) = O(N log N) time
Takes O(n log n) per row, for a total of O(n2 log n)
Liam Eagen (Blockstream Research) cqlin June 2, 2023 16 / 17
Precomputation (cont.)
Naive FK takes O(n2 log n) group and field operations
It is possible to exploit the structure of FK to avoid the extra log n
1 Precompute F−1
times vector of [xi
]
2 Compute D multiplication in O(n)
3 The final F multiplication is linear, so first add the results and then do
a single F multiplication
4 Takes O(n2
) + O(n log n) = O(n2
) time.
Liam Eagen (Blockstream Research) cqlin June 2, 2023 17 / 17

More Related Content

What's hot

Apache Flink Deep Dive
Apache Flink Deep DiveApache Flink Deep Dive
Apache Flink Deep Dive
DataWorks Summit
 
Tutorial for Zotero Deduplication
Tutorial for Zotero DeduplicationTutorial for Zotero Deduplication
Tutorial for Zotero Deduplication
jstaaks
 
Hadoop with Python
Hadoop with PythonHadoop with Python
Hadoop with Python
Donald Miner
 
Real-time Stream Processing with Apache Flink
Real-time Stream Processing with Apache FlinkReal-time Stream Processing with Apache Flink
Real-time Stream Processing with Apache Flink
DataWorks Summit
 
Getting Data into Splunk
Getting Data into SplunkGetting Data into Splunk
Getting Data into Splunk
Splunk
 
Spark SQL Deep Dive @ Melbourne Spark Meetup
Spark SQL Deep Dive @ Melbourne Spark MeetupSpark SQL Deep Dive @ Melbourne Spark Meetup
Spark SQL Deep Dive @ Melbourne Spark Meetup
Databricks
 
Unified Stream and Batch Processing with Apache Flink
Unified Stream and Batch Processing with Apache FlinkUnified Stream and Batch Processing with Apache Flink
Unified Stream and Batch Processing with Apache Flink
DataWorks Summit/Hadoop Summit
 
Introduction to Complex Networks
Introduction to Complex NetworksIntroduction to Complex Networks
Introduction to Complex Networks
Hossein A. (Saeed) Rahmani
 
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
SANG WON PARK
 
Battle of the Stream Processing Titans – Flink versus RisingWave
Battle of the Stream Processing Titans – Flink versus RisingWaveBattle of the Stream Processing Titans – Flink versus RisingWave
Battle of the Stream Processing Titans – Flink versus RisingWave
Yingjun Wu
 
Drools 6.0 (Red Hat Summit)
Drools 6.0 (Red Hat Summit)Drools 6.0 (Red Hat Summit)
Drools 6.0 (Red Hat Summit)
Mark Proctor
 
Titanic survivor prediction by machine learning
Titanic survivor prediction by machine learningTitanic survivor prediction by machine learning
Titanic survivor prediction by machine learning
Ding Li
 
Extending Druid Index File
Extending Druid Index FileExtending Druid Index File
Extending Druid Index File
Navis Ryu
 
Non blocking io with netty
Non blocking io with nettyNon blocking io with netty
Non blocking io with netty
Zauber
 
Deep Dive on ClickHouse Sharding and Replication-2202-09-22.pdf
Deep Dive on ClickHouse Sharding and Replication-2202-09-22.pdfDeep Dive on ClickHouse Sharding and Replication-2202-09-22.pdf
Deep Dive on ClickHouse Sharding and Replication-2202-09-22.pdf
Altinity Ltd
 
Introduction to DataFusion An Embeddable Query Engine Written in Rust
Introduction to DataFusion  An Embeddable Query Engine Written in RustIntroduction to DataFusion  An Embeddable Query Engine Written in Rust
Introduction to DataFusion An Embeddable Query Engine Written in Rust
Andrew Lamb
 
Flink Forward Berlin 2017: Patrick Lucas - Flink in Containerland
Flink Forward Berlin 2017: Patrick Lucas - Flink in ContainerlandFlink Forward Berlin 2017: Patrick Lucas - Flink in Containerland
Flink Forward Berlin 2017: Patrick Lucas - Flink in Containerland
Flink Forward
 
DevOps for Data Engineers - Automate Your Data Science Pipeline with Ansible,...
DevOps for Data Engineers - Automate Your Data Science Pipeline with Ansible,...DevOps for Data Engineers - Automate Your Data Science Pipeline with Ansible,...
DevOps for Data Engineers - Automate Your Data Science Pipeline with Ansible,...
Mihai Criveti
 
Transactional SQL in Apache Hive
Transactional SQL in Apache HiveTransactional SQL in Apache Hive
Transactional SQL in Apache Hive
DataWorks Summit
 
Apache doris (incubating) introduction
Apache doris (incubating) introductionApache doris (incubating) introduction
Apache doris (incubating) introduction
leanderlee2
 

What's hot (20)

Apache Flink Deep Dive
Apache Flink Deep DiveApache Flink Deep Dive
Apache Flink Deep Dive
 
Tutorial for Zotero Deduplication
Tutorial for Zotero DeduplicationTutorial for Zotero Deduplication
Tutorial for Zotero Deduplication
 
Hadoop with Python
Hadoop with PythonHadoop with Python
Hadoop with Python
 
Real-time Stream Processing with Apache Flink
Real-time Stream Processing with Apache FlinkReal-time Stream Processing with Apache Flink
Real-time Stream Processing with Apache Flink
 
Getting Data into Splunk
Getting Data into SplunkGetting Data into Splunk
Getting Data into Splunk
 
Spark SQL Deep Dive @ Melbourne Spark Meetup
Spark SQL Deep Dive @ Melbourne Spark MeetupSpark SQL Deep Dive @ Melbourne Spark Meetup
Spark SQL Deep Dive @ Melbourne Spark Meetup
 
Unified Stream and Batch Processing with Apache Flink
Unified Stream and Batch Processing with Apache FlinkUnified Stream and Batch Processing with Apache Flink
Unified Stream and Batch Processing with Apache Flink
 
Introduction to Complex Networks
Introduction to Complex NetworksIntroduction to Complex Networks
Introduction to Complex Networks
 
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
 
Battle of the Stream Processing Titans – Flink versus RisingWave
Battle of the Stream Processing Titans – Flink versus RisingWaveBattle of the Stream Processing Titans – Flink versus RisingWave
Battle of the Stream Processing Titans – Flink versus RisingWave
 
Drools 6.0 (Red Hat Summit)
Drools 6.0 (Red Hat Summit)Drools 6.0 (Red Hat Summit)
Drools 6.0 (Red Hat Summit)
 
Titanic survivor prediction by machine learning
Titanic survivor prediction by machine learningTitanic survivor prediction by machine learning
Titanic survivor prediction by machine learning
 
Extending Druid Index File
Extending Druid Index FileExtending Druid Index File
Extending Druid Index File
 
Non blocking io with netty
Non blocking io with nettyNon blocking io with netty
Non blocking io with netty
 
Deep Dive on ClickHouse Sharding and Replication-2202-09-22.pdf
Deep Dive on ClickHouse Sharding and Replication-2202-09-22.pdfDeep Dive on ClickHouse Sharding and Replication-2202-09-22.pdf
Deep Dive on ClickHouse Sharding and Replication-2202-09-22.pdf
 
Introduction to DataFusion An Embeddable Query Engine Written in Rust
Introduction to DataFusion  An Embeddable Query Engine Written in RustIntroduction to DataFusion  An Embeddable Query Engine Written in Rust
Introduction to DataFusion An Embeddable Query Engine Written in Rust
 
Flink Forward Berlin 2017: Patrick Lucas - Flink in Containerland
Flink Forward Berlin 2017: Patrick Lucas - Flink in ContainerlandFlink Forward Berlin 2017: Patrick Lucas - Flink in Containerland
Flink Forward Berlin 2017: Patrick Lucas - Flink in Containerland
 
DevOps for Data Engineers - Automate Your Data Science Pipeline with Ansible,...
DevOps for Data Engineers - Automate Your Data Science Pipeline with Ansible,...DevOps for Data Engineers - Automate Your Data Science Pipeline with Ansible,...
DevOps for Data Engineers - Automate Your Data Science Pipeline with Ansible,...
 
Transactional SQL in Apache Hive
Transactional SQL in Apache HiveTransactional SQL in Apache Hive
Transactional SQL in Apache Hive
 
Apache doris (incubating) introduction
Apache doris (incubating) introductionApache doris (incubating) introduction
Apache doris (incubating) introduction
 

Similar to zkStudyClub - cqlin: Efficient linear operations on KZG commitments

Slides
SlidesSlides
A Distributed Tableau Algorithm for Package-based Description Logics
A Distributed Tableau Algorithm for Package-based Description LogicsA Distributed Tableau Algorithm for Package-based Description Logics
A Distributed Tableau Algorithm for Package-based Description LogicsJie Bao
 
Dedalo, looking for Cluster Explanations in a labyrinth of Linked Data
Dedalo, looking for Cluster Explanations in a labyrinth of Linked DataDedalo, looking for Cluster Explanations in a labyrinth of Linked Data
Dedalo, looking for Cluster Explanations in a labyrinth of Linked Data
Vrije Universiteit Amsterdam
 
A lattice-based consensus clustering
A lattice-based consensus clusteringA lattice-based consensus clustering
A lattice-based consensus clustering
Dmitrii Ignatov
 
CommunicationComplexity1_jieren
CommunicationComplexity1_jierenCommunicationComplexity1_jieren
CommunicationComplexity1_jierenjie ren
 
L03 ai - knowledge representation using logic
L03 ai - knowledge representation using logicL03 ai - knowledge representation using logic
L03 ai - knowledge representation using logic
Manjula V
 
Detecting paraphrases using recursive autoencoders
Detecting paraphrases using recursive autoencodersDetecting paraphrases using recursive autoencoders
Detecting paraphrases using recursive autoencoders
Feynman Liang
 
Bayesian Nonparametric Topic Modeling Hierarchical Dirichlet Processes
Bayesian Nonparametric Topic Modeling Hierarchical Dirichlet ProcessesBayesian Nonparametric Topic Modeling Hierarchical Dirichlet Processes
Bayesian Nonparametric Topic Modeling Hierarchical Dirichlet Processes
JinYeong Bak
 
An optimal and progressive algorithm for skyline queries slide
An optimal and progressive algorithm for skyline queries slideAn optimal and progressive algorithm for skyline queries slide
An optimal and progressive algorithm for skyline queries slide
WooSung Choi
 
Output Units and Cost Function in FNN
Output Units and Cost Function in FNNOutput Units and Cost Function in FNN
Output Units and Cost Function in FNN
Lin JiaMing
 
A lattice-based consensus clustering
A lattice-based consensus clusteringA lattice-based consensus clustering
A lattice-based consensus clustering
Dmitrii Ignatov
 
Evaluating definite integrals
Evaluating definite integralsEvaluating definite integrals
Evaluating definite integrals
منتدى الرياضيات المتقدمة
 
Lecture12 xing
Lecture12 xingLecture12 xing
Lecture12 xing
Tianlu Wang
 
Perplexity of Index Models over Evolving Linked Data
Perplexity of Index Models over Evolving Linked Data Perplexity of Index Models over Evolving Linked Data
Perplexity of Index Models over Evolving Linked Data
Thomas Gottron
 
Latent Dirichlet Allocation
Latent Dirichlet AllocationLatent Dirichlet Allocation
Latent Dirichlet Allocation
Marco Righini
 
Sensors and Samples: A Homological Approach
Sensors and Samples:  A Homological ApproachSensors and Samples:  A Homological Approach
Sensors and Samples: A Homological Approach
Don Sheehy
 
Biconnectivity
BiconnectivityBiconnectivity
Biconnectivity
msramanujan
 
Lecture10 xing
Lecture10 xingLecture10 xing
Lecture10 xing
Tianlu Wang
 
Regularity of Generalized Derivations in P Semi Simple BCIK Algebras
Regularity of Generalized Derivations in P Semi Simple BCIK AlgebrasRegularity of Generalized Derivations in P Semi Simple BCIK Algebras
Regularity of Generalized Derivations in P Semi Simple BCIK Algebras
YogeshIJTSRD
 
PAGOdA poster
PAGOdA posterPAGOdA poster
PAGOdA poster
DBOnto
 

Similar to zkStudyClub - cqlin: Efficient linear operations on KZG commitments (20)

Slides
SlidesSlides
Slides
 
A Distributed Tableau Algorithm for Package-based Description Logics
A Distributed Tableau Algorithm for Package-based Description LogicsA Distributed Tableau Algorithm for Package-based Description Logics
A Distributed Tableau Algorithm for Package-based Description Logics
 
Dedalo, looking for Cluster Explanations in a labyrinth of Linked Data
Dedalo, looking for Cluster Explanations in a labyrinth of Linked DataDedalo, looking for Cluster Explanations in a labyrinth of Linked Data
Dedalo, looking for Cluster Explanations in a labyrinth of Linked Data
 
A lattice-based consensus clustering
A lattice-based consensus clusteringA lattice-based consensus clustering
A lattice-based consensus clustering
 
CommunicationComplexity1_jieren
CommunicationComplexity1_jierenCommunicationComplexity1_jieren
CommunicationComplexity1_jieren
 
L03 ai - knowledge representation using logic
L03 ai - knowledge representation using logicL03 ai - knowledge representation using logic
L03 ai - knowledge representation using logic
 
Detecting paraphrases using recursive autoencoders
Detecting paraphrases using recursive autoencodersDetecting paraphrases using recursive autoencoders
Detecting paraphrases using recursive autoencoders
 
Bayesian Nonparametric Topic Modeling Hierarchical Dirichlet Processes
Bayesian Nonparametric Topic Modeling Hierarchical Dirichlet ProcessesBayesian Nonparametric Topic Modeling Hierarchical Dirichlet Processes
Bayesian Nonparametric Topic Modeling Hierarchical Dirichlet Processes
 
An optimal and progressive algorithm for skyline queries slide
An optimal and progressive algorithm for skyline queries slideAn optimal and progressive algorithm for skyline queries slide
An optimal and progressive algorithm for skyline queries slide
 
Output Units and Cost Function in FNN
Output Units and Cost Function in FNNOutput Units and Cost Function in FNN
Output Units and Cost Function in FNN
 
A lattice-based consensus clustering
A lattice-based consensus clusteringA lattice-based consensus clustering
A lattice-based consensus clustering
 
Evaluating definite integrals
Evaluating definite integralsEvaluating definite integrals
Evaluating definite integrals
 
Lecture12 xing
Lecture12 xingLecture12 xing
Lecture12 xing
 
Perplexity of Index Models over Evolving Linked Data
Perplexity of Index Models over Evolving Linked Data Perplexity of Index Models over Evolving Linked Data
Perplexity of Index Models over Evolving Linked Data
 
Latent Dirichlet Allocation
Latent Dirichlet AllocationLatent Dirichlet Allocation
Latent Dirichlet Allocation
 
Sensors and Samples: A Homological Approach
Sensors and Samples:  A Homological ApproachSensors and Samples:  A Homological Approach
Sensors and Samples: A Homological Approach
 
Biconnectivity
BiconnectivityBiconnectivity
Biconnectivity
 
Lecture10 xing
Lecture10 xingLecture10 xing
Lecture10 xing
 
Regularity of Generalized Derivations in P Semi Simple BCIK Algebras
Regularity of Generalized Derivations in P Semi Simple BCIK AlgebrasRegularity of Generalized Derivations in P Semi Simple BCIK Algebras
Regularity of Generalized Derivations in P Semi Simple BCIK Algebras
 
PAGOdA poster
PAGOdA posterPAGOdA poster
PAGOdA poster
 

More from Alex Pruden

zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 
zkStudyClub - zkSaaS (Sruthi Sekar, UCB)
zkStudyClub - zkSaaS (Sruthi Sekar, UCB)zkStudyClub - zkSaaS (Sruthi Sekar, UCB)
zkStudyClub - zkSaaS (Sruthi Sekar, UCB)
Alex Pruden
 
zkStudyClub - Lasso/Jolt (Justin Thaler, GWU/a16z)
zkStudyClub - Lasso/Jolt (Justin Thaler, GWU/a16z)zkStudyClub - Lasso/Jolt (Justin Thaler, GWU/a16z)
zkStudyClub - Lasso/Jolt (Justin Thaler, GWU/a16z)
Alex Pruden
 
zkStudyClub - Improving performance of non-native arithmetic in SNARKs (Ivo K...
zkStudyClub - Improving performance of non-native arithmetic in SNARKs (Ivo K...zkStudyClub - Improving performance of non-native arithmetic in SNARKs (Ivo K...
zkStudyClub - Improving performance of non-native arithmetic in SNARKs (Ivo K...
Alex Pruden
 
zkStudyClub - ProtoStar (Binyi Chen & Benedikt Bünz, Espresso Systems)
zkStudyClub - ProtoStar (Binyi Chen & Benedikt Bünz, Espresso Systems)zkStudyClub - ProtoStar (Binyi Chen & Benedikt Bünz, Espresso Systems)
zkStudyClub - ProtoStar (Binyi Chen & Benedikt Bünz, Espresso Systems)
Alex Pruden
 
ZK Study Club: Supernova (Srinath Setty - MS Research)
ZK Study Club: Supernova (Srinath Setty - MS Research)ZK Study Club: Supernova (Srinath Setty - MS Research)
ZK Study Club: Supernova (Srinath Setty - MS Research)
Alex Pruden
 
Eos - Efficient Private Delegation of zkSNARK provers
Eos  - Efficient Private Delegation of zkSNARK proversEos  - Efficient Private Delegation of zkSNARK provers
Eos - Efficient Private Delegation of zkSNARK provers
Alex Pruden
 
zkStudyClub: HyperPlonk (Binyi Chen, Benedikt Bünz)
zkStudyClub: HyperPlonk (Binyi Chen, Benedikt Bünz)zkStudyClub: HyperPlonk (Binyi Chen, Benedikt Bünz)
zkStudyClub: HyperPlonk (Binyi Chen, Benedikt Bünz)
Alex Pruden
 
Caulk: zkStudyClub: Caulk - Lookup Arguments in Sublinear Time (A. Zapico)
Caulk: zkStudyClub: Caulk - Lookup Arguments in Sublinear Time (A. Zapico)Caulk: zkStudyClub: Caulk - Lookup Arguments in Sublinear Time (A. Zapico)
Caulk: zkStudyClub: Caulk - Lookup Arguments in Sublinear Time (A. Zapico)
Alex Pruden
 
zkStudyClub: Zero-Knowledge Proofs Security, in Practice [JP Aumasson, Taurus]
zkStudyClub: Zero-Knowledge Proofs Security, in Practice [JP Aumasson, Taurus]zkStudyClub: Zero-Knowledge Proofs Security, in Practice [JP Aumasson, Taurus]
zkStudyClub: Zero-Knowledge Proofs Security, in Practice [JP Aumasson, Taurus]
Alex Pruden
 
zkStudyClub: PLONKUP & Reinforced Concrete [Luke Pearson, Joshua Fitzgerald, ...
zkStudyClub: PLONKUP & Reinforced Concrete [Luke Pearson, Joshua Fitzgerald, ...zkStudyClub: PLONKUP & Reinforced Concrete [Luke Pearson, Joshua Fitzgerald, ...
zkStudyClub: PLONKUP & Reinforced Concrete [Luke Pearson, Joshua Fitzgerald, ...
Alex Pruden
 
zkStudy Club: Subquadratic SNARGs in the Random Oracle Model
zkStudy Club: Subquadratic SNARGs in the Random Oracle ModelzkStudy Club: Subquadratic SNARGs in the Random Oracle Model
zkStudy Club: Subquadratic SNARGs in the Random Oracle Model
Alex Pruden
 
ZK Study Club: Sumcheck Arguments and Their Applications
ZK Study Club: Sumcheck Arguments and Their ApplicationsZK Study Club: Sumcheck Arguments and Their Applications
ZK Study Club: Sumcheck Arguments and Their Applications
Alex Pruden
 
Ecfft zk studyclub 9.9
Ecfft zk studyclub 9.9Ecfft zk studyclub 9.9
Ecfft zk studyclub 9.9
Alex Pruden
 
Quarks zk study-club
Quarks zk study-clubQuarks zk study-club
Quarks zk study-club
Alex Pruden
 
zkStudyClub: CirC and Compiling Programs to Circuits
zkStudyClub: CirC and Compiling Programs to CircuitszkStudyClub: CirC and Compiling Programs to Circuits
zkStudyClub: CirC and Compiling Programs to Circuits
Alex Pruden
 

More from Alex Pruden (16)

zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 
zkStudyClub - zkSaaS (Sruthi Sekar, UCB)
zkStudyClub - zkSaaS (Sruthi Sekar, UCB)zkStudyClub - zkSaaS (Sruthi Sekar, UCB)
zkStudyClub - zkSaaS (Sruthi Sekar, UCB)
 
zkStudyClub - Lasso/Jolt (Justin Thaler, GWU/a16z)
zkStudyClub - Lasso/Jolt (Justin Thaler, GWU/a16z)zkStudyClub - Lasso/Jolt (Justin Thaler, GWU/a16z)
zkStudyClub - Lasso/Jolt (Justin Thaler, GWU/a16z)
 
zkStudyClub - Improving performance of non-native arithmetic in SNARKs (Ivo K...
zkStudyClub - Improving performance of non-native arithmetic in SNARKs (Ivo K...zkStudyClub - Improving performance of non-native arithmetic in SNARKs (Ivo K...
zkStudyClub - Improving performance of non-native arithmetic in SNARKs (Ivo K...
 
zkStudyClub - ProtoStar (Binyi Chen & Benedikt Bünz, Espresso Systems)
zkStudyClub - ProtoStar (Binyi Chen & Benedikt Bünz, Espresso Systems)zkStudyClub - ProtoStar (Binyi Chen & Benedikt Bünz, Espresso Systems)
zkStudyClub - ProtoStar (Binyi Chen & Benedikt Bünz, Espresso Systems)
 
ZK Study Club: Supernova (Srinath Setty - MS Research)
ZK Study Club: Supernova (Srinath Setty - MS Research)ZK Study Club: Supernova (Srinath Setty - MS Research)
ZK Study Club: Supernova (Srinath Setty - MS Research)
 
Eos - Efficient Private Delegation of zkSNARK provers
Eos  - Efficient Private Delegation of zkSNARK proversEos  - Efficient Private Delegation of zkSNARK provers
Eos - Efficient Private Delegation of zkSNARK provers
 
zkStudyClub: HyperPlonk (Binyi Chen, Benedikt Bünz)
zkStudyClub: HyperPlonk (Binyi Chen, Benedikt Bünz)zkStudyClub: HyperPlonk (Binyi Chen, Benedikt Bünz)
zkStudyClub: HyperPlonk (Binyi Chen, Benedikt Bünz)
 
Caulk: zkStudyClub: Caulk - Lookup Arguments in Sublinear Time (A. Zapico)
Caulk: zkStudyClub: Caulk - Lookup Arguments in Sublinear Time (A. Zapico)Caulk: zkStudyClub: Caulk - Lookup Arguments in Sublinear Time (A. Zapico)
Caulk: zkStudyClub: Caulk - Lookup Arguments in Sublinear Time (A. Zapico)
 
zkStudyClub: Zero-Knowledge Proofs Security, in Practice [JP Aumasson, Taurus]
zkStudyClub: Zero-Knowledge Proofs Security, in Practice [JP Aumasson, Taurus]zkStudyClub: Zero-Knowledge Proofs Security, in Practice [JP Aumasson, Taurus]
zkStudyClub: Zero-Knowledge Proofs Security, in Practice [JP Aumasson, Taurus]
 
zkStudyClub: PLONKUP & Reinforced Concrete [Luke Pearson, Joshua Fitzgerald, ...
zkStudyClub: PLONKUP & Reinforced Concrete [Luke Pearson, Joshua Fitzgerald, ...zkStudyClub: PLONKUP & Reinforced Concrete [Luke Pearson, Joshua Fitzgerald, ...
zkStudyClub: PLONKUP & Reinforced Concrete [Luke Pearson, Joshua Fitzgerald, ...
 
zkStudy Club: Subquadratic SNARGs in the Random Oracle Model
zkStudy Club: Subquadratic SNARGs in the Random Oracle ModelzkStudy Club: Subquadratic SNARGs in the Random Oracle Model
zkStudy Club: Subquadratic SNARGs in the Random Oracle Model
 
ZK Study Club: Sumcheck Arguments and Their Applications
ZK Study Club: Sumcheck Arguments and Their ApplicationsZK Study Club: Sumcheck Arguments and Their Applications
ZK Study Club: Sumcheck Arguments and Their Applications
 
Ecfft zk studyclub 9.9
Ecfft zk studyclub 9.9Ecfft zk studyclub 9.9
Ecfft zk studyclub 9.9
 
Quarks zk study-club
Quarks zk study-clubQuarks zk study-club
Quarks zk study-club
 
zkStudyClub: CirC and Compiling Programs to Circuits
zkStudyClub: CirC and Compiling Programs to CircuitszkStudyClub: CirC and Compiling Programs to Circuits
zkStudyClub: CirC and Compiling Programs to Circuits
 

Recently uploaded

GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
g2nightmarescribd
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 

Recently uploaded (20)

GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 

zkStudyClub - cqlin: Efficient linear operations on KZG commitments

  • 1. cqlin New Applications for Universal, Pairing Based SNARKs with Preprocessing Liam Eagen Blockstream Research June 2, 2023 Liam Eagen (Blockstream Research) cqlin June 2, 2023 1 / 17
  • 2. Motivation Lin-check problem is ubiquitous in SNARKs Liam Eagen (Blockstream Research) cqlin June 2, 2023 2 / 17
  • 3. Motivation Lin-check problem is ubiquitous in SNARKs Many approaches linear in sparsity (number of non-zero entries) of matrix Liam Eagen (Blockstream Research) cqlin June 2, 2023 2 / 17
  • 4. Motivation Lin-check problem is ubiquitous in SNARKs Many approaches linear in sparsity (number of non-zero entries) of matrix This is O(n2) for dense matrices Liam Eagen (Blockstream Research) cqlin June 2, 2023 2 / 17
  • 5. Motivation Lin-check problem is ubiquitous in SNARKs Many approaches linear in sparsity (number of non-zero entries) of matrix This is O(n2) for dense matrices Dense matrix multiplication useful in zkML Liam Eagen (Blockstream Research) cqlin June 2, 2023 2 / 17
  • 6. Motivation Lin-check problem is ubiquitous in SNARKs Many approaches linear in sparsity (number of non-zero entries) of matrix This is O(n2) for dense matrices Dense matrix multiplication useful in zkML Prior work [GKMMM] implies O(n) lin-check protocol ▶ Special SRS depends on the size of the matrix ▶ Has O(n3 ) setup time Liam Eagen (Blockstream Research) cqlin June 2, 2023 2 / 17
  • 7. Why Pairings and Preprocessing? Ariel’s SNARK trilogy (zkSummit 9/Zero Knowledge Podcast ep. 274) Liam Eagen (Blockstream Research) cqlin June 2, 2023 3 / 17
  • 8. Why Pairings and Preprocessing? Ariel’s SNARK trilogy (zkSummit 9/Zero Knowledge Podcast ep. 274) 1 Pairings get succinctness without PCP, need per-circuit trusted setup Liam Eagen (Blockstream Research) cqlin June 2, 2023 3 / 17
  • 9. Why Pairings and Preprocessing? Ariel’s SNARK trilogy (zkSummit 9/Zero Knowledge Podcast ep. 274) 1 Pairings get succinctness without PCP, need per-circuit trusted setup 2 Polynomial commitment schemes abstract pairing, universal trusted setup Liam Eagen (Blockstream Research) cqlin June 2, 2023 3 / 17
  • 10. Why Pairings and Preprocessing? Ariel’s SNARK trilogy (zkSummit 9/Zero Knowledge Podcast ep. 274) 1 Pairings get succinctness without PCP, need per-circuit trusted setup 2 Polynomial commitment schemes abstract pairing, universal trusted setup 3 Pairing with preprocessing breaks PCS abstraction for more power in particular applications, e.g. lookup arguments Liam Eagen (Blockstream Research) cqlin June 2, 2023 3 / 17
  • 11. Why Pairings and Preprocessing? Ariel’s SNARK trilogy (zkSummit 9/Zero Knowledge Podcast ep. 274) 1 Pairings get succinctness without PCP, need per-circuit trusted setup 2 Polynomial commitment schemes abstract pairing, universal trusted setup 3 Pairing with preprocessing breaks PCS abstraction for more power in particular applications, e.g. lookup arguments What other applications benefit from pairings and preprocessing? Liam Eagen (Blockstream Research) cqlin June 2, 2023 3 / 17
  • 12. Why Pairings and Preprocessing? Ariel’s SNARK trilogy (zkSummit 9/Zero Knowledge Podcast ep. 274) 1 Pairings get succinctness without PCP, need per-circuit trusted setup 2 Polynomial commitment schemes abstract pairing, universal trusted setup 3 Pairing with preprocessing breaks PCS abstraction for more power in particular applications, e.g. lookup arguments What other applications benefit from pairings and preprocessing? cqlin! Liam Eagen (Blockstream Research) cqlin June 2, 2023 3 / 17
  • 13. Preliminaries Fix a pairing friendly curve Liam Eagen (Blockstream Research) cqlin June 2, 2023 4 / 17
  • 14. Preliminaries Fix a pairing friendly curve Commit to polynomials using KZG, write [F(x)] for commitment to polynomial F(X) Liam Eagen (Blockstream Research) cqlin June 2, 2023 4 / 17
  • 15. Preliminaries Fix a pairing friendly curve Commit to polynomials using KZG, write [F(x)] for commitment to polynomial F(X) Prove F(a) = b by proving Q(X) = (F(X) − b)/(X − a) is a polynomial Liam Eagen (Blockstream Research) cqlin June 2, 2023 4 / 17
  • 16. Preliminaries Fix a pairing friendly curve Commit to polynomials using KZG, write [F(x)] for commitment to polynomial F(X) Prove F(a) = b by proving Q(X) = (F(X) − b)/(X − a) is a polynomial More generally for Z(X) = Q i (X − ai ), F(ai ) = G(ai ) iff F(X) = G(X) mod Z(X) Liam Eagen (Blockstream Research) cqlin June 2, 2023 4 / 17
  • 17. Preliminaries Fix a pairing friendly curve Commit to polynomials using KZG, write [F(x)] for commitment to polynomial F(X) Prove F(a) = b by proving Q(X) = (F(X) − b)/(X − a) is a polynomial More generally for Z(X) = Q i (X − ai ), F(ai ) = G(ai ) iff F(X) = G(X) mod Z(X) Equivalently, if there exists a polynomial Q(X) = (F(X) − G(X))/Z(X) Liam Eagen (Blockstream Research) cqlin June 2, 2023 4 / 17
  • 18. Preliminaries Let ω be a root of unity or order N Liam Eagen (Blockstream Research) cqlin June 2, 2023 5 / 17
  • 19. Preliminaries Let ω be a root of unity or order N Lagrange polynomials Li (ωj ) = δi,j Liam Eagen (Blockstream Research) cqlin June 2, 2023 5 / 17
  • 20. Preliminaries Let ω be a root of unity or order N Lagrange polynomials Li (ωj ) = δi,j Encode vector ⃗ v ∈ FN as F(ωi ) = vi Liam Eagen (Blockstream Research) cqlin June 2, 2023 5 / 17
  • 21. Preliminaries Let ω be a root of unity or order N Lagrange polynomials Li (ωj ) = δi,j Encode vector ⃗ v ∈ FN as F(ωi ) = vi Equivalently F(X) = P i∈[n] vi Li (X) Liam Eagen (Blockstream Research) cqlin June 2, 2023 5 / 17
  • 22. Preliminaries Let ω be a root of unity or order N Lagrange polynomials Li (ωj ) = δi,j Encode vector ⃗ v ∈ FN as F(ωi ) = vi Equivalently F(X) = P i∈[n] vi Li (X) If deg F(X) < N, then F(0) = P i∈[N] F(ωi ) [Aurora] Liam Eagen (Blockstream Research) cqlin June 2, 2023 5 / 17
  • 23. Sparse Commitments What is a Sparse Commitment? Liam Eagen (Blockstream Research) cqlin June 2, 2023 6 / 17
  • 24. Sparse Commitments What is a Sparse Commitment? Let P(X) be a degree d polynomial In general, committing to [P(x)] requires d scalar multiplications Liam Eagen (Blockstream Research) cqlin June 2, 2023 6 / 17
  • 25. Sparse Commitments What is a Sparse Commitment? Let P(X) be a degree d polynomial In general, committing to [P(x)] requires d scalar multiplications Sometimes, P(X) is sparse with respect to some basis Bi (X) of n ≤ d polynomials Liam Eagen (Blockstream Research) cqlin June 2, 2023 6 / 17
  • 26. Sparse Commitments What is a Sparse Commitment? Let P(X) be a degree d polynomial In general, committing to [P(x)] requires d scalar multiplications Sometimes, P(X) is sparse with respect to some basis Bi (X) of n ≤ d polynomials That is P(X) = P i∈[n] fi Bi (X) where at most k values of fi are non-zero and k << d Liam Eagen (Blockstream Research) cqlin June 2, 2023 6 / 17
  • 27. Sparse Commitments What is a Sparse Commitment? Let P(X) be a degree d polynomial In general, committing to [P(x)] requires d scalar multiplications Sometimes, P(X) is sparse with respect to some basis Bi (X) of n ≤ d polynomials That is P(X) = P i∈[n] fi Bi (X) where at most k values of fi are non-zero and k << d When P(X) is k, Bi (X) sparse, we can compute a commitment to P(X) in O(k) time given precomputed commitments to Bi (X) Liam Eagen (Blockstream Research) cqlin June 2, 2023 6 / 17
  • 28. Sparse Commitments What is a Sparse Commitment? Let P(X) be a degree d polynomial In general, committing to [P(x)] requires d scalar multiplications Sometimes, P(X) is sparse with respect to some basis Bi (X) of n ≤ d polynomials That is P(X) = P i∈[n] fi Bi (X) where at most k values of fi are non-zero and k << d When P(X) is k, Bi (X) sparse, we can compute a commitment to P(X) in O(k) time given precomputed commitments to Bi (X) P(X) = P i∈[n] ki [Bi (x)] Liam Eagen (Blockstream Research) cqlin June 2, 2023 6 / 17
  • 29. Sparse Commitments What is a Sparse Commitment? Let P(X) be a degree d polynomial In general, committing to [P(x)] requires d scalar multiplications Sometimes, P(X) is sparse with respect to some basis Bi (X) of n ≤ d polynomials That is P(X) = P i∈[n] fi Bi (X) where at most k values of fi are non-zero and k << d When P(X) is k, Bi (X) sparse, we can compute a commitment to P(X) in O(k) time given precomputed commitments to Bi (X) P(X) = P i∈[n] ki [Bi (x)] Sparsity is linear: if P(X) is Bi (X) sparse, then P(X)F(X) is Bi (X)F(X) sparse Liam Eagen (Blockstream Research) cqlin June 2, 2023 6 / 17
  • 30. Sparse Commitments: Simple Examples Assume P(X) is Bi (X) sparse Liam Eagen (Blockstream Research) cqlin June 2, 2023 7 / 17
  • 31. Sparse Commitments: Simple Examples Assume P(X) is Bi (X) sparse 1 Degree Checks Liam Eagen (Blockstream Research) cqlin June 2, 2023 7 / 17
  • 32. Sparse Commitments: Simple Examples Assume P(X) is Bi (X) sparse 1 Degree Checks 1 Suppose want to show deg P(X) = d, but SRS has degree N Liam Eagen (Blockstream Research) cqlin June 2, 2023 7 / 17
  • 33. Sparse Commitments: Simple Examples Assume P(X) is Bi (X) sparse 1 Degree Checks 1 Suppose want to show deg P(X) = d, but SRS has degree N 2 Precompute Di = [xN−d Bi (x)] Liam Eagen (Blockstream Research) cqlin June 2, 2023 7 / 17
  • 34. Sparse Commitments: Simple Examples Assume P(X) is Bi (X) sparse 1 Degree Checks 1 Suppose want to show deg P(X) = d, but SRS has degree N 2 Precompute Di = [xN−d Bi (x)] 3 Prover can compute D = P i∈[n] fi Di in O(k) time 4 Verifier checks e([P(x)], [xN−d ]) = e(D, [1]) Liam Eagen (Blockstream Research) cqlin June 2, 2023 7 / 17
  • 35. Sparse Commitments: Simple Examples Assume P(X) is Bi (X) sparse 1 Degree Checks 1 Suppose want to show deg P(X) = d, but SRS has degree N 2 Precompute Di = [xN−d Bi (x)] 3 Prover can compute D = P i∈[n] fi Di in O(k) time 4 Verifier checks e([P(x)], [xN−d ]) = e(D, [1]) 2 Opening at fixed value Liam Eagen (Blockstream Research) cqlin June 2, 2023 7 / 17
  • 36. Sparse Commitments: Simple Examples Assume P(X) is Bi (X) sparse 1 Degree Checks 1 Suppose want to show deg P(X) = d, but SRS has degree N 2 Precompute Di = [xN−d Bi (x)] 3 Prover can compute D = P i∈[n] fi Di in O(k) time 4 Verifier checks e([P(x)], [xN−d ]) = e(D, [1]) 2 Opening at fixed value 1 Suppose prover wants to open P(0) = c, for example as part of sum-check Liam Eagen (Blockstream Research) cqlin June 2, 2023 7 / 17
  • 37. Sparse Commitments: Simple Examples Assume P(X) is Bi (X) sparse 1 Degree Checks 1 Suppose want to show deg P(X) = d, but SRS has degree N 2 Precompute Di = [xN−d Bi (x)] 3 Prover can compute D = P i∈[n] fi Di in O(k) time 4 Verifier checks e([P(x)], [xN−d ]) = e(D, [1]) 2 Opening at fixed value 1 Suppose prover wants to open P(0) = c, for example as part of sum-check 2 Precompute Zi = [Bi (x) − Bi (0)/x] Liam Eagen (Blockstream Research) cqlin June 2, 2023 7 / 17
  • 38. Sparse Commitments: Simple Examples Assume P(X) is Bi (X) sparse 1 Degree Checks 1 Suppose want to show deg P(X) = d, but SRS has degree N 2 Precompute Di = [xN−d Bi (x)] 3 Prover can compute D = P i∈[n] fi Di in O(k) time 4 Verifier checks e([P(x)], [xN−d ]) = e(D, [1]) 2 Opening at fixed value 1 Suppose prover wants to open P(0) = c, for example as part of sum-check 2 Precompute Zi = [Bi (x) − Bi (0)/x] 3 Prover can compute Z = P i∈[n] fi Zi in O(k) time 4 Verifier checks e([P(x)] − c[1], [1]) = e(Z, [x]) Liam Eagen (Blockstream Research) cqlin June 2, 2023 7 / 17
  • 39. Sparse Commitments: cq and Lookup Arguments Sparse commitments are a key part of lookup arguments [Caulk,etc.] especially cq Liam Eagen (Blockstream Research) cqlin June 2, 2023 8 / 17
  • 40. Sparse Commitments: cq and Lookup Arguments Sparse commitments are a key part of lookup arguments [Caulk,etc.] especially cq Given T(X) encoding a table ⃗ t ∈ FN, want to prove T(ωi ) = v for some i Liam Eagen (Blockstream Research) cqlin June 2, 2023 8 / 17
  • 41. Sparse Commitments: cq and Lookup Arguments Sparse commitments are a key part of lookup arguments [Caulk,etc.] especially cq Given T(X) encoding a table ⃗ t ∈ FN, want to prove T(ωi ) = v for some i Let A(X) be n Lagrange sparse and B(X) and Q(X) satisfy T(X)A(X) = B(X) + (XN − 1)Q(X) Liam Eagen (Blockstream Research) cqlin June 2, 2023 8 / 17
  • 42. Sparse Commitments: cq and Lookup Arguments Sparse commitments are a key part of lookup arguments [Caulk,etc.] especially cq Given T(X) encoding a table ⃗ t ∈ FN, want to prove T(ωi ) = v for some i Let A(X) be n Lagrange sparse and B(X) and Q(X) satisfy T(X)A(X) = B(X) + (XN − 1)Q(X) T(ωi )A(ωi ) = B(ωi ), so B(X) is also n Lagrange sparse Liam Eagen (Blockstream Research) cqlin June 2, 2023 8 / 17
  • 43. Sparse Commitments: cq and Lookup Arguments Sparse commitments are a key part of lookup arguments [Caulk,etc.] especially cq Given T(X) encoding a table ⃗ t ∈ FN, want to prove T(ωi ) = v for some i Let A(X) be n Lagrange sparse and B(X) and Q(X) satisfy T(X)A(X) = B(X) + (XN − 1)Q(X) T(ωi )A(ωi ) = B(ωi ), so B(X) is also n Lagrange sparse Q(X) is n sparse wrt to the basis Qi (X) such that T(X)Li (X) = ti Li (X) + (XN − 1)Qi (X) Liam Eagen (Blockstream Research) cqlin June 2, 2023 8 / 17
  • 44. Sparse Commitments: cq and Lookup Arguments Sparse commitments are a key part of lookup arguments [Caulk,etc.] especially cq Given T(X) encoding a table ⃗ t ∈ FN, want to prove T(ωi ) = v for some i Let A(X) be n Lagrange sparse and B(X) and Q(X) satisfy T(X)A(X) = B(X) + (XN − 1)Q(X) T(ωi )A(ωi ) = B(ωi ), so B(X) is also n Lagrange sparse Q(X) is n sparse wrt to the basis Qi (X) such that T(X)Li (X) = ti Li (X) + (XN − 1)Qi (X) Can compute all [Qi (x)] in O(N log N) time using FK technique Liam Eagen (Blockstream Research) cqlin June 2, 2023 8 / 17
  • 45. Sparse Commitments: cq and Lookup Arguments Sparse commitments are a key part of lookup arguments [Caulk,etc.] especially cq Given T(X) encoding a table ⃗ t ∈ FN, want to prove T(ωi ) = v for some i Let A(X) be n Lagrange sparse and B(X) and Q(X) satisfy T(X)A(X) = B(X) + (XN − 1)Q(X) T(ωi )A(ωi ) = B(ωi ), so B(X) is also n Lagrange sparse Q(X) is n sparse wrt to the basis Qi (X) such that T(X)Li (X) = ti Li (X) + (XN − 1)Qi (X) Can compute all [Qi (x)] in O(N log N) time using FK technique Can commit to [A(x)], [B(x)], and [Q(x)] in O(n) scalar multiplications Liam Eagen (Blockstream Research) cqlin June 2, 2023 8 / 17
  • 46. Sparse Commitments: cq and Lookup Arguments Sparse commitments are a key part of lookup arguments [Caulk,etc.] especially cq Given T(X) encoding a table ⃗ t ∈ FN, want to prove T(ωi ) = v for some i Let A(X) be n Lagrange sparse and B(X) and Q(X) satisfy T(X)A(X) = B(X) + (XN − 1)Q(X) T(ωi )A(ωi ) = B(ωi ), so B(X) is also n Lagrange sparse Q(X) is n sparse wrt to the basis Qi (X) such that T(X)Li (X) = ti Li (X) + (XN − 1)Qi (X) Can compute all [Qi (x)] in O(N log N) time using FK technique Can commit to [A(x)], [B(x)], and [Q(x)] in O(n) scalar multiplications cq defines A(X) and B(X) to encode log derivative lookup [BP++, MVLookup] Liam Eagen (Blockstream Research) cqlin June 2, 2023 8 / 17
  • 47. Lin-Check Fix n × n matrix M Liam Eagen (Blockstream Research) cqlin June 2, 2023 9 / 17
  • 48. Lin-Check Fix n × n matrix M Given commitments to vectors ⃗ a and ⃗ b show M⃗ a = ⃗ b Liam Eagen (Blockstream Research) cqlin June 2, 2023 9 / 17
  • 49. Lin-Check Fix n × n matrix M Given commitments to vectors ⃗ a and ⃗ b show M⃗ a = ⃗ b Goal: do this in O(n) group and scalar operations Liam Eagen (Blockstream Research) cqlin June 2, 2023 9 / 17
  • 50. Lin-Check Fix n × n matrix M Given commitments to vectors ⃗ a and ⃗ b show M⃗ a = ⃗ b Goal: do this in O(n) group and scalar operations How? Liam Eagen (Blockstream Research) cqlin June 2, 2023 9 / 17
  • 51. Lin-Check Fix n × n matrix M Given commitments to vectors ⃗ a and ⃗ b show M⃗ a = ⃗ b Goal: do this in O(n) group and scalar operations How? 1 State M⃗ a = ⃗ b in terms of (bivariate) polynomials Liam Eagen (Blockstream Research) cqlin June 2, 2023 9 / 17
  • 52. Lin-Check Fix n × n matrix M Given commitments to vectors ⃗ a and ⃗ b show M⃗ a = ⃗ b Goal: do this in O(n) group and scalar operations How? 1 State M⃗ a = ⃗ b in terms of (bivariate) polynomials 2 Use a pairing to perform M⃗ a as polynomial multiplication Liam Eagen (Blockstream Research) cqlin June 2, 2023 9 / 17
  • 53. Lin-Check Fix n × n matrix M Given commitments to vectors ⃗ a and ⃗ b show M⃗ a = ⃗ b Goal: do this in O(n) group and scalar operations How? 1 State M⃗ a = ⃗ b in terms of (bivariate) polynomials 2 Use a pairing to perform M⃗ a as polynomial multiplication 3 Exploit the fact M is fixed and precompute quotients Liam Eagen (Blockstream Research) cqlin June 2, 2023 9 / 17
  • 54. Lin-Check Fix n × n matrix M Given commitments to vectors ⃗ a and ⃗ b show M⃗ a = ⃗ b Goal: do this in O(n) group and scalar operations How? 1 State M⃗ a = ⃗ b in terms of (bivariate) polynomials 2 Use a pairing to perform M⃗ a as polynomial multiplication 3 Exploit the fact M is fixed and precompute quotients 4 Find a sparse basis for all commitments Liam Eagen (Blockstream Research) cqlin June 2, 2023 9 / 17
  • 55. Lin-Check Fix n × n matrix M Given commitments to vectors ⃗ a and ⃗ b show M⃗ a = ⃗ b Goal: do this in O(n) group and scalar operations How? 1 State M⃗ a = ⃗ b in terms of (bivariate) polynomials 2 Use a pairing to perform M⃗ a as polynomial multiplication 3 Exploit the fact M is fixed and precompute quotients 4 Find a sparse basis for all commitments 5 Commit to everything in O(n) group scalar multiplications Liam Eagen (Blockstream Research) cqlin June 2, 2023 9 / 17
  • 56. Lin-Check Fix n × n matrix M Given commitments to vectors ⃗ a and ⃗ b show M⃗ a = ⃗ b Goal: do this in O(n) group and scalar operations How? 1 State M⃗ a = ⃗ b in terms of (bivariate) polynomials 2 Use a pairing to perform M⃗ a as polynomial multiplication 3 Exploit the fact M is fixed and precompute quotients 4 Find a sparse basis for all commitments 5 Commit to everything in O(n) group scalar multiplications 6 Reduce bivariate form to univariate form Liam Eagen (Blockstream Research) cqlin June 2, 2023 9 / 17
  • 57. Encode into Polynomials Recall: M⃗ a = P i∈[n] ai ⃗ ci where ⃗ ci the columns of M Liam Eagen (Blockstream Research) cqlin June 2, 2023 10 / 17
  • 58. Encode into Polynomials Recall: M⃗ a = P i∈[n] ai ⃗ ci where ⃗ ci the columns of M Encode ⃗ b and ⃗ ci pointwise as polynomials B(X) and Ci (X) Liam Eagen (Blockstream Research) cqlin June 2, 2023 10 / 17
  • 59. Encode into Polynomials Recall: M⃗ a = P i∈[n] ai ⃗ ci where ⃗ ci the columns of M Encode ⃗ b and ⃗ ci pointwise as polynomials B(X) and Ci (X) Now: M⃗ a = ⃗ b iff P i∈[n] ai Ci (X) = B(X) Liam Eagen (Blockstream Research) cqlin June 2, 2023 10 / 17
  • 60. Encode into Polynomials Recall: M⃗ a = P i∈[n] ai ⃗ ci where ⃗ ci the columns of M Encode ⃗ b and ⃗ ci pointwise as polynomials B(X) and Ci (X) Now: M⃗ a = ⃗ b iff P i∈[n] ai Ci (X) = B(X) M is a vector of vectors, so we can encode into bivariate M(X, Y ) such that M(X, ωi ) = Ci (X) Liam Eagen (Blockstream Research) cqlin June 2, 2023 10 / 17
  • 61. Encode into Polynomials Recall: M⃗ a = P i∈[n] ai ⃗ ci where ⃗ ci the columns of M Encode ⃗ b and ⃗ ci pointwise as polynomials B(X) and Ci (X) Now: M⃗ a = ⃗ b iff P i∈[n] ai Ci (X) = B(X) M is a vector of vectors, so we can encode into bivariate M(X, Y ) such that M(X, ωi ) = Ci (X) Encode ⃗ a as polynomial A(Y ) Liam Eagen (Blockstream Research) cqlin June 2, 2023 10 / 17
  • 62. Encode into Polynomials Recall: M⃗ a = P i∈[n] ai ⃗ ci where ⃗ ci the columns of M Encode ⃗ b and ⃗ ci pointwise as polynomials B(X) and Ci (X) Now: M⃗ a = ⃗ b iff P i∈[n] ai Ci (X) = B(X) M is a vector of vectors, so we can encode into bivariate M(X, Y ) such that M(X, ωi ) = Ci (X) Encode ⃗ a as polynomial A(Y ) Now: M⃗ a = ⃗ b iff P i∈[n] A(ωi )M(X, ωi ) = B(X) Liam Eagen (Blockstream Research) cqlin June 2, 2023 10 / 17
  • 63. Encode into Polynomials (cont.) Let R(X, ωi ) = M(X, ωi )A(ωi ) = ai Ci (X) Liam Eagen (Blockstream Research) cqlin June 2, 2023 11 / 17
  • 64. Encode into Polynomials (cont.) Let R(X, ωi ) = M(X, ωi )A(ωi ) = ai Ci (X) Which means R(X, Y ) = M(X, Y )A(Y ) mod Y n − 1 Liam Eagen (Blockstream Research) cqlin June 2, 2023 11 / 17
  • 65. Encode into Polynomials (cont.) Let R(X, ωi ) = M(X, ωi )A(ωi ) = ai Ci (X) Which means R(X, Y ) = M(X, Y )A(Y ) mod Y n − 1 Which means R(X, Y ) = M(X, Y )A(Y ) + (Y n − 1)Q(X, Y ) Liam Eagen (Blockstream Research) cqlin June 2, 2023 11 / 17
  • 66. Encode into Polynomials (cont.) Let R(X, ωi ) = M(X, ωi )A(ωi ) = ai Ci (X) Which means R(X, Y ) = M(X, Y )A(Y ) mod Y n − 1 Which means R(X, Y ) = M(X, Y )A(Y ) + (Y n − 1)Q(X, Y ) Now: M⃗ a = ⃗ b iff 1 R(X, Y ) = M(X, Y )A(Y ) + (Y n − 1)Q(X, Y ) 2 P i∈[n] R(X, ωi ) = B(X) 3 degY R(X, Y ) < n, etc. Liam Eagen (Blockstream Research) cqlin June 2, 2023 11 / 17
  • 67. Encode into Polynomials (cont.) Let R(X, ωi ) = M(X, ωi )A(ωi ) = ai Ci (X) Which means R(X, Y ) = M(X, Y )A(Y ) mod Y n − 1 Which means R(X, Y ) = M(X, Y )A(Y ) + (Y n − 1)Q(X, Y ) Now: M⃗ a = ⃗ b iff 1 R(X, Y ) = M(X, Y )A(Y ) + (Y n − 1)Q(X, Y ) 2 P i∈[n] R(X, ωi ) = B(X) 3 degY R(X, Y ) < n, etc. Sum-check equivalent to R(X, 0) = B(X) Liam Eagen (Blockstream Research) cqlin June 2, 2023 11 / 17
  • 68. Proving in Linear Time Want to construct [A(y)], [B(x)], [R(x, y)], and [Q(x, y)] in O(n) time Liam Eagen (Blockstream Research) cqlin June 2, 2023 12 / 17
  • 69. Proving in Linear Time Want to construct [A(y)], [B(x)], [R(x, y)], and [Q(x, y)] in O(n) time Need to find basis for each that is n sparse Liam Eagen (Blockstream Research) cqlin June 2, 2023 12 / 17
  • 70. Proving in Linear Time Want to construct [A(y)], [B(x)], [R(x, y)], and [Q(x, y)] in O(n) time Need to find basis for each that is n sparse Commitments to A(Y ) and B(X) are easy given [Li (x)] and [Li (y)] Liam Eagen (Blockstream Research) cqlin June 2, 2023 12 / 17
  • 71. Proving in Linear Time Want to construct [A(y)], [B(x)], [R(x, y)], and [Q(x, y)] in O(n) time Need to find basis for each that is n sparse Commitments to A(Y ) and B(X) are easy given [Li (x)] and [Li (y)] Degree checks are also easy Liam Eagen (Blockstream Research) cqlin June 2, 2023 12 / 17
  • 72. Proving in Linear Time Want to construct [A(y)], [B(x)], [R(x, y)], and [Q(x, y)] in O(n) time Need to find basis for each that is n sparse Commitments to A(Y ) and B(X) are easy given [Li (x)] and [Li (y)] Degree checks are also easy Can compute [R(x, y)] = P i∈[n] ai [Li (y)Ci (x)] in O(n) scalar multiplications given precomputed [Li (y)Ci (x)] Liam Eagen (Blockstream Research) cqlin June 2, 2023 12 / 17
  • 73. Proving in Linear Time Want to construct [A(y)], [B(x)], [R(x, y)], and [Q(x, y)] in O(n) time Need to find basis for each that is n sparse Commitments to A(Y ) and B(X) are easy given [Li (x)] and [Li (y)] Degree checks are also easy Can compute [R(x, y)] = P i∈[n] ai [Li (y)Ci (x)] in O(n) scalar multiplications given precomputed [Li (y)Ci (x)] The sum check can be computed in O(n) time using KZG openings of Li (Y )Ci (X) at Y = 0 Liam Eagen (Blockstream Research) cqlin June 2, 2023 12 / 17
  • 74. Proving in Linear Time Want to construct [A(y)], [B(x)], [R(x, y)], and [Q(x, y)] in O(n) time Need to find basis for each that is n sparse Commitments to A(Y ) and B(X) are easy given [Li (x)] and [Li (y)] Degree checks are also easy Can compute [R(x, y)] = P i∈[n] ai [Li (y)Ci (x)] in O(n) scalar multiplications given precomputed [Li (y)Ci (x)] The sum check can be computed in O(n) time using KZG openings of Li (Y )Ci (X) at Y = 0 How to compute Q(X, Y )? Use the cq technique Liam Eagen (Blockstream Research) cqlin June 2, 2023 12 / 17
  • 75. Proving in Linear Time Want to construct [A(y)], [B(x)], [R(x, y)], and [Q(x, y)] in O(n) time Need to find basis for each that is n sparse Commitments to A(Y ) and B(X) are easy given [Li (x)] and [Li (y)] Degree checks are also easy Can compute [R(x, y)] = P i∈[n] ai [Li (y)Ci (x)] in O(n) scalar multiplications given precomputed [Li (y)Ci (x)] The sum check can be computed in O(n) time using KZG openings of Li (Y )Ci (X) at Y = 0 How to compute Q(X, Y )? Use the cq technique Define Qi (X, Y ) such that Ci (X)Li (Y ) = M(X, Y )Li (Y ) + (Y n − 1)Qi (X, Y ) Liam Eagen (Blockstream Research) cqlin June 2, 2023 12 / 17
  • 76. Proving in Linear Time Want to construct [A(y)], [B(x)], [R(x, y)], and [Q(x, y)] in O(n) time Need to find basis for each that is n sparse Commitments to A(Y ) and B(X) are easy given [Li (x)] and [Li (y)] Degree checks are also easy Can compute [R(x, y)] = P i∈[n] ai [Li (y)Ci (x)] in O(n) scalar multiplications given precomputed [Li (y)Ci (x)] The sum check can be computed in O(n) time using KZG openings of Li (Y )Ci (X) at Y = 0 How to compute Q(X, Y )? Use the cq technique Define Qi (X, Y ) such that Ci (X)Li (Y ) = M(X, Y )Li (Y ) + (Y n − 1)Qi (X, Y ) Now [Q(X, Y )] = P i∈[n] ai [Qi (x, y)] can be computed in O(n) time Liam Eagen (Blockstream Research) cqlin June 2, 2023 12 / 17
  • 77. Final touches Prefer to use a univariate SRS Liam Eagen (Blockstream Research) cqlin June 2, 2023 13 / 17
  • 78. Final touches Prefer to use a univariate SRS Can make the substitution Y = Xn Liam Eagen (Blockstream Research) cqlin June 2, 2023 13 / 17
  • 79. Final touches Prefer to use a univariate SRS Can make the substitution Y = Xn Prefer to accept the input vector via F(X) that pointwise encodes ⃗ a rather than A(Y ) Liam Eagen (Blockstream Research) cqlin June 2, 2023 13 / 17
  • 80. Final touches Prefer to use a univariate SRS Can make the substitution Y = Xn Prefer to accept the input vector via F(X) that pointwise encodes ⃗ a rather than A(Y ) Can check A(α) = F(αn) at a random point in O(n) time Liam Eagen (Blockstream Research) cqlin June 2, 2023 13 / 17
  • 81. Final touches Prefer to use a univariate SRS Can make the substitution Y = Xn Prefer to accept the input vector via F(X) that pointwise encodes ⃗ a rather than A(Y ) Can check A(α) = F(αn) at a random point in O(n) time That’s it! Given O(n) precomputed commitments can prove lin-check in O(n) time Liam Eagen (Blockstream Research) cqlin June 2, 2023 13 / 17
  • 82. Future Work Improvements to cqlin Liam Eagen (Blockstream Research) cqlin June 2, 2023 14 / 17
  • 83. Future Work Improvements to cqlin ▶ Generalize to other vanishing sets Liam Eagen (Blockstream Research) cqlin June 2, 2023 14 / 17
  • 84. Future Work Improvements to cqlin ▶ Generalize to other vanishing sets ▶ Reduce prover work and/or proof size Liam Eagen (Blockstream Research) cqlin June 2, 2023 14 / 17
  • 85. Future Work Improvements to cqlin ▶ Generalize to other vanishing sets ▶ Reduce prover work and/or proof size ▶ Improve setup time and SRS size for sparse matrices Liam Eagen (Blockstream Research) cqlin June 2, 2023 14 / 17
  • 86. Future Work Improvements to cqlin ▶ Generalize to other vanishing sets ▶ Reduce prover work and/or proof size ▶ Improve setup time and SRS size for sparse matrices Other applications of precomputation and pairings? Liam Eagen (Blockstream Research) cqlin June 2, 2023 14 / 17
  • 87. Thank You! Liam Eagen (Blockstream Research) cqlin June 2, 2023 15 / 17
  • 88. Precomputation Most of the precomputation straightforward 1 Degree checks very simple 2 Openings at zero for Li (X) follow from symmetry Complicated part: computing Qi (X, Y ) in O(n2) group operations Solution: use the FK technique on the rows of M(X, Y ) and sum the results FK technique 1 Want to compute KZG openings at N roots of unity 2 Write vector of KZG openings as a 2N × 2N circulant matrix times vector of [xi ] 3 Circulant matrix diagonalizes as FDF−1 where F is the DFT matrix 4 This product computable in O(N log N) + O(N) + O(N log N) = O(N log N) time Takes O(n log n) per row, for a total of O(n2 log n) Liam Eagen (Blockstream Research) cqlin June 2, 2023 16 / 17
  • 89. Precomputation (cont.) Naive FK takes O(n2 log n) group and field operations It is possible to exploit the structure of FK to avoid the extra log n 1 Precompute F−1 times vector of [xi ] 2 Compute D multiplication in O(n) 3 The final F multiplication is linear, so first add the results and then do a single F multiplication 4 Takes O(n2 ) + O(n log n) = O(n2 ) time. Liam Eagen (Blockstream Research) cqlin June 2, 2023 17 / 17