파이프라인 모드를 통한 증명 생성 효율 향상 방법은 무엇입니까?

Fox

icon
Layer1 시스템에서는 거래가 블록에 패키지되고 마이너들에 의해 계산됩니다. Layer2 시스템에서는 거래가 어떻게 패키지되는지, 또는 Layer2 블록이 어떻게 생성되는지는 별도로 고려됩니다. 이 문제에서는 거래를 일괄로 처리하기 위해 파이프라인 처리 모드의 사용을 탐구했습니다. 우리는 논문에서 zkRollup에 대한 파이프라인화된 제로지식 증명의 적용에 대해 논의할 것입니다.

By: Frederick Kang, CEO of Fox Tech; Sputnik Meng, Chief Scientist of Fox Tech

Proofread by Yanxi Lin,  CTO of Fox Tech

오늘날의 디지털 시대에는 블록체인 기술의 급속한 발전과 함께 데이터 개인 정보 보호와 보안에 대한 관심이 더욱 커지고 있습니다. 더 효율적이고 확장 가능한 블록체인 애플리케이션을 구현하기 위해 제안된 솔루션 중 하나가 Zero-Knowledge Proof 기술입니다. Zero-Knowledge Proof는 강력한 암호학 도구로서, 민감한 정보를 공개하지 않고 명제의 진위를 검증할 수 있습니다.

최근에는 블록체인 용량 확장 기술의 중요한 혁신 중 하나인 zkRollup이 광범위한 관심을 받고 있습니다. zkRollup은 많은 거래를 포장하여 오프체인에서 실행하고 이러한 거래의 정확성을 검증하는 Zero-Knowledge Proof 기능을 활용하여 블록체인 처리량과 확장성을 크게 향상시킵니다. zkRollup의 구현에서 거래를 분배하고 포장하여 증명을 생성하는 방법은 zkRollup 시스템의 중요한 부분이 되었습니다.

레이어1 시스템에서는 거래가 블록에 포장되고 마이너에 의해 계산됩니다. 레이어2 시스템에서는 거래가 어떻게 포장되는지 또는 레이어2 블록이 어떻게 생성되는지는 별개로 고려해야 합니다.

FOX는 zkEVM을 기반으로 한 레이어2 zkRollup 확장 프로젝트입니다. 이 문제에 대해 FOX는 거래를 일괄적으로 처리하기 위해 파이프라인 처리 방식의 사용을 탐구하고 있으며, 이는 효율을 크게 향상시킬 것으로 기대됩니다.

본 논문에서는 zkRollup에서 파이프라인화된 Zero-Knowledge Proof의 적용에 대해 논의합니다. 먼저 기본 거래 패키지를 살펴보겠습니다. 그런 다음, 파이프라인 방법을 사용하여 Zero-Knowledge Proof 기술을 생성하는 방법과 그 원리 및 응용 시나리오를 자세히 분석합니다.

거래 패키지를 위한 보편적인 방법

전통적인 블록체인 시스템에서는 거래의 확인과 패키징이 시간과 리소스를 많이 소모하는 과정입니다. 일반적으로 거래는 하나씩 확인되고 블록에 추가되며, 합의 알고리즘에 의해 동의된 후 블록체인의 상태가 업데이트됩니다. 그러나 이러한 케이스별 확인 및 패키징은 처리량이 낮고 대기 시간이 긴 등의 중요한 제한 사항이 있습니다.

전통적인 거래 패키징 프로세스에서는 사용자 제출 또는 다른 체인에서 가져온 일괄적으로 거래가 먼저 처리됩니다. 이러한 거래는 거래의 서명을 확인하고 거래의 유효성과 일관성을 검증하는 등의 검증과정을 거칩니다. 거래가 검증되면 일괄적으로 패키징되어 제출할 블록이 형성됩니다.

한편, zkRollup 시스템에서는 사용자가 제출한 거래도 먼저 거래 풀에 대기시킵니다. FOX 시스템에서 Sequencer는 거래를 <존속>ㅂ 풀을 정기적으로 실행하여 로컬에서 정렬하고 거래 패키지, 즉 블록을 형성합니다. 이 때 거래 실행 결과는 Layer1에 제출됩니다. 이 결과는 트랜잭션 데이터와 함께 증명을 생성하는 폴더 노드에도 제출됩니다.

