Getting Started

⚡Lazarus⚡

A Framework of Lattice-based Zero-knowledge Arguments in Rust

0. setup

  • relation R
    • constraints
      • norm check
        • is witness
    • data structure
      • ,
      • is the constant term of
    • params
      • , , , , , are public inputs of dot product constraint system(DPCS)
        • each iteration they are the same?
      • (page 26)
      • (page 26)
      • (page 26)
        • use K and L??
  • sample A, B, C, D in challenge space
    • they are common reference string(CRS)
    • challenge space
      • sample ring element from ring
      • sampled ring element should meet below requirements
        • 23 zero coefficients
        • 31 coefficient that are ±1
        • 10 coefficients that are ±2
      • coefficients are total 64
    • data structure
        • see below decomposition section
        • see below decomposition section
        • ??
  • questions
    • use K and L to compute ??
    • how to get the values of ??

1. commit

  • commit
    • , this is Ajtai commitment
  • decompose and combine
    • problems
      • problem 1:
        • costly to send directly to verifier
        • solution: combine all inner commitments into a shorter outer commitment
      • problem 2:
        • ring elements have arbitrary length of coefficients, not good for commitment
        • solution: decompose and concatenate
          • each coefficient of ring element need to be decomposed to same length with a proper basis, then concatenate them together
    • decompose
      • decompose
        • in total there are in , means
        • choose length , basis
        • decompose , output decomposed
        • concatenate all decomposed , get decomposed
      • decompose
        • since , means choose any 2 items from r items, this a classical combination problem, the result is
        • in total there are in , means
        • choose length , basis
        • decompose , which , output decomposed
        • concatenate all decomposed , get decomposed
      • decomposition params(page 16, 19)
        • : variance for the sum of the coefficients of a challenge polynomial
        • : standard deviation for the coefficients of the vectors
        • , b is used in recurse section
    • combine
      • combine all inner commitments with random matrix B to get a shooter outer commitment
      • also put combination here, because is dependent of all the challenges, so compute it in the very beginning of the protocol
      • finally get:
    • prover sends to verifier
  • data structure
    • ,
    • ,
    • after decompose
      • ,

2. project

  • goal: norm check can be replaced by Johnson-Lindenstrauss projection.
  • why: because the JL proof is more compact than check the long vector
  • need to reach a security level
  • steps
    • verifier do a random sample get then send to prover
      • n: length of
      • d: degree of each element() in
      • sample probability
        • -1: 1/4
        • 0: 1/2
        • 1: 1/4
    • prover calculate
      • ,
    • prover sends
    • verifier check instead of
    • notes: greyhound only use {1, -1} to do the sample
  • new constraint added to: (1) make sure final projection is correct, (2) aggregate
    • =>
    • =>
    • is the j-th row of
    • , just replace with
    • this defines a LaBRADOR compatible constant-term constraint() that can be aggregated
  • data structure
    • n: , length of
    • d: , degree of
    • :

3. aggregate

  • goal: aggregate all dot product constraints
    • aggregate
  • steps
      1. aggregate
      • for security , F' is aggregated to constant-term constraints(why??)
      • F' includes constant-term constraints related to and
      • steps
        • verifier sends random samples: ,
        • aggregate:
          • ,
          • so prover gets:
        • extends integers to full polynomials such that
        • prover sends to verifier
        • verifier checks the constant term
      1. aggregate linear constraints and
      • verifier sends random samples from challenge space: ,
      • compute outer commitment
        • decompose
          • in total there are in , means
          • choose length , basis
          • decompose , output decomposed
          • concatenate all decomposed , get decomposed
  • data structure
    • after decompose
  • questions

4. amortize

  • purpose: achieve small proof size
  • method: instead of checking is satisfied by the witness, verifier will check 3 dot product constraints hold
  • steps
    • verifier sends challenge from challenge space
    • prover calculates
    • provers sends
  • data structure

5. verifier checks(without recursion)

  • dot product constraints
    • 3 dot product constraints check
      • (1)
      • (2)
      • (3)
    • dot product constraints check
  • norm check for
  • params
    • see page 19

6. recurse

  • goal: prove the last message () of each iteration with base protocol recursively until get shooter witness and proof, then output the last message ()
  • steps:
      1. convert last message to new witness vector ,
      • decompose
        • ,
      • combine
      • compose
        • choose how to choose??
        • part 1:
        • part 2:
        • part 3:
      1. use base protocol to prove the new witness
      • get new relation
      • value refer page 15
      1. keep recursing, until proof is small enough
      • need O(log log n) iterations
      • in practice , 6-7 iterations gives the best results
      1. norm check
      • verifier checks(without recursion)
  • data structure
  • params
    • (page 19)
    • is optimal(page 5)