이 저장소에는 Espresso Sequencer와 통합되는 예제 롤업이 포함되어 있습니다. 예제 롤업은 Espresso에서 주문된 트랜잭션을 수신하여 롤업 VM에서 실행하고 모의 상태 증명을 L1(Ethereum) 스마트 계약에 게시하는 간단한 키/값 계정 저장소를 나타냅니다. 롤업에는 거래를 제출하고 계정 잔액을 쿼리하기 위한 간단한 API가 포함되어 있습니다.
Espresso는 일괄 롤업 트랜잭션에 대한 합의를 달성하는 네트워크인 HotShot을 기반으로 구축되었습니다. 높은 수준에서 롤업은 오프체인에서 값비싼 계산을 수행하는 L1 확장 솔루션입니다. zkRollups의 경우 증명자는 트랜잭션 유효성에 대한 일괄 증명과 함께 롤업 상태 체크포인트를 주기적으로 L1에 제출합니다. 여기에 설명된 예는 모의 zkRollup입니다. 에스프레소 롤업에 대해 자세히 알아보려면 문서를 읽어보세요.
시스템에 docker
설치되어 있는지 확인하세요.
Linux 배포판의 경우 Linux 배포판의 공식 지침을 따르거나 공식 docker 지침을 참조하세요.
먼저 로컬 Espresso Sequencer 네트워크를 시작해야 합니다.
git clone https://github.com/EspressoSystems/espresso-sequencer
cd espresso-sequencer
docker compose pull
docker compose up -d --wait
예제 롤업 배포가 완료되면 기본적으로 실행할 수 있습니다.
기본적으로 실행하려면 Rust 툴체인이 필요합니다. 우리는 모든 종속성을 설치하기 위해 nix 쉘을 제공합니다. Nix는 nix-installer를 통해 설치할 수 있습니다. 설치가 완료되면 프로젝트 루트에서 다음을 실행합니다.
nix develop
just dev-demo
just dev-demo
실행하면 몇 분 후에 new state event
로그를 볼 수 있습니다.
submit
엔드포인트를 통해 이 트랜잭션을 롤업으로 보냅니다. Alice가 검열에 대해 우려하는 경우 자신의 거래를 시퀀서에 직접 보낼 수 있습니다.Light Client
계약에 새 상태를 제출하여 새 상태에 대한 합의에 도달했는지 확인합니다.롤업 상태
예제 롤업의 상태는 다음과 같이 구성됩니다.
집행자
Executor는 L1 라이트 클라이언트 계약에 게시된 새로운 상태를 구독하고, 롤업 상태에 트랜잭션을 적용하고, 롤업 계약에 모의 증명을 제출하는 역할을 담당하는 서비스입니다. 롤업은 종종 실행자와 증명자의 역할을 두 개의 개별 서비스로 분리하지만 이 예에서는 단순성을 위해 두 서비스를 결합합니다.
롤업 API
롤업 API는 submit
및 query
끝점을 포함하는 REST API입니다.
롤업 계약
롤업 계약은 가장 최근의 롤업 상태 약정을 저장합니다. 계약은 실행자로부터 유효한 상태 전환 증명을 받으면 상태 약속을 업데이트합니다.
이 예에서는 아래 설명된 대로 몇 가지 Espresso 구성 요소를 사용했습니다. 자세한 내용은 문서에서 확인할 수 있습니다.
라이트 클라이언트는 롤업 상태의 무결성을 확인하는 스마트 계약입니다. 계약 코드는 여기에서 확인할 수 있습니다.
우리는 에스프레소 시퀀서 도커 이미지를 사용하여 에스프레소 네트워크를 실행했습니다. 네트워크는 핫샷을 사용하여 롤업 상태에 대한 합의를 얻습니다. 건축은 여기에서 찾을 수 있습니다
Espresso Network는 HotShot을 사용하여 롤업 상태에 대한 합의를 얻습니다.