Lasso+Jolt에 대해 자세히 알아보기

1. 소개

서문 블로그는 다음과 같습니다.

관련 논문은 다음을 참조하세요.

해당 오픈 소스 코드 구현에 대해서는 다음을 참조하세요.

이 글의 전체적인 구조는 다음과 같습니다.

  • 조회 인수란 무엇입니까?
  • 올가미/졸트란 무엇인가요?
  • 올가미 세부정보
  • 충격 세부 사항
  • 올가미를 도구로 생각하는 방법은 무엇입니까?
    • 그리고 zkVM 외부에서 조회 인수의 적용 시나리오는 무엇입니까?

2. 조회 인수란 무엇입니까?

조회 인수는 다음과 같이 나눌 수 있습니다.

  • 1) 색인화되지 않은 조회 인수:
    • 为부분 집합 관계 증명,即,배치 집합-멤버십 증명—— aa테이블 tt_t 의 특정 하위 집합 .
  • 2) 색인 조회 인수: [Lasso 및 Jolt는 색인 조회 인수를 사용합니다.]
    • 읽기 전용 메모리에서 읽는 경우. 그럴 수도 있지t 는 메모리로 간주됩니다.ai = t [ bi ] a_i=t[b_i]=t [ ]는 bi b_i를읽는다는 뜻입니다.메모리 셀의 값입니다.

범위 확인을 예로 들면 조회 인수는 다음을 참조합니다.

  • 1) 令t = ( 0 , 1 , 2 , 3 , ⋯ , 2 128 − 1 ) t=(0,1,2,3,\cdots,2^{128}-1)=( 0 ,1 ,2 ,3 ,,2128-1 ) NN을갖고 있기 때문에N개의 테이블 요소로 구성된 벡터(예:ttt为미리 결정된 테이블).
  • 2)令a ∈ F ma\in\mathbf{F}^m에프m은 위 표에 포함되어야 하는 값들의 목록이다.
  • 3) 검증인 VV알려진 V : aacma cm_a의 약정 값cm _에이
  • 4) 증명자 PPP 주장:aaa 의 모든 요소는tt .
    증명자PPP는 cma cm_a를알고 있다고 주장합니다.cm _에이오프닝 aaa , 이는 다음과 같습니다:
    • 각각의 i = 0 , ⋯ , m − 1 i=0,\cdots, m-1=0 ,,-1 에는 인덱스bi ∈ { 0 , 1 , ⋯ , N − 1 } b_i\in\{0,1,\cdots, N-1\} 이{ 0 ,1 ,,N-1 } , 사용ai = t [bi] a_i = t [b_i]=t [ ]
  • 5) 이 조회 인수는 일반적으로 색인화되지 않은 조회 인수라고 합니다.

indexed 조회 인수는 검증할 요소에 인덱스 값이 추가됨을 의미하며, indexed 조회 인수는 다음과 같이 정의됩니다. [검증자는 테이블 tt 를 알고 있습니다.t 에 대한 간결한 설명입니다]

  • 1) 令t ∈ F nt\in\mathbf{F}^n에프n 은 NN과 함께N개의 테이블 요소로 구성된 벡터(예:ttt为미리 결정된 테이블).
  • 2) 증명자 PPP 쌍 벡터( ( a 1 , b 1 ) , ⋯ , ( am , bm ) ) ((a_1,b_1),\cdots,(a_m,b_m))( (1,1) ,,( _,)) 커밋합니다.
  • 3) 증명자 PPP는 i = 1 , ⋯ , mi=1,\cdots,m에 대해 주장합니다.=1 ,,m,유ai = t [ bi ] a_i=t[b_i]=t [ ] . 【즉ai a_i为값,bi b_i테이블 tt 에 해당t 의 인덱스 번호PPP는 aa를주장합니다.a 의 모든 요소는ttt 의 해당 인덱스입니다]

3. 올가미/졸트란 무엇인가요?

