Cairo在StarkEx中的应用

概述中,我们将StarkEx服务视为系统的一个组成部分,STARK 证明器也被包括在了里面。 在这里,我们将讨论证明器的功能,以及将证明器与StarkEx服务放在一起的目标。

此处的描述仅指StarkEx。 但是,任何应用程序都可以在Cairo上使用类似的功能。

我们的STARK 证明器实际是对Cario程序正确执行的证明。 Cairo是通用的图灵完备语言。 您可以在此处阅读有关Cairo语言的更多信息。针对此处描述要牢记的重要一点是,Cairo在以下框架中运行:

● 它是无状态的。 即-系统中的Cairo / 证明器组件不是持有链下状态的组件。

● 它不能证明错误的交易。 相比之下,在L1上可以执行无效交易,该交易被显示为无效并已还原。 如果Cairo程序的输入含有无效的交易-Cairo程序将无法运行它(随后,我们将没有任何证据可证明)。

StarkEx后端目标

StarkEx后端服务具有两个目标,它们衍生于上述Cairo框架:

1.根据应用程序的业务逻辑,来确保所有要执行和证明的交易都是有效的-这样Cairo程序将能够以它们作为输入来完成运行。

2.预备Cairo程序的输入并运行它。 首先,将足够数量的有效交易汇总为一批,然后以这批交易作为输入执行Cairo程序。 在此过程中,STARK证明器将认证Cairo程序的正确执行。

Cairo程序不仅获取交易清单,还获取与先前状态相关的更多信息。 例如,如果有一笔交易Alice转移500 USDC到Bob,Cairo程序的输入必须包括Alice的保险库的旧余额,以及与以前的余额树根相关联的Merkle路径。

‌StarkEx证明批次

根据上述操作方法,我们可以看到StarkEx以批次为单位工作(并证明批次的有效性)。 这一点很重要,因为除了交易外,每个批次还包含一个标头,用做凭证。

这是如何使用批处理标头的示例。 让我们看一下交易转移中使用的失效_时间戳字段。 由于Cairo程序是无状态的,它不知道当前时间,因此无法验证时间是否到期。 因此,这必须用区块链时间来完成。 但是,将链上的批处理中的每个时间戳与区块链时间进行对比非常昂贵。

为了解决此问题并降低成本,StarkEx后端将批次中所有业务的最短到期时间输入到批次标头中。 Cairo程序证明每个业务中的失效时间戳等于或晚于此最小值。 提交凭证后,链上合约仅需将最短时间与区块链时间进行比较就足够了。