Try โ€‚โ€‰HackMD

What is the KZG PCS

[ฯ„]1 stand for
ฯ„G1

  • Public Parameters:
    srs=([1]1,[ฯ„]1,[ฯ„2]1,[ฯ„3]1,โ€ฆ,[ฯ„nโˆ’1]1,[1]2,[ฯ„]2)
    , where the
    ฯ„
    is a random, and will be deleted to make sure no one knows it after set up.
  • Prover knows:
    f(X)=a0+a1X+a2X2+โ‹ฏ+anโˆ’1Xnโˆ’1
  • for a Polynomial
    f(X)
    , its KZG10 Commitment is
    Cf(X)=f(ฯ„)G=a0G+a1ฯ„G+a2ฯ„2G+โ‹ฏanโˆ’1ฯ„nโˆ’1G=a0[1]1+a1[ฯ„]1+a2[ฯ„2]1+โ‹ฏ+anโˆ’1[ฯ„nโˆ’1]1
    , so the Prover can calculate
    Cf(X)
    according to the srs, and public the
    Cf(X)
    at first.
  1. The verifier provides the challenge value
    ฮถ
    to prover, where
    ฮถ
    is a random value.
  2. the prover calculate
    f(ฮถ)=y
    .
  3. the prover calculate
    q(X)
    according to
    f(X)โˆ’y=q(X)โ‹…(Xโˆ’ฮถ)XโˆˆFn
  4. the prover calculate
    Cq(X)=q(ฯ„)G
    according to the srs.
  5. the prover send the values
    y,Cq(X)
    to verifier.
  6. the verifier check
    e(Cf(x)โˆ’yโ‹…[1]1,[1]2)=e(Cq(X),[ฯ„]2โˆ’ฮถโ‹…[1]2)
    , because
    (f(ฯ„)โˆ’y)โ‹…1=q(ฯ„)โ‹…(ฯ„โˆ’ฮถ)
    and
    e([a]1,[b]1)=e(G,H)ab
    , so if
    a1b1=a2b2โ‡’e([a1]1,[b1]2)=e([a2]1,[b2]2)

Reference

f(x)=โˆ‘i=18(fiโ‹…โˆ1โ‰คjโ‰ค8jโ‰ ixโˆ’jiโˆ’j)

f1โ‹…xโˆ’21โˆ’2xโˆ’31โˆ’3xโˆ’41โˆ’4xโˆ’51โˆ’5xโˆ’61โˆ’6xโˆ’71โˆ’7xโˆ’81โˆ’8

c=f(s)G1

ฯ€i=f(s)โˆ’fisโˆ’iโ‹…G1