paint-brush
ZKBase에 대한 기술적 분석: 확장 가능하고 안전한 ETH 거래를 위한 고성능 ZK 롤업~에 의해@zkbase
2,865 판독값
2,865 판독값

ZKBase에 대한 기술적 분석: 확장 가능하고 안전한 ETH 거래를 위한 고성능 ZK 롤업

~에 의해 ZKBase6m2024/08/07
Read on Terminal Reader

너무 오래; 읽다

ZKBase는 ZK Stack과 Multi-Gpu Prover를 기반으로 한 고성능 ZK-Rollup입니다. 이 솔루션은 트랜잭션 처리 기능을 향상시키고 비용 효율적인 네트워크 경험을 제공합니다. 주요 장점은 영지식증명(ZKP) 기술을 채택해 오프체인 거래를 신속하게 검증할 수 있다는 점입니다.
featured image - ZKBase에 대한 기술적 분석: 확장 가능하고 안전한 ETH 거래를 위한 고성능 ZK 롤업
ZKBase HackerNoon profile picture


ZKBase는 ZK Stack과 Multi-Gpu Prover를 기반으로 한 고성능 ZK-Rollup입니다. 이 솔루션은 트랜잭션 처리 기능을 향상시키고 비용 효율적인 네트워크 경험을 제공합니다. 주요 장점은 영지식증명(ZKP) 기술을 채택하여 오프체인 거래를 신속하게 확인하고 확인하는 동시에 거래 개인 정보 보호 및 데이터 무결성을 유지한다는 점입니다. 모든 유효성 증명은 이더리움에서 검증되므로 사용자는 L1과 동일한 보안 보장을 누릴 수 있습니다. ZKBase는 이더리움과 유사하게 작동하지만 처리량이 더 높고 수수료가 더 낮습니다. 스마트 계약은 Solidity/Vyper로 작성되었으며 다른 EVM 호환 체인과 동일한 클라이언트를 사용하여 호출할 수 있습니다. 이 기사에서는 ZKBase의 핵심 엔지니어링 및 기술 구현을 소개합니다.

1. ZKBase의 주요 구성 요소

Tree 및 TreeBackup : 이 구성 요소는 RocksDB를 사용하여 L2 스토리지 트리의 로컬 복사본을 유지합니다. 데이터베이스는 최신 상태 루트 해시와 동기화된 상태를 유지하며 현재 시스템 상태를 지속적으로 반영합니다.


StateKeeper/VM : 트랜잭션을 실행하고 동봉된 블록을 로컬 RocksDB 데이터베이스에 안전하게 저장하여 데이터 무결성과 지속적인 상태 업데이트를 보장합니다.


스마트 계약 : 이더리움 메인넷에 배포된 이러한 스마트 계약은 오프체인에서 제출된 영지식 증명(ZKP)을 확인합니다. 성공적으로 검증되면 이 계약은 Ethereum 네트워크의 계정 상태를 업데이트합니다.


GPU Prover : 영지식 증명을 통해 안전하고 효율적인 거래 검증을 보장하는 ZK-Rollup 기술입니다. 이더리움 메인넷 외부에서 일괄 거래가 발생하면 ZK 집계 시스템은 여러 거래를 증명자가 계산한 단일 "유효성 증명"으로 압축하여 일괄의 정확성을 입증합니다. 이 증거는 이더리움 네트워크에 제출되어 오프체인에서 발생하는 대량의 거래를 빠르고 안전하게 확인할 수 있습니다.


브리지 : ZKBase는 ZKBase와 이더리움 메인넷 간에 자산을 안전하게 전송하기 위한 브리지 메커니즘을 제공하여 두 플랫폼 간의 상호 운용성과 자산 유동성을 보장합니다.

2. ZKBase 워크플로우

사용자는 API(응용 프로그래밍 인터페이스) 또는 L1에 배포된 계약을 통해 L2 요청을 시작할 수 있습니다. 제출된 요청은 mempool에 들어가 실행을 기다립니다. 특히, L1에서 발생하는 거래(예: 예금)는 전용 L1 우선 순위 대기열에 저장되어 즉시 처리됩니다.


mempool 저장 구조는 btreeset(btree에 의해 구현된 집합)입니다. 인덱싱 구조는 다음과 같습니다.



여기서 fee_data는 실제 점수 계산에는 관여하지 않지만 수수료 요구 사항을 충족하지 않는 거래를 필터링하는 데 도움이 됩니다. 점수는 타임스탬프를 기준으로 정렬되며, 타임스탬프가 동일하면 주소를 기준으로 정렬됩니다.

mempool의 트랜잭션은 State Keeper 내의 mempool 가져오기 구성 요소에 의해 관리됩니다. 만료된 트랜잭션을 제외하고 표준 트랜잭션은 btree 탐색에 정의된 순서대로 mempool에서 가져와 데이터베이스에 기록됩니다. 그런 다음 State Keeper/VM에 의해 처리되고 실행되어 상태 트리를 업데이트하는 데 사용됩니다.


블록 레이아웃 다이어그램은 블록 내 트랜잭션 구성과 L1 배치 내 L2 블록 배열을 보여줍니다.



각 L1 배치를 시작하려면 운영자는 배치의 타임스탬프, 시퀀스에서의 위치, 이전 배치의 해시 값 등 주요 세부 정보를 입력해야 합니다.



머클 트리 루트 해시는 이 프로세스에서 배치의 유효성과 거래의 신뢰성을 보장하기 위한 기본 루트 해시 역할을 합니다. 동시에 State Keeper는 특정 L2 블록 또는 L1 배치를 언제 완료할지 결정하여 해당 상태를 결정할 수 있는 권한을 갖습니다. 이 결정은 Conditional_sealer 모듈에서 관리하는 사전 정의된 기준 세트에 따라 결정됩니다. 이러한 기준에는 트랜잭션 수, 크기 제한, 가스 사용량 임계값과 같은 매개변수가 포함됩니다. State Keeper는 거래 처리 후 어떤 봉인 조건이 충족되었는지 확인합니다.


