Celer:만신전 Pantheon - ZKP 개발 프레임워크 평가 플랫폼

셀러
2023-03-02 12:04:52
수집
본 문서는 SHA-256이 다양한 zk-SNARK 및 zk-STARK 개발 프레임워크에서의 성능 테스트 결과를 포괄적으로 설명하고 있습니다.

저자: Celer

image

지난 몇 달 동안 우리는 zk-SNARK 간결한 증명을 활용하여 최첨단 인프라를 개발하는 데 많은 시간과 노력을 쏟았습니다. 이 차세대 혁신 플랫폼은 개발자들이 전례 없는 블록체인 애플리케이션의 새로운 모델을 구축할 수 있도록 합니다.

개발 작업 중 우리는 다양한 제로 지식 증명(ZKP) 개발 프레임워크를 테스트하고 사용했습니다. 이 여정에서 많은 것을 배웠지만, 새로운 개발자들이 특정 사용 사례와 성능 요구 사항에 가장 적합한 프레임워크를 찾으려 할 때 다양한 ZKP 프레임워크가 종종 도전 과제가 된다는 것을 깨달았습니다.

이러한 문제를 고려하여, 우리는 이러한 새로운 애플리케이션의 개발을 크게 촉진할 수 있는 포괄적인 성능 테스트 결과를 제공할 수 있는 커뮤니티 평가 플랫폼이 필요하다고 생각했습니다.

이러한 요구를 충족하기 위해 우리는 제로 지식 증명 개발 프레임워크 평가 플랫폼「만신전 Pantheon」을 출시했습니다. 이 공익 커뮤니티 이니셔티브의 첫 번째 단계는 커뮤니티가 다양한 ZKP 프레임워크의 재현 가능한 성능 테스트 결과를 공유하도록 장려하는 것입니다. 우리의 궁극적인 목표는 저급 회로 개발 프레임워크, 고급 zkVM 및 컴파일러, 심지어 하드웨어 가속 제공업체를 평가하기 위해 널리 인정받는 테스트 플랫폼을 공동으로 만들고 유지하는 것입니다.

우리는 이 조치가 개발자들이 프레임워크를 선택할 때 성능 비교에 대한 더 많은 참고 자료를 제공하여 ZKP의 확산을 가속화할 수 있기를 바랍니다. 동시에, 우리는 일반적으로 참고할 수 있는 성능 테스트 결과를 제공함으로써 ZKP 프레임워크 자체의 업그레이드와 반복을 촉진하고자 합니다. 우리는 이 계획에 많은 노력을 기울일 것이며, 뜻이 맞는 모든 커뮤니티 구성원들이 우리와 함께 이 작업에 기여해 주시기를 초대합니다!

첫 번째 단계: SHA-256을 사용한 회로 프레임워크 성능 테스트

이 글에서는 ZKP Pantheon 구축의 첫 번째 단계를 밟으며, 다양한 저급 회로 개발 프레임워크에서 SHA-256을 사용하여 재현 가능한 성능 테스트 결과를 제공합니다. 다른 성능 테스트의 세부 사항이나 원시도 가능할 수 있지만, 우리는 SHA-256을 선택했습니다. 이는 블록체인 시스템, 디지털 서명, zkDID 등 다양한 ZKP 사용 사례에 적합하기 때문입니다.

또한, 우리는 자체 시스템에서도 SHA-256을 사용하고 있어 매우 편리합니다! ?

우리의 성능 테스트는 SHA-256이 다양한 zk-SNARK 및 zk-STARK 회로 개발 프레임워크에서의 성능을 평가했습니다. 비교를 통해 우리는 각 프레임워크의 효율성과 실용성에 대한 통찰력을 개발자에게 제공하고자 합니다. 우리의 목표는 이번 성능 테스트 결과가 개발자들이 최상의 프레임워크를 선택하는 데 참고가 되어, 현명한 결정을 내릴 수 있도록 하는 것입니다.

증명 시스템