올가미: (인덱싱된) 조회 인수 집합의 경우:

  • 올가미 증명자 PPP 는 이전 방식보다 훨씬 빠릅니다.
    • 증명자 PPP 의 주요 병목 현상은 커밋 오버헤드입니다.
  • 올가미 증명자 PPP는 더 적은 수의 필드 요소를 커밋하며 커밋할 모든 필드 요소는 작습니다.
  • tt 에 대한 약속 없음많은 테이블에는 필요 하지 않습니다 . [많은 수의 조회 테이블(Jolt에 필요)의 경우 정직한 당사자가 테이블을 커밋하고 전처리할 필요가 없습니다. Lasso 기반 Verifier는 테이블의 약속된 값을 받는 대신 자체적으로 거대한 테이블(50/100/200 정도의 필드 작업만 필요)을 처리할 수 있습니다. ]
  • 대규모 테이블(분해 가능 또는 LDE 구조) 지원:
    • 증명자 PPP 에 대한 커밋 오버헤드는다음과 같습니다. O ( c ( m + N 1 / c ) ) O(c(m+N^{1/c}))O ( ( +N1/ c ))필드 요소.
    • 테이블 분해에는 주로 Prover 오버헤드의 두 가지 측면이 있습니다. 일반적으로 c = 6 c = 6=6 오버헤드의 두 가지 측면의 균형을 맞추려면 다음을 수행합니다.
      • 테이블 크기의 오버헤드에만 의존함
      • 조회 시간의 오버헤드에만 의존함

Jolt: 새로운 zkVM 기술의 경우:

  • 졸트 프루버 PPP 의 커밋 오버헤드 는 이전 방식보다 훨씬 낮습니다.
  • 원시 명령어는 단일 명령어의 전체 평가 테이블을 조회하여 구현됩니다.

4. 올가미 세부정보

4.1 올가미 오버헤드 세부사항

NN 사이즈의 경우N , 매개변수ccc 테이블 , dommm 차 indexed lookup:

  • 올가미 증명자 PPP 오버헤드는 다음과 같습니다:3 cm + c N 1 / c 3cm+cN^{1/c}3cm _ _+N1/ 커밋을 위한 c 필드 요소입니다.
    • 모든 필드 요소는 작습니다. 즉, 집합 { 0 , 1 , ⋯ , m } \{0,1,\cdots,m\} 에 있습니다.{ 0 ,1 ,,m } in:
      • MSM 기반 다항식 커밋 방식, Lasso Prover PP각 (작은) 커밋된 필드 요소에 대해 P는 약 1개의 그룹 작업만 수행하면 됩니다.
        현재 MSM 기반 다항식 확약 방식은 다음과 같습니다.
        • KZG 기반 다항식 확약 방식
        • IPA/Bulletproofs 다항식 약속 체계
        • Hyrax 다항식 약속 체계
        • Dory 다항식 약속 체계
  • 올가미 검증기 VVV 비용은 다음과 같습니다.
    • O ( log ⁡ m ) O(\log m)( 로그 _m ) 현장 작업 및 해시 평가(Fiat-Shamir에서).
    • + 1个크기 N 1 / c N^{1/c} 의 커미트 다항식에 대한 평가 증명N1/ c
    • 합성/재귀를 통해 위의 충분히 낮은 Lasso Verifier VV를 사용할 수 있습니다.V 오버헤드가 더욱 감소됩니다.

c=1 일 때 c=1=1 , Lasso - Basic-Lasso의 특별한 경우에 해당:

  • 기본-올가미 증명자 PPP 에서m + N m + N+N개의 필드 요소가 커밋됩니다.
  • m + N m+N+N개의 필드 요소 중 다수는 0입니다. MSM 기반 다항식 커밋 방식에서는 0이라는 값을 커밋하는 비용도 0, 즉 '무료'이다.
  • m + N m+N+N개의 필드 요소 중 최대2m 2m가2m 0이 아닌 값입니다.
    • 매번 다른 테이블 셀을 읽으면 mm가 됩니다.m 필드 요소는 1이고 나머지 요소는 0입니다.

4.2 거대한 테이블에 올가미 사용하기: c > 1 c>1>1

실제로 대부분의 대규모 조회 테이블은 분해 가능합니다 .

  • 큰 사이즈는 NN 으로 설정 가능크기에 따라 N 1 / c N^{1/c} 로 분해된 N 테이블N1/ c 의 테이블은 약ccc 번 조회한 다음cc를c 조회 결과:
    • Lasso는 합계 확인 프로토콜을 사용하여 cc를 "정렬"합니다.c 조회 결과. 그럼 Lasso ProverPPP , 추가 약정 오버헤드가 없습니다.