Conditional_sealer는 다음을 포함하는 SealCriteria 레지스트리를 유지 관리합니다.


  • 거래 횟수 제한,

  • L2 가스 제한,

  • 기타 규정 중 공개 데이터 양의 상한선.


NoSeal, includeAndSeal, ExcludeAndSeal 및 Unexecutable의 네 가지 결정 시나리오가 있습니다. 처음 두 경우의 프로세스는 동일하며 실행 후 상태가 State Keeper에서 업데이트됩니다. ExcludeAndSeal은 트랜잭션 실행을 롤백하고 다음 L2 블록에 포함되도록 대기열에 다시 배치하여 사전 정의된 배치 제한을 초과하는 트랜잭션을 처리합니다. Unexecutable 상황이 발생하면 트랜잭션을 실행할 수 없으며 거부됩니다.


각 배치가 끝나면 부트로더는 트랜잭션을 완료하고 다음 주기를 준비하기 위해 자리 표시자 L2 블록을 생성합니다. 대부분 비어 있지만 이 블록은 내부 작업에 중요하며 부트로더와 운영자 간의 수수료 이동을 기록하는 전송 이벤트 로그를 포함합니다. 시간 정확성을 보장하기 위해 배치 및 마지막 하위 블록의 타임스탬프를 예상 L1 시간 프레임과 교차 확인하여 시간 관련 문제에 대한 시스템의 탄력성을 향상시킵니다.


배치가 완료되면 증명자는 블록 실행을 확인하기 위해 암호화 증명을 생성합니다. ZKBase에서 증명자의 책임은 ZKBase EVM(Ethereum Virtual Machine)의 정확한 실행을 입증하는 것입니다. 이 증명은 이더리움 네트워크의 스마트 계약을 통해 검증됩니다. 증명이 생성되면 증명자는 이를 L1 트랜잭션으로 패키징하여 ETH_Sender로 보냅니다. ETH_Sender는 추가 처리를 위해 이더리움 메인넷에 배포된 ZKBase 계약으로 트랜잭션을 전달합니다.


이더리움 메인넷은 증명의 정확성을 확인하고, 성공적으로 확인되면 그에 따라 상태를 업데이트합니다.


프로세스 전반에 걸쳐 EthWatcher는 입금 및 시스템 업그레이드와 같은 특정 L1 이벤트를 지속적으로 모니터링하여 이더리움 메인넷과의 동기화를 보장합니다.

3. 다중 GPU 증명자 아키텍처


이 아키텍처는 Postgres 데이터베이스를 활용하여 데이터를 공유하고 여러 GPU 증명자 간의 병렬 계산을 지원하여 증명 생성 효율성을 향상시킵니다. 주요 구성 요소는 다음과 같습니다.


Operator : Layer 2 서비스를 제공하는 서버입니다.


Prover Gateway : 검증 서브시스템과 운영자를 연결하는 통신 모듈입니다.


Witness Generator : 증명 계산 작업을 생성하고 중간 아티팩트를 저장합니다.


Vector Generator : 모든 연산 작업을 GPU 연산에 적합한 벡터 형식으로 모아서 증명자에게 보냅니다.


증명자(Prover): 증명의 실제 계산 및 검증을 수행합니다.


압축기: 최종 증명을 SNARK 형식으로 압축합니다.

증명 생성 작업 흐름

배치 생성(Batch Generation) : 운영자는 거래를 수집하고 새로운 배치를 생성합니다.


배치 수신 : 증명자 게이트웨이는 운영자로부터 새 배치를 검색하고 영지식 증명 생성 준비를 시작합니다.


데이터베이스 삽입 : Prover Gateway는 배치 정보를 Postgres 데이터베이스에 삽입합니다. 후속 데이터 처리는 데이터베이스와 직접 상호 작용하여 해당 입력 테이블에서 데이터를 검색하고 처리된 데이터를 관련 출력 테이블에 배치합니다.


증인 생성 : 이 초기 단계는 사용자가 트랜잭션을 시작하여 증인을 생성할 때 발생합니다. 증인은 거래 세부 사항을 공개하지 않고 네트워크 합의 규칙을 기반으로 거래의 유효성을 증명합니다. 새로운 거래 증인은 일괄적으로 수집되고 처리됩니다. 각 배치는 다음과 같은 프로세스를 거칩니다.


  • 기본회로증인생성기

  • LeafAggregationWitnessGenerator

  • 노드 집계

  • 스케줄러


벡터 생성 : 벡터 생성기는 회로를 통합하여 감시 벡터를 생성하고 GPU 컴퓨팅 성능 사용을 최적화합니다.


증명 계산 : 증명자는 GPU를 활용하여 영지식 증명을 계산하고 증명 계산의 정확성을 확인합니다.


압축 : 압축기 모듈은 증거를 압축하여 데이터 크기를 줄이고 이를 SNARK 형식으로 변환합니다.

4. 결론

ZK Stack 및 Multi-GPU Prover를 기반으로 구축된 ZKBase는 고성능 레이어 2 확장성을 달성합니다. 그러나 이더리움 확장 솔루션 ZK-Rollup은 여전히 수많은 기술적 과제에 직면해 있습니다. 앞으로도 ZKBase는 분산형 시퀀싱 및 분산형 ZK 계산 전력 네트워크 구현을 계속해서 연구하고 탐구할 것입니다.