최근 몇 년 동안 우리는 제로 지식 증명 시스템의 급증을 목격했습니다. 이 분야의 모든 흥미로운 발전을 따라잡는 것은 도전적이며, 우리는 성숙도와 개발자 채택 상황에 따라 다음의 증명 시스템을 신중하게 선택하여 테스트 대상으로 삼았습니다. 우리의 목표는 다양한 프론트엔드/백엔드 조합의 대표 샘플을 제공하는 것입니다.

  1. ++Circom+++ ++snarkjs++/ ++rapidsnark++: Circom은 회로를 작성하고 R1CS 제약 조건을 생성하는 데 사용되는 인기 있는 DSL이며, snarkjs는 Circom을 위해 Groth16 또는 Plonk 증명을 생성할 수 있습니다. Rapidsnark는 Circom의 증명기로, Groth16 증명을 생성하며 ADX 확장을 사용하여 일반적으로 snarkjs보다 훨씬 빠르고 가능한 한 증명 생성을 병렬화합니다.

  2. ++gnark++: gnark는 Consensys에서 제공하는 종합 Golang 프레임워크로, Groth16, Plonk 및 많은 고급 기능을 지원합니다.

  3. ++Arkworks++: Arkworks는 zk-SNARKs를 위한 종합 Rust 프레임워크입니다.

  4. ++Halo2 (KZG)++: Halo2는 Zcash와 Plonk의 zk-SNARK 구현입니다. 높은 유연성을 가진 Plonkish 산술을 갖추고 있으며, 사용자 정의 게이트 및 조회 테이블과 같은 많은 유용한 원시를 지원합니다. 우리는 이더리움 재단과 Scroll의 지원을 받는 KZG의 Halo2 포크를 사용합니다.

  5. ++Plonky2++: Plonky2는 Polygon Zero의 PLONK 및 FRI 기술을 기반으로 한 SNARK 구현입니다. Plonky2는 작은 Goldilocks 필드를 사용하며 효율적인 재귀를 지원합니다. 우리의 성능 테스트에서 우리는 100비트 추정 보안을 목표로 하며, 성능 테스트 작업에서 최상의 증명 시간을 생성하는 매개변수를 사용합니다. 구체적으로, 우리는 28 Merkle 쿼리, 8의 확대 계수 및 16비트 작업 증명 도전을 설정했습니다. 또한, numofwires = 60 및 numroutedwires = 60으로 설정했습니다.

  6. ++Starky++: Starky는 Polygon Zero의 고성능 STARK 프레임워크입니다. 우리의 성능 테스트에서 우리는 100비트 추정 보안을 목표로 하며, 최상의 증명 시간을 생성하는 매개변수를 사용합니다. 구체적으로, 우리는 90 Merkle 쿼리, 2배 확대 계수 및 10비트 작업 증명 도전을 사용했습니다.

아래 표는 위의 프레임워크와 우리가 성능 테스트에서 사용한 관련 구성을 요약합니다. 이 목록은 결코 포괄적이지 않으며, 우리는 앞으로 Nova, GKR, Hyperplonk와 같은 많은 최첨단 프레임워크/기술을 연구할 것입니다.

이 성능 테스트 결과는 회로 개발 프레임워크에만 적용된다는 점에 유의하시기 바랍니다. 우리는 앞으로 다양한 zkVM(예: Scroll, Polygon zkEVM, Consensys zkEVM, zkSync, Risc Zero, zkWasm) 및 IR 컴파일러 프레임워크(예: Noir, zkLLVM)에 대한 성능 테스트를 다룬 별도의 기사를 발표할 계획입니다.
Celer: 만신전 Pantheon - ZKP 개발 프레임워크 평가 플랫폼

성능 평가 방법론

이러한 다양한 증명 시스템에 대한 성능 테스트를 수행하기 위해, 우리는 N 바이트 데이터의 SHA-256 해시 값을 계산했습니다. 여기서 N = 64, 128, …, 64K에 대해 실험을 진행했습니다(단, Starky는 예외로, 회로는 SHA-256 고정 64바이트 입력의 계산을 반복하지만 동일한 메시지 블록 총 수를 유지합니다). 성능 코드와 SHA-256 회로 구성은++이 저장소++에서 확인할 수 있습니다.

또한, 우리는 다음의 성능 지표를 사용하여 각 시스템의 성능을 테스트했습니다:

  • 증명 생성 시간(증명 생성 시간 포함)

  • 증명 생성 중 메모리 사용 피크

  • 증명 생성 중 평균 CPU 사용률 백분율. (이 지표는 증명 생성 과정에서의 병렬화 정도를 반영합니다)

증명 크기와 증명 검증 비용에 대해서는 "임의"의 가정을 하고 있다는 점에 유의하시기 바랍니다. 이러한 측면은 Groth16 또는 KZG와 결합하여 온체인 이전에 완화할 수 있습니다.

기계

