๐Ÿช‘ Session chair: Jan (Duties: Read material above-average carefully ๐Ÿค“; prepare fallback discussions/questions (worst-case: just prepare some quiz questions about the material) ๐Ÿ™‹. Prepare a few slides to guide the session through subtopics (this is not supposed to be a detailed summary of the material)

โœ๏ธ Notetaker: Akira (Duties: Take notes during the session, push them to the wiki afterwards ๐Ÿ“. Moderate to get input for the wiki pages ๐Ÿง . Make people summarize / dumb down discussion results to keep things comprehensible for everyone ๐Ÿง‘โ€โš–๏ธ.)

๐ŸŽฏ Goals

This session covers code-based polynomial commitments. We will particularly focus on the following contents from Lecture 6 (see ๐Ÿ“š Material).

  1. (Linear) Error Correcting Codes

    • Definition
    • Reed-Solomon code
  2. Polynomial commitment from error-correcting codes

    • Vec-Mat product commitment with size proof
    • Proximity test and consistency check
    • Sketch of improvements for the proof size and prover time

โ“ Quiz Questions

General Reed-Solomon facts

  1. Whatโ€™s the Reed-Solomon encoding of (5,0,0,0,โ€ฆ) ?
  2. Why is Reed-Solomon a linear code?
  3. Whatโ€™s the one-line proof that Reed-Solomon Codes have minimum distance ?
  4. What does a โ€œworst-caseโ€ pair of messages with minimum distance between them look like? (depending on the evaluation points )
  5. How many errors can I detect/correct? (Though we wonโ€™t actually use any of this)
  6. What kind of field can we use? Whatโ€™s the advantage compared to the group/pairing commitment world?

Polynomial Commitment from Reed-Solomon

  1. Whatโ€™s the overall strategy to get square-root evaluation proof sizes?
    • Prover commits to polynomial . How?
    • Verifier wants to check that .
      • How is that statement rewritten/decomposed?
      • Which part does the prover compute, which part does the verifier evaluate?
  2. Why not just Merkle-Tree-commit to the coefficients of the polynomial ? Whatโ€™s the benefit of Reed-Solomon-encoding before committing to it?
  3. Why is it important for the verifier to check that the committed matrix is (close to) a commitment to a valid code word? (i.e. why do we need the proximity test?)
  4. What are the chances that I can Merkle-Tree commit to a non-codeword in a way thatโ€™s not detected during proximity testing? Is that an issue?
    • Replace some column with zeros (and be clever when asked for ).
    • Swap two columns (and be clever when asked for ).
    • Multiply a row with a constant (this is a stupid โ€œattackโ€ to include here. Why?)
  5. Whereโ€™s the cryptography in all this? What kind of assumptions do we have to make for the polynomial commitment scheme to work?
  6. For the proximity test optimization of having the prover send the word () instead of the code , how does the verifier compute the code in time (or at least the values from the code he needs to check consistency with the committed columns)? (can he, actually? Slides do claim that runtime)

Towards linear-time computable ECC-based polynomial commitments

  • Whatโ€™s the issue with the Reed-Solomon-based construction above? Regarding space and time?
  • How do expander graphs correspond to a coding scheme? - How can this be generalized beyond ? (I donโ€™t have an answer, I donโ€™t think it was explained in the material)
  • Can anyone summarize the strategy for getting the nice recursive codes?

๐Ÿ“š Material

๐Ÿ“ Notes

Subsession 1 (Oct 10)

Reed-Solomon Codes & proof size polynomial commitment from ECC.

Subsession 2 (Oct 17)

How to improve the .