Este repositório contém um exemplo de rollup que se integra ao Espresso Sequencer. O rollup de exemplo representa um armazenamento simples de conta de chave/valor que recebe transações ordenadas do Espresso, executa-as na VM rollup e publica provas de estado simuladas para um contrato inteligente L1 (Ethereum). O rollup contém uma API simples para enviar transações e consultar saldos de contas.
O Espresso é baseado no HotShot, uma rede que alcança consenso em lotes de transações rollup. Em alto nível, um rollup é uma solução de escalonamento L1 que executa cálculos caros fora da cadeia. No caso de zkRollups, um provador envia periodicamente pontos de verificação de estado de rollup junto com provas em lote de validade da transação para o L1. O exemplo ilustrado aqui é uma simulação de zkRollup. Para saber mais sobre os rollups Espresso, leia nossos documentos
Certifique-se de que docker
esteja instalado em seu sistema.
Para distribuições Linux, siga as instruções oficiais da sua distribuição Linux ou consulte as instruções oficiais do docker.
Primeiro precisamos iniciar uma rede local do Espresso Sequencer.
git clone https://github.com/EspressoSystems/espresso-sequencer
cd espresso-sequencer
docker compose pull
docker compose up -d --wait
Quando terminar, implante o rollup de exemplo, ele poderá ser executado nativamente.
Para executar nativamente, é necessário um conjunto de ferramentas de ferrugem. Fornecemos um shell nix para instalar todas as dependências. Nix pode ser instalado através do instalador nix. Depois de instalado, execute o seguinte na raiz do projeto:
nix develop
just dev-demo
Depois de executar just dev-demo
, você poderá ver new state event
após alguns minutos.
submit
da API rollup. Se Alice estiver preocupada com a censura, ela poderá enviar sua transação diretamente para o sequenciador.Light Client
em L1, que verifica se o consenso foi alcançado sobre o novo estado.Estado de acúmulo
O estado do rollup de exemplo consiste em:
Executor
O executor é um serviço responsável por assinar o novo estado publicado no contrato de cliente light L1, aplicar transações ao estado rollup e enviar provas simuladas para o contrato rollup. Os rollups geralmente separam as funções de executor e provador em dois serviços distintos, mas este exemplo os combina por uma questão de simplicidade.
API de acúmulo
A API rollup é uma API REST que inclui um endpoint submit
e query
.
Contrato cumulativo
O contrato de rollup armazena o compromisso de estado de rollup mais recente. O contrato atualiza o compromisso estadual quando recebe do executor uma prova válida de transição de estado.
Neste exemplo, usamos alguns componentes do Espresso conforme descrito abaixo. Mais informações podem ser encontradas nos documentos
O cliente light é um contrato inteligente que verifica a integridade do estado de rollup. O código do contrato pode ser encontrado aqui
Executamos uma rede espresso usando as imagens docker do sequenciador espresso. A rede usa o hotshot para chegar a um consenso sobre o estado de rollup. Arquitetura você encontra aqui
A Espresso Network usa o HotShot para chegar a um consenso sobre o estado do rollup.