우리는 두 대의 서로 다른 기계에서 성능 테스트를 수행했습니다:

  • 리눅스 서버: 20코어 @2.3 GHz, 384GB 메모리

  • Macbook M1 Pro: 10코어 @3.2Ghz, 16GB 메모리

리눅스 서버는 CPU 코어 수가 많고 메모리가 풍부한 시나리오를 시뮬레이션하는 데 사용되었습니다. 일반적으로 연구 개발에 사용되는 Macbook M1 Pro는 더 강력한 CPU를 가지고 있지만 코어 수는 적습니다.

우리는 선택적 멀티스레딩을 활성화했지만, 이 성능 테스트에서는 GPU 가속을 사용하지 않았습니다. 우리는 앞으로 GPU 성능 테스트를 진행할 계획입니다.

성능 평가 결과

제약 조건 수

우리가 상세한 성능 테스트 결과를 논의하기 전에, 각 증명 시스템에서 제약 조건 수를 살펴보는 것이 SHA-256의 복잡성을 이해하는 데 유용합니다. 서로 다른 산술 스킴에서 제약 조건 수를 직접 비교할 수는 없다는 점에 유의해야 합니다.

아래의 결과는 64KB의 원형 크기에 해당합니다. 결과는 다른 원형 크기에 따라 달라질 수 있지만, 대략적으로 선형적으로 축소될 수 있습니다.

  • Circom, gnark, Arkworks는 동일한 R1CS 알고리즘을 사용하며, 64KB SHA-256의 R1CS 제약 조건 수는 대략 30M에서 45M 사이입니다. Circom, gnark 및 Arkworks 간의 차이는 구성 차이로 인한 것일 수 있습니다.

  • Halo2와 Plonky2는 Plonkish 산술을 사용하며, 행 수는 2^22에서 2^23 사이입니다. 조회 테이블을 사용하기 때문에 Halo2의 SHA-256 구현 효율성이 Plonky2보다 훨씬 높습니다.

  • Starky는 AIR 알고리즘을 사용하며, 실행 추적 테이블은 2^16개의 변환 단계를 필요로 합니다.

Celer: 만신전 Pantheon - ZKP 개발 프레임워크 평가 플랫폼

증명 생성 시간

[그림 1]은 리눅스 서버에서 SHA-256의 각 프레임워크가 다양한 원형 크기에서 증명 생성 시간을 테스트한 결과입니다. 우리는 다음과 같은 발견을 할 수 있습니다:

  • SHA-256의 경우, Groth16 프레임워크(rapidsnark, gnark 및 Arkworks)는 Plonk 프레임워크(Halo2 및 Plonky2)보다 증명 생성 속도가 빠릅니다. 이는 SHA-256이 주로 비트 연산으로 구성되어 있으며, 선형 값이 0 또는 1이기 때문입니다. Groth16의 경우, 이는 타원 곡선 스칼라 곱셈에서 타원 곡선 점 덧셈으로의 대부분의 계산을 줄입니다. 그러나 연결 값은 Plonk의 계산에 직접 사용되지 않으므로 SHA-256의 특수 연결 구조가 Plonk 프레임워크에서 필요한 계산량을 줄이지 않습니다.

  • 모든 Groth16 프레임워크 중에서, gnark와 rapidsnark는 Arkworks와 snarkjs보다 5배에서 10배 빠릅니다. 이는 그들이 여러 코어를 활용하여 증명 생성을 병렬화하는 뛰어난 능력 덕분입니다. Gnark는 rapidsnark보다 25% 빠릅니다.

  • Plonk 프레임워크의 경우, >= 4KB의 더 큰 원형 크기를 사용할 때 Plonky2의 SHA-256은 Halo2보다 50% 느립니다. 이는 Halo2의 구현이 주로 조회 테이블을 사용하여 비트 연산을 가속화하기 때문에 행 수가 Plonky2보다 2배 적기 때문입니다. 그러나 동일한 행 수를 가진 Plonky2와 Halo2를 비교하면(예: Halo2에서 2KB를 초과하는 SHA-256과 Plonky2에서 4KB를 초과하는 SHA-256), Plonky2가 Halo2보다 50% 빠릅니다. Plonky2에서 SHA-256을 조회 테이블로 구현하면 Plonky2가 Halo2보다 더 빠를 것으로 예상되지만, Plonky2의 증명 크기는 더 큽니다.

  • 반면에, 입력 원형 크기가 작을 경우(\<=512 바이트)에는 조회 테이블의 고정 설정 비용이 대부분의 제약을 차지하므로 Halo2가 Plonky2(및 다른 프레임워크)보다 느립니다. 그러나 원형 크기가 증가함에 따라 Halo2의 성능은 더욱 경쟁력을 가지며, 최대 2KB의 원형 크기에서는 증명 생성 시간이 거의 선형적으로 확장됩니다.

  • 예상대로, Starky의 증명 생성 시간은 어떤 SNARK 프레임워크보다도 훨씬 짧지만(5배-50배), 이는 더 큰 증명 크기를 대가로 합니다.

  • 또한, 회로 크기가 원형 크기와 선형 관계를 가질 때에도 O(nlogn) FFT로 인해 SNARK의 증명 생성은 초선형적으로 증가합니다(비록 로그 스케일로 인해 이 현상이 그래프에서 명확하지는 않지만).