올가미는 c > 1 c>1 로 간주될 수 있습니다.>1. 하나의 크고 분해 가능한 테이블을 조회하는 경우 여러 개의 작은 테이블에 대한 축소는ccc 조회:

  • 작은 테이블의 경우 모든 조회 인수를 사용할 수 있습니다.
    • 작은 테이블의 경우 Lasso에서는 Basic-Lasso 조회 인수 체계가 사용됩니다.
  • 추가 참고 사항: 작은 테이블 조회 인수는 인덱싱되어야 합니다.
  • 인덱싱되지 않은 조회 인수를 인덱싱된 조회 인수로 변환하는 현재 알려진 솔루션입니다.
    • 그러나 이러한 알려진 체계는 테이블 항목의 "작음"을 유지하지 못하거나 큰 테이블의 분해 가능성을 유지하지 못합니다. 그 이유는 이러한 체계가 인덱스와 값을 단일 필드 요소로 "포장"하기 때문입니다.

[교정 크기는 테이블 수나 작은 테이블의 크기에 따라 달라지지 않습니다. 검증자는 임의의 지점에서 각 작은 테이블의 다중 선형 확장 다항식을 평가해야 합니다. 작은 테이블 수의 증가로 인해 검증자 시간이 늘어나게 되지만 이는 현장 작업이므로 다른 암호화 작업과 비교하면 그렇지 않습니다. Verifier의 병목 현상이 됩니다.
Jolt에는 약 45개의 서로 다른 하위 테이블이 있습니다.
]

4.3 배경: 총생산 논증

알려진 모든 조회 인수는 총곱 인수를 취합니다 .

  • 총곱 논증은 nn을 증명하기 위한 SNARK 계획입니다.n 커밋된 값의 곱입니다.
  • 요즘 인기 있는 대상품 논증, Prover PPP에는 추가 nn쌍이 필요합니다.N 값(부분 제품)이 커밋됩니다.
  • 이것은 불필요합니다.
  • T13 논문에서: GKR 프로토콜의 최적화된 버전이 제공됩니다(소위 GKR 프로토콜은 회로 평가를 위한 합계 검사 기반 대화형 증명입니다). [곱셈 게이트의 이진 트리와 유사한 회로가 최적화되었습니다. ]
    • 증명자 PPP 약정 오버헤드가 없습니다.
    • 증명자 PPP는 선형 순서의 현장 작업을 수행합니다.
    • 증명 크기/검증기 VVV 시간为O ( log ⁡ (n ) 2 ) O(\log(n)^2)O ( logg ( n ) _2 )현장 작업(및 Fiat-Shamir의 해시 평가):
      • FRI의 증명 크기/검증기 VV 보다 훨씬 작습니다.브이 타임。
      • [이세티 2019]中将Verifier VVV 오버헤드는 약O ( log ⁡ (n ) ) O(\log(n))O ( log ( n )) , Prover PP를늘리면 됩니다.P 에 대한 약간의 커밋 오버헤드

4.4 기본-올가미 핵심 포인트

  • 기존의 많은 조회 인수에 대해 T13에 대해 호출된 총곱 인수를 교체하면 Prover PPP는 작은 필드 요소만 커밋하면 됩니다.
    • 자세한 내용은 로그 도함수를 기반으로 한 Ulrich Hab¨ock의 logUp-Multivariate 조회를 참조하세요 . 로그 도함수를 사용하면 총곱 인수가 총합 인수로 변환됩니다.
    • 단순히 거대한 제품 논쟁을 바꾸는 것보다 더 많은 것이 관련되어 있습니다.
  • Lasso/Jolt는 작은 테이블 조회 결과를 큰 테이블 결과로 "조합"하기 위해 인덱스된 조회 인수를 사용해야 합니다.
  • 기술적인 판매 포인트: 현재 커뮤니티는 Prover PP를 피하기 위해 합계 확인의 잠재력을 아직 완전히 활용하지 못하고 있습니다.P 오버헤드.
  • Basic-Lasso의 작동 원리는 다음을 참조하세요.

5. 충격 세부 사항