제로지식 증명 알고리즘에 대한 기본적인 이해에 따르면 (독자들은 FOX의 이전 시리즈 기사를 참조할 수 있습니다), 폴더는 증명을 생성하기 위해 입력과 실행 결과를 가져와야합니다. 이로 인해 폴더에 전형적인 방식으로 건네기 전에 Sequencer가 모든 트랜잭션 실행을 완료하기를 기다려야합니다. 컴퓨팅 리소스를 더 효율적으로 활용하기 위해, 우리는 Sequencer가 일부 트랜잭션을 실행 한 후 즉시 폴더에 증명 생성을 맡기는 것을 희망합니다.

FOX가 탐구하는 파이프 라인 모델

위의 목표를 달성하기 위해 Sequencer에게 트랜잭션을 배치로 실행하고 일괄 실행 후 즉시 폴더에 중간 결과를 전송하게 해야합니다.

구체적으로, 패키지 트랜잭션의 총 수를 100으로 가정하고 개별 배치 트랜잭션의 수를 10으로 가정하면, 파이프 라인 처리는 다음 그림으로 나타낼 수 있습니다.

그림 1: 파이프 라인 패턴의 거래 증명 생성

두 가지 접근법의 시간 오버 헤드를 간단히 살펴보고 파이프 라인이 더 효율적인 상황에 대해 논의해 봅시다. 단순화를 위해, 여기서는 Sequencer가 Folder에 데이터를 보내는 시간을 고려하지 않습니다.

트랜잭션 패키지의 수를 n으로 설정하고 배치 수를 k로 설정하면, Sequencer의 실행 시간 함수를 exe(), Folder의 증명 생성 시간 함수를 prove()로 설정하고, 총 증명 시간 함수를 aggr()로 설정할 수 있습니다. 일반적인 모드와 파이프 라인 모드의 총 시간은 Sum1과 Sum2입니다.

따라서 위의 과정에 따르면, 일반적인 모드는 Sequencer가 먼저 실행한 다음 폴더에 증명을 생성하기 위해 의존합니다. 요구되는 총 시간은 다음과 같습니다.

Sum1=exe(n)+prove(n)

그러나, 파이프 라인 모드의 시간은 Sequencer의 첫 번째 배치 트랜잭션 실행 시간, 이후에 증명 생성의 시간 및 후속 배치의 실행 시간, 그리고 최종 집계 시간을 포함해야합니다.

Sum2=exe(n/k)+max{k*prove(n/k),(k-1)*exe(n/k)}+aggr(k)

따라서 두 가지의 총 소요 시간을 비교하여, 실행 시간 함수 exe()는 기본적으로 선형 함수로 근사할 수 있으며, prove()의 경우 FOX 시스템의 증명 알고리즘의 생성 시간이 선형 함수임이 입증되었으므로 prove()도 선형 함수입니다.

그 결과 다음을 결론 짓습니다:

  • exe(n)>prove(n)이고 prove(n)>aggr(k)인 경우, 그러면 Sum1>Sum2입니다.
  • exe(n)>prove(n)이고 (k-1)*exe(n/k)>aggr(k)인 경우, 그러면 Sum1>Sum2입니다.

이상전에도 언급했듯이, 집계 시간 aggr(k)이 충분히 작고 증명 생성 시간이 선형 함수인 경우, 파이프라이닝은 시스템 효율을 향상시키고 전체 증명 생성 시간을 감소시키는 데 매우 유용합니다.

위의 분석은 선형 시간 증명 알고리즘에 대해서만 유효하며, 여기서도 FOX가 선형 시간 증명 알고리즘을 채택하는 중요성을 볼 수 있습니다.

Figure 2: 증명 계산의 흐름도

파이프라인 방법이 탐색 단계에 있는 이유는 이 모드의 분석을 통해 각 거래 패키지를 더 많은 배치로 나누는 경우, Sequencer가 기록하고 Folder로 전송해야 하는 데이터 양이 더 많아지고 오버헤드도 높아진다는 것을 알 수 있기 때문입니다. 그러나 Folder의 경우, 단일 처리의 계산량은 감소됩니다. 중합 프로세스는 더 복잡합니다. 그러므로, 분할 방법은 균형을 맞추어야 하는 질문이며, 이는 Sequencer와 Folder의 계산 성능에도 달려 있습니다.

