此存储库包含与 Espresso Sequencer 集成的示例汇总。该示例 rollup 代表一个简单的键/值帐户存储,它从 Espresso 接收有序交易,在 rollup VM 中执行它们,并将模拟状态证明发布到 L1(以太坊)智能合约。 Rollup 包含一个简单的 API,用于提交交易和查询帐户余额。
Espresso 建立在 HotShot 之上,HotShot 是一个在批量汇总交易上达成共识的网络。从较高层面来看,rollup 是一种 L1 扩展解决方案,可在链外执行昂贵的计算。对于 zkRollups,证明者定期向 L1 提交汇总状态检查点以及批量交易有效性证明。这里展示的示例是一个模拟 zkRollup。要了解有关 Espresso 汇总的更多信息,请阅读我们的文档
确保您的系统上安装了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 shell 来安装所有依赖项。 Nix 可以通过 nix-installer 安装。安装后,从项目的根目录运行以下命令:
nix develop
just dev-demo
just dev-demo
后,几分钟后您将能够看到new state event
日志。
submit
端点将此交易发送到 Rollup。如果爱丽丝担心审查制度,她可以将她的交易直接发送到排序器。Light Client
合约,该合约验证是否已就新状态达成共识。汇总状态
示例汇总的状态包括:
执行者
执行器是一项服务,负责订阅发布到 L1 轻客户端合约的新状态,将交易应用于汇总状态,并向汇总合约提交模拟证明。汇总通常将执行者和证明者的角色分为两个不同的服务,但为了简单起见,本示例将它们组合在一起。
汇总API
汇总 API 是一个 REST API,包含submit
和query
端点。
汇总合约
Rollup 合约存储最新的 Rollup 状态承诺。当合约从执行者收到有效的状态转换证明时,它会更新状态承诺。
在此示例中,我们使用了一些 Espresso 组件,如下所述。更多信息可以在文档中找到
轻客户端是一个智能合约,用于验证汇总状态的完整性。合约代码可以在这里找到
我们使用 espresso-sequencer docker 镜像运行了一个 espresso 网络。网络使用hotshot来达成rollup状态的共识。架构可以在这里找到
Espresso Network 使用 HotShot 来达成汇总状态的共识。