현재 VM 실행의 프런트엔드:

  • 증명자 PPP는 mm단위로 컴퓨터 프로그램을 실행한다고 주장합니다.m 걸음:
    • 프로그램은 VM의 어셈블리 언어로 작성됩니다.
    • 널리 사용되는 대상 지향 VM은 RISC-V, EVM(Ethereum Virtual Machine)입니다.
  • 현재 프런트 엔드는 각 계산 단계에 대한 회로를 생성합니다.
    • 1단계: 이 단계에서 어떤 명령을 실행해야 하는지 지적합니다.
    • 2단계: 명령을 실행합니다.
  • 그리고 Lasso는 위의 2단계를 단일 조회로 대체합니다.
    • 각 명령어에 대해 해당 명령어에 대한 전체 평가 테이블이 이 테이블에 저장됩니다 .
    • 명령이 ff 인 경우f 에는 2개의 64비트 입력이 있고 각 64비트 입력 쌍( x , y ) (x,y)( 엑스 ,y ) , 조회 테이블은 모든f ( x , y ) f(x,y) 를에프 ( 엑스 ,y )
      • 조회 테이블 크기는 2 128 2^{128}2128
      • Jolt에 표시된 것처럼 모든 RISC-V 명령어는 분해 가능합니다.

Jolt 개요 그림은 다음과 같습니다. Jolt는 Barry Whitehat의 Lookup Singularity 비전을
여기에 이미지 설명을 삽입하세요
실현할 것으로 예상됩니다 .

  • 감사가 용이하고 단순화되며 확장성이 있다는 장점이 있습니다.
  • 성능상의 이점
  • zkVM을 구축하는 본질적으로 다른 방법:
    • 지금 사람들이 하는 일과 비슷한 점이 많습니다.
    • 사람들의 비전은 비트 AND와 같은 계산 기능을 작은 테이블의 다중 조회로 변환하고 결과를 결합하는 것입니다.
    • Jolt의 주요 차이점은 다음과 같습니다.
      • a) 새로운 작은 테이블 조회 인수는 훨씬 더 빠른 Jolt Prover PP를 갖습니다.
      • b) 새로운 작은 테이블 조회 인수는 자연스럽게 인덱싱됩니다.
      • c) 졸트 프루버 PPP는 훨씬 빠른 대조 기술을 가지고 있습니다.
        • 작은 테이블 조회 결과에 대해 "무료" 곱셈 및 덧셈을 수행할 수 있습니다.
    • Jolt의 이러한 차이점을 통해 조회를 사용하여 VM 에뮬레이션의 거의 모든 것을 실현할 수 있습니다 .

5.1 충격 분해 예제 1 - 비트별 AND

두 개의 64비트 입력 x, yx,y 의 경우엑스 ,y 의 비트 AND 원시 산

  • x, yx,y엑스 ,y는 c = 8 c=8로 분해됩니다.=8개의 청크, 각 청크는 8비트를 갖습니다.
  • 각 청크의 비트 AND 계산
  • 각 청크의 결과를 연결하면 출력은 다음과 같습니다.
    ∑ i = 1 8 8 i − 1 ⋅ bitwiseAND ( xi , yi ) \sum_{i=1}^{8}8^{i-1}\cdot \text{ 비트AND}(x_i,y_i)나는 = 188나는 - 1비트AND ( x,와이)

정직한 당사자가 하위 테이블을 커밋할 필요가 없도록 하려면 다음을 수행하십시오.

  • bitwiseAND ( xi , yi ) = ∑ j = 1 8 2 j − 1 ⋅ xj ⋅ yj \text{bitwiseAND}(x_i,y_i)=\sum_{j=1}^{8}2^{j-1}\ cdot x_j\cdot y_j비트AND ( x,와이)=j = 182j - 1엑스j와이j이는 25개 미만의 현장 연산으로 평가할 수 있는 다중선형 다항식입니다.
  • 올가미 검증기 VVV는 하위 테이블을 알아야 하며 다항식의 평가만 알면 됩니다.

5.2 충격 분해 예 2 - RISC-V 추가

두 개의 64비트 숫자 x , yx,y엑스 ,y 합계에서 RISC-V는 추가가 정확하고 "오버플로 비트"를 무시한다고 규정합니다.

