Este repositorio contiene un resumen de ejemplo que se integra con Espresso Sequencer. El paquete acumulativo de ejemplo representa un almacén de cuentas clave/valor simple que recibe transacciones ordenadas de Espresso, las ejecuta en la máquina virtual acumulada y publica pruebas de estado simuladas en un contrato inteligente L1 (Ethereum). El paquete acumulativo contiene una API simple para enviar transacciones y consultar saldos de cuentas.
Espresso se basa en HotShot, una red que logra consenso sobre lotes de transacciones acumuladas. En un nivel alto, un rollup es una solución de escalamiento L1 que realiza cálculos costosos fuera de la cadena. En el caso de zkRollups, un proveedor envía periódicamente puntos de control del estado acumulativo junto con pruebas por lotes de la validez de la transacción a la L1. El ejemplo ilustrado aquí es un zkRollup simulado. Para obtener más información sobre los paquetes acumulativos de Espresso, lea nuestros documentos.
Asegúrese de que docker
esté instalado en su sistema.
Para distribuciones de Linux, siga las instrucciones oficiales de su distribución de Linux o consulte las instrucciones oficiales de Docker.
Primero necesitamos iniciar una red local de Espresso Sequencer.
git clone https://github.com/EspressoSystems/espresso-sequencer
cd espresso-sequencer
docker compose pull
docker compose up -d --wait
Una vez que haya terminado, implemente el paquete acumulativo de ejemplo, se puede ejecutar de forma nativa.
Para ejecutarlo de forma nativa, se requiere una cadena de herramientas de óxido. Proporcionamos un shell nix para instalar todas las dependencias. Nix se puede instalar a través del instalador nix. Una vez instalado ejecute lo siguiente desde la raíz del proyecto:
nix develop
just dev-demo
Después de ejecutar just dev-demo
, podrá ver new state event
después de unos minutos.
submit
de la API del paquete acumulativo. Si a Alice le preocupa la censura, puede enviar su transacción directamente al secuenciador.Light Client
en L1, que verifica que se haya alcanzado un consenso sobre el nuevo estado.Estado de resumen
El estado del paquete acumulativo de ejemplo consta de:
Ejecutor
El ejecutor es un servicio responsable de suscribirse al nuevo estado publicado en el contrato del cliente ligero L1, aplicar transacciones al estado acumulativo y presentar pruebas simuladas al contrato acumulativo. Los paquetes acumulativos a menudo separan las funciones de ejecutor y probador en dos servicios distintos, pero este ejemplo los combina en aras de la simplicidad.
API acumulativa
La API acumulativa es una API REST que incluye un punto final submit
y query
.
Contrato acumulativo
El contrato acumulativo almacena el compromiso de estado acumulativo más reciente. El contrato actualiza el compromiso estatal cuando recibe del ejecutor una prueba válida de transición estatal.
En este ejemplo, utilizamos algunos componentes de Espresso como se describe a continuación. Puede encontrar más información en los documentos.
El cliente ligero es un contrato inteligente que verifica la integridad del estado acumulativo. El código del contrato se puede encontrar aquí.
Ejecutamos una red de espresso utilizando las imágenes acoplables del secuenciador de espresso. La red utiliza hotshot para lograr un consenso sobre el estado del resumen. La arquitectura se puede encontrar aquí.
Espresso Network utiliza HotShot para lograr un consenso sobre el estado del resumen.