Celer: 만신전 Pantheon - ZKP 개발 프레임워크 평가 플랫폼

우리는 또한 Macbook M1 Pro에서 증명 생성 시간 성능 테스트를 수행했습니다. [그림 2]에서 볼 수 있습니다. 그러나 arm64 아키텍처에 대한 지원 부족으로 인해 rapidsnark는 이 성능 테스트에 포함되지 않았습니다. arm64에서 snarkjs를 사용하려면 웹어셈블리를 사용하여 증명을 생성해야 하며, 이는 리눅스 서버에서 사용되는 C++ 증명 생성보다 느립니다.

Macbook M1 Pro에서 성능 테스트를 실행할 때 몇 가지 추가적인 관찰 결과가 있었습니다:

  • Starky를 제외한 모든 SNARK 프레임워크는 원형 크기가 커질 때 메모리 부족(OOM) 오류를 겪거나 스왑 메모리를 사용하게 되어(증명 시간이 느려짐) 현상이 발생합니다. 구체적으로, Groth16 프레임워크(snarkjs, gnark, Arkworks)는 원형 크기가 >= 8KB일 때 스왑 메모리를 사용하기 시작하며, gnark는 원형 크기가 >= 64KB일 때 메모리 부족이 발생합니다. 원형 크기가 >= 32KB일 때 Halo2는 메모리 제한에 직면합니다. 원형 크기가 >= 8KB일 때 Plonky2는 스왑 메모리를 사용하기 시작합니다.

  • FRI 기반 프레임워크(Starky 및 Plonky2)는 Macbook M1 Pro에서 리눅스 서버보다 약 60% 더 빠르며, 다른 프레임워크는 두 기계에서 비슷한 증명 시간을 보입니다. 따라서 Plonky2에서 조회 테이블을 사용하지 않더라도 Macbook M1 Pro에서 Halo2와 거의 동일한 증명 시간을 달성했습니다. 주요 이유는 Macbook M1 Pro가 더 강력한 CPU를 가지고 있지만 코어 수는 적기 때문입니다. FRI는 주로 해시 연산을 수행하며, CPU 클럭 주기에 민감하지만 KZG 또는 Groth16보다 병렬성이 떨어집니다.

Celer: 만신전 Pantheon - ZKP 개발 프레임워크 평가 플랫폼

메모리 사용 피크

[그림 3]과 [그림 4]는 각각 리눅스 서버와 Macbook M1 Pro에서 증명 생성 중의 메모리 사용 피크를 보여줍니다. 이러한 성능 테스트 결과를 바탕으로 다음과 같은 관찰 결과를 도출할 수 있습니다:

  • 모든 SNARK 프레임워크 중에서 rapidsnark는 메모리 효율성이 가장 높습니다. 우리는 또한 원형 크기가 작을 때 조회 테이블의 고정 설정 비용으로 인해 Halo2가 더 많은 메모리를 사용하지만, 원형 크기가 클 때는 전체적으로 소비하는 메모리가 적다는 것을 확인했습니다.

  • Starky의 메모리 효율성은 SNARK 프레임워크보다 10배 이상 높습니다. 부분적으로는 더 적은 행을 사용하기 때문입니다.

  • 원형 크기가 커짐에 따라 Macbook M1 Pro에서 메모리 사용량 피크가 상대적으로 안정적으로 유지된다는 점도 주목해야 합니다.

Celer: 만신전 Pantheon - ZKP 개발 프레임워크 평가 플랫폼

Celer: 만신전 Pantheon - ZKP 개발 프레임워크 평가 플랫폼