Jolt(보조 R1CS에 제약 조건 추가)는 유한 필드에서 z = x + yz=x+y를 계산합니다.=엑스+y 그런 다음 조회를 사용하여 해당 오버플로 비트를 식별하고, 오버플로 비트가 있으면 그에 따라 해당 결과를 조정합니다.

  • 졸트 프루버 PPP , 对 필드 요소z = x + yz=x+y=엑스+y 의 "사지 분해"( b 1 , ⋯ , bc ) (b_1,\cdots,b_c)( 1,,c) 커밋합니다.
  • M = 2 64 /c M=2^{64/c} 라고 하자=264/ c 는 사지당 최대값입니다.
  • R1CS에 제약 조건을 추가하여 확인합니다.
    • 1단계: z = ∑ j = 1 c M j − 1 ⋅ bjz=\sum_{j=1}^{c}M^{j-1}\cdot b_j=j = 1cj - 1j
    • 2단계: 그리고 각 bj에 대해 b_jj조회를 통해 { 0 , ⋯ , M − 1 } \{0,\cdots,M-1\} 을 저장합니다 .{ 0 ,,-1 } 의 하위 테이블은 범위 확인을 수행합니다.
  • 위 제약 조건의 1단계와 2단계를 통해 b 1 , ⋯ , bj b_1,\cdots,b_j 가 보장될 수 있습니다.1,,j사실 zz 한테는z 의 규정된 사지 분해
  • 오버플로 비트를 식별하려면 인덱스 bc b_c 만 조회하면 됩니다.c, ii가 있는 테이블로i 번째 항목은 ii의 관련 상위 비트를 뱉어냅니다.나는

5.3 충격 분해 예 2 - LESS THAN UNSIGNED

2개의 64비트 입력 x, yx,y 의 경우엑스 ,y는 작업보다 적은 작업을 수행합니다.

  • x, yx,y엑스 ,y는 c = 8 c=8로 분해됩니다.=8개의 청크, 각 청크는 8비트를 갖습니다.
  • 각 청크의 LESS-THAN(LT) 및 EQUALITY(EQ)를 계산합니다.
  • 계산: ∑ i = 1 8 2 i − 1 ⋅ LT ( xi , yi ) ∏ j = i + 1 8 EQ ( xj , yj ) \sum_{i=1}^{8}2^{i-1} \cdot \text{LT}(x_i,y_i)\prod_{j=i+1}^{8}\text{EQ}(x_j,y_j)나는 = 182나는 - 1LT ( x,와이)j = + 18EQ ( xj,와이j)

2개의 하위 테이블 커밋을 방지하려면 다음을 수행하세요.

  • EQ ( xj , yj ) = ∏ k = 1 8 ( xj , kyj , k + ( 1 − xj , k ) ( 1 − yj , k ) ) \text{EQ}(x_j,y_j)=\prod_{k= 1}^{8}(x_{j,k}y_{j,k}+(1-x_{j,k})(1-y_{j,k}))EQ ( xj,와이j)=k = 18( xj , k와이j , k+( 1-엑스j , k) ( 1-와이j , k))
  • LT ( xi , yi ) = ∑ k = 1 8 ( 1 − xi ) yi ∏ z = k 8 ( xi , kyi , k + ( 1 − xi , k ) ( 1 − yi , k ) ) \text{LT} (x_i,y_i)=\sum_{k=1}^{8}(1-x_i)y_i\prod_{z=k}^{8}(x_{i,k}y_{i,k}+(1 -x_{i,k})(1-y_{i,k}))LT ( x,와이)=k = 18( 1-엑스) z = 케이8( x, 케이와이, 케이+( 1-엑스, 케이) ( 1-와이, 케이))
  • 이는 50개 미만의 필드 연산으로 평가할 수 있는 다중선형 다항식입니다.

6. 올가미를 도구로 생각하는 방법은 무엇입니까? 그리고 zkVM 외부에서 조회 인수의 적용 시나리오는 무엇입니까?