거래를 효율적으로 할당하고 패키징하는 것은 배치 생성의 핵심 최적화 포인트임이 입증되었습니다.

zkRollup 구현에서 효율적인 거래 할당, 패키징 및 증명 생성은 중요한 최적화 포인트입니다.

FOX는 더 효율적인 솔루션을 찾기 위해 모델을 지속적으로 최적화하고 있습니다. FOX가 사용하는 기본 프로세스는 다음과 같습니다:

  1. 거래 수집: 처리할 거래들을 수집하여 거래 풀에 저장합니다. 이는 사용자가 제출한 거래이거나 다른 시스템이나 계약에서 생성한 거래일 수 있습니다.
  2. 거래 정렬: 거래 풀의 거래들을 정렬하여 패키지 순서를 결정합니다. 일반적으로 우선순위, 타임스탬프 또는 기타 요소를 기반으로 정렬 알고리즘을 사용할 수 있습니다. 정렬의 목표는 거래의 전체 처리량과 효율성을 극대화하는 것입니다.
  3. 거래 할당: 정렬된 거래를 적절한 블록에 할당합니다. zkRollup에서는 일반적으로 일정 수의 거래를 담을 새로운 블록을 생성합니다. 할당 프로세스는 탐욕 알고리즘이나 다른 할당 전략을 사용하여 각 블록의 용량 이용률을 극대화할 수 있습니다.
  4. 블록 패키징: 할당된 거래를 사용하여 완전한 블록을 형성합니다. FOX의 Layer2 아키텍처에서 이 블록은 실제로 거래의 요약 정보만 포함하며, 거래의 세부 내용은 FOX Ringer에 데이터 가용성(DA)을 위해 저장됩니다.
  5. 증명 생성: 패키지된 블록에 대한 해당 증명을 생성합니다. 이 증명은 블록 안의 각 거래의 유효성과 전체 블록의 일관성을 증명해야 합니다. FOX의 파이프라인 모드는 이 링크에 주로 적용되어 Folder 계산 능력을 더 효율적으로 활용하고, 블록의 거래를 Folder로 전송합니다.
r in batches for proof generation. Folder calculates the correctness of each batch of transactions respectively, and then aggregates them. Typically, this proof is based on FOAKS, a fast and targeted zero-knowledge proof algorithm that compares transactions in a block to state transition rules to verify that they follow the rules and constraints of the system.
  • Proof verification: The recipient can use proof to verify the validity of a block without recalculating the entire block. This verification process can be highly efficient because it involves only the check of the proof without the need for complex calculations of the transaction.
  • FOX's "pipeline mode" mainly occurs in the proof generation. In transaction collection and sorting, Sequencer collects the transactions to be processed, sorts them according to certain rules, and determines the order of execution. In subsequent trade batches, Sequencer executes the sorted trades in batches. A set of transactions from each batch is sent to the execution engine for processing. The execution engine simulates the execution of these transactions and records the intermediate results of state transitions. After each batch of transactions is executed, Sequencer sends the intermediate results to Folder.

    This can be done by encoding intermediate results in the form of status updates, transaction hashes, and so on to the Folder's communication channel wholesale. Folder After receiving intermediate results of each batch, these results are used to generate corresponding proofs batch by batch. These proofs are generated based on the FOAKS zero-knowledge proof algorithm developed by FOX, which uses intermediate results as input to prove the validity of the transaction and the consistency of the entire block.

    The final step is proof verification. The resulting proof is sent to the Verifier, the smart contract Verifier deployed on Ethereum, to verify the validity of the block. The Verifier uses validation algorithms to check proofs to ensure their correctness and legitimacy.

    Through this pipeline mode, Sequencer can continuously send intermediate results to Folder while executing transactions, so as to generate proofs batch by batch. This improves overall system efficiency and throughput while reducing latency in proof generation.

    Conclusion

    In zkRollup, this paper introduces a relatively novel scheme to generate proof for batch processing of transactions, pipeline mode, and analyzes the time cost of this mode in detail. For linear proof algorithm, reasonable use of pipeline mode can help reduce the total proof generation time. The proof system adopted by FOX realizes linear proof time, which is of great help to quickly generate proof and improve user experience. The FOX team will continue to explore and refine the solution.

    Fox

    Fox is an Ethereum zkRollup using ZK-EVM and ZK-FOAKS.

    더 보기