Intro

_Groth16_은 Pinocchio protocol에 비해 성능을 향상시킨 시스템이다. Pinocchio protocol에 비해 훨씬 적은 수의 페어링으로도 검증이 가능하고 CRS도 더 짧다. 다만 두번의 Trusted setup을 해야한다는 치명적인 단점이 있다.

CRS

  • Toxic waste:
  • → R1CS로부터 생성된 QAP polynomial Q(x)
  • 개의 constraints가 있고, 이다.
  • computation에 개의 variable을 사용하고, 그중 public input은 개이다.

Proving Key:

elements:

elements:

Verification Key:

elements:

elements:

element:

Proof Generation

  • witness vector
  • 랜덤값
  • Proof는 세개의 점 로 이루어진다.

※ 아래 식에서 아래첨자 1 또는 2는 를 의미한다. (e.g. )

위의 점이고 다음식을 만족한다.

위의 점이고 다음식을 만족한다.

위의 점이고 다음식을 만족한다.

Verification

아래 식이 성립하는지 확인함으로써 위에서 생성한 Proof를 검증할 수 있다.

이 식에서 는 이미 verification key 로 주어져있으므로 3개의 paring만 연산하면 된다.

  • 좌변
  • 우변

위 좌변과 우변을 전개한 결과에서 공통 인수들을 소거해보면 임을 알 수 있고, 결론적으로 증명하고자 했던 식을 검증할 수 있게 된다.