6.1 도구로서의 올가미의 직관

  • Lasso는 Lasso Prover PP 없이 필드 요소의 비트 분해에 대한 간단한 작업을 지원합니다.P는 각 비트를 커밋합니다.
  • 각 하위 테이블이 테이블 인덱스(의 비트)에 대한 간단한 함수에 해당하는 경우 하위 테이블에는 빠르게 평가 가능한 다중 선형 확장이 있습니다.
    • 이렇게 하면 정직한 당사자가 전처리 중에 이러한 하위 테이블을 커밋할 필요가 없습니다.
  • 2개의 필드 요소 값은 { 0 , 1 , ⋯ , 2 64 − 1 } \{0,1,\cdots,2^{64}-1\} 입니다.{ 0 ,1 ,,264-1 } 의 bitwiseAND 연산은 Plonk의 각 덧셈 또는 곱셈 게이트의 오버헤드와 비교할 때 Lasso Prover의 오버헤드가 더 낮습니다.
  • 참고: 조회 인수는 규모의 경제입니다. 하나의 테이블에 대해 많은 조회를 수행하는 데 적합합니다(예: 동일한 함수에 대한 여러 호출).

6.2 인덱스 조회 인수를 반복 함수 평가의 SNARKs 방식으로 처리

이전에도 "반복 기능 평가를 위한 SNARK"에 대한 많은 연구가 있었습니다.

  • 다양한 입력 x 1 , ⋯ , xm x_1,\cdots,x_m 기반엑스1,,엑스, 동일한 함수 ff를 계산합니다.에프
  • 이를 "다항식" 양의 데이터 병렬 처리로 생각하십시오.
    • 함수가 ff 라면f 의 입력 길이는 nn입니다.n 인 경우 서로 다른 입력값의 개수는m = poly (n ) m=\text{poly}(n)=폴리 ( n )
  • 증명자 PP 는 여전히 필요합니다.P 평가fff 매우 구체적인 방식으로:
    • ff를 계산하기 위해 특정 회로 실행에프

조회 인수에 대한 새로운 관점:

  • 조회 테이블을 함수 ff를 저장하는 것으로 생각하십시오.f 의 모든 평가
  • ff고도로 반복된 평가 를 위한 조회 인수 则为a SNARK에프 :
    • 증명자 설명, 커밋된 벡터 ( ( a 1 , f ( a 1 ) ) , ⋯ , ( am , f ( am ) ) ) ((a_1,f(a_1)),\cdots,(a_m,f(a_m)) )( (1,에프 ( 1)) ,,( _,에프 ( ))) , 다른 입력a 1 , ⋯ , am a_1,\cdots,a_m1,,올바른 fff 평가。
  • 올가미 증명자 PPP 의 오버헤드 는 O ( c ( m + N 1 / c ) ) O(c(m+N^{1/c}))입니다O ( ( +N1/ c )), 조회 횟수mmm 은 테이블 크기 NN보다 크지 않습니다.N , 너무 작은 경우 Lasso ProverPPP 는 효율적입니다.
    • 즉, ff를 실행f 의 차수는 ff의 입력 크기에 대해 지수적이어야 합니다.에프

7. 요약

  • Lasso는 동일한 기능이 여러 번 평가되는 시나리오에 적합합니다.
  • zkVM은 Lasso의 애플리케이션 시나리오 중 하나일 뿐입니다.
    • 정의에 따르면 VM 추상화는 기본 명령어의 반복 실행 계산을 나타냅니다.
    • VM 추상화를 구현하면 일반적으로 상당한 성능 오버헤드가 발생합니다.
  • 향후 관심 방향:
    • 계산에서 반복되는 구조를 분리하는 다른 더 나은 방법
    • 예시 작업은 다음과 같습니다.
      • 비트 슬라이싱
      • 해시 함수 또는 블록 암호(예: SHA/AES)를 평가하여 64개의 서로 다른 입력이 있는 부울 회로 CC를 구축합니다.C를 계산하려면 다음을 수행합니다.
        • 각 입력의 첫 번째 비트를 단일 필드 요소로 묶고, 각 입력의 두 번째 비트를 단일 필드 요소로 묶는 식으로 진행됩니다.
        • 将서킷 CCC 의 각 AND 게이트에 대해CC를C 의 모든 OR 게이트는
        • 200C 의 각 게이트 출력은 SHA/AES의 64개 평가 중 1비트입니다.
        • 对서킷 CCC 에서는 올가미를 사용합니다.

참고자료

[1] Justin Thaler는 2023년 8월 zkStudyClub 에서 zkStudyClub - Lasso/Jolt(Justin Thaler, Georgetown University/a16z)를
공유했습니다 .

저스틴 탈러 블로그 시리즈

조회 시리즈 블로그

추천

출처blog.csdn.net/mutourend/article/details/132516398