CPU 이용률

우리는 SHA-256이 4KB 원형 입력의 증명 생성 동안 평균 CPU 이용률을 측정하여 각 증명 시스템의 병렬화 정도를 평가했습니다. 아래 표는 리눅스 서버(20코어)와 Macbook M1 Pro(10코어)에서의 평균 CPU 이용률을 보여줍니다(괄호 안은 각 코어의 평균 이용률) .

주요 관찰 결과는 다음과 같습니다:

  • Gnark와 rapidsnark는 리눅스 서버에서 가장 높은 CPU 이용률을 보이며, 이는 이들이 멀티코어를 효과적으로 활용하고 병렬화하여 증명을 생성할 수 있음을 나타냅니다. Halo2도 좋은 병렬화 성능을 보여주었습니다.

  • 대부분의 프레임워크는 리눅스 서버에서의 CPU 이용률이 Macbook Pro M1의 2배이며, snarkjs만 예외입니다.

  • FRI 기반 프레임워크(Plonky2 및 Starky)가 멀티코어를 효과적으로 활용하기 어려울 것으로 예상되었지만, 이들은 우리의 성능 테스트에서 일부 Groth16 또는 KZG 프레임워크보다 성능이 떨어지지 않았습니다. 더 많은 코어(예: 100코어)를 가진 기계에서 CPU 이용률에 차이가 있을지는 아직 관찰해야 할 문제입니다.

Celer: 만신전 Pantheon - ZKP 개발 프레임워크 평가 플랫폼

결론 및 향후 연구

이 글은 SHA-256이 다양한 zk-SNARK 및 zk-STARK 개발 프레임워크에서의 성능 테스트 결과를 포괄적으로 설명합니다. 비교를 통해 우리는 각 프레임워크의 효율성과 실용성에 대한 깊은 통찰을 얻어, SHA-256 작업을 위한 간결한 증명을 생성해야 하는 개발자들에게 도움이 되기를 바랍니다.

우리는 Groth16 프레임워크(예: rapidsnark, gnark)가 증명 생성 측면에서 Plonk 프레임워크(예: Halo2, Plonky2)보다 더 빠르다는 것을 발견했습니다. Plonkish 산술에서의 조회 테이블은 더 큰 원형 크기를 사용할 때 SHA-256의 제약과 증명 시간을 크게 줄입니다. 또한, gnark와 rapidsnark는 멀티코어를 활용하여 병렬화하는 뛰어난 능력을 보여주었습니다. 반면에, Starky의 증명 생성 시간은 훨씬 짧지만 증명 크기가 훨씬 큽니다. 메모리 효율성 측면에서 rapidsnark와 Starky는 다른 프레임워크보다 우수합니다.

제로 지식 증명 평가 플랫폼「만신전 Pantheon」을 구축하는 첫 번째 단계로서, 우리는 이번 성능 테스트 결과가 우리가 구축하고자 하는 종합 테스트 플랫폼의 최종 결과로는 부족하다는 것을 인정합니다. 우리는 피드백과 비판을 환영하며, 모든 사람이 이 이니셔티브에 기여하여 개발자들이 제로 지식 증명을 더 쉽게, 낮은 장벽으로 사용할 수 있도록 초대합니다. 우리는 또한 개인 독립 기여자에게 대규모 성능 테스트의 계산 자원 비용을 지원하기 위해 자금을 제공할 의향이 있습니다. 우리는 함께 ZKP의 효율성과 실용성을 향상시켜 커뮤니티에 더 널리 혜택을 줄 수 있기를 바랍니다.

마지막으로, Polygon Zero 팀, Consensys의 gnark 팀, Pado Labs 및 Delphinus Lab 팀에 감사드립니다. 성능 테스트 결과에 대한 귀중한 검토와 피드백에 감사드립니다.

체인캐처(ChainCatcher)는 독자들에게 블록체인을 이성적으로 바라보고, 리스크 인식을 실제로 향상시키며, 다양한 가상 토큰 발행 및 조작에 경계해야 함을 상기시킵니다. 사이트 내 모든 콘텐츠는 시장 정보나 관련 당사자의 의견일 뿐이며 어떠한 형태의 투자 조언도 제공하지 않습니다. 만약 사이트 내에서 민감한 정보를 발견하면 “신고하기”를 클릭하여 신속하게 처리할 것입니다.
체인캐처 혁신가들과 함께하는 Web3 세상 구축