宏观概述

StarkEx是基于有效性证明的以太坊L2可扩展性解决方案。 它可以在zkRollup或Validium数据可用性模式下运行。

每个在StarkEx之上架构的应用程序都会定义自己的业务运行逻辑,并在StarkEx服务上运行。 该系统具有链上组件和链下组件。 链下组件持有状态,命令执行系统中的交易,并将状态更新发送到链上组件。 链上组件持有状态承诺,持有系统资产,并负责执行状态转换的有效性。

‌系统中的所有交易都通过应用程序执行,并发送到StarkEx服务。 StarkEx服务对交易进行批处理,并将批处理发送到SHARP(共享证明服务),生成一份证明来表明批处理的有效性。SHARP将STARK证明发送给STARK验证器进行验证。服务随后发送一份链上状态更新交易到StarkEx合约,仅在证明被验证器验证有效时,交易才会被接受。

用户以两种方式与系统交互-通过发送链上交易到StarkEx合约和发送链下交易到应用程序

‌‌当用户想要使用该系统时,他们首先将starkKey注册StarkEx合约中的以太坊地址。starkKey用于验证用户的链下交易。 然后,用户将其资金存入StarkEx合约。 在应用程序接受存款后,用户可以在链下使用其资金。

用户将由starkKey签名的转账限价单直接提交给应用程序。限价单被匹配在一起,并作为结算发送给StarkEx服务。转账行为照原样发送。不同类型的转账交易可以由额外的逻辑来执行。

‌ ‌为提取资金,用户应向应用程序提交链下提款请求。此请求被发送到StarkEx服务,一旦包含提款的状态更新被接受,用户就可以在链上获取其资金。

‌为了防止审查,如果用户的提款请求没有得到实现,他们可以使用强制操作来强制执行。

系统元件

StarkEx系统包含以下组件:

应用程序- 系统的操作员。 接收用户交易的链下组件,定义业务运行逻辑和执行的顺序。最终,它将交易发送到StarkEx服务

StarkEx服务-一个链下组件,负责批处理一组操作,根据这些操作更新系统状态。针对每一批,StarkEx服务将发送此批的操作(作为Cairo执行痕迹)到SHARP进行有效性证明,一旦证明被验证,它将新状态发布在链上。 状态由 Merkle tree呈现,其叶子是保险库。每个保险库的结构和内容根据所实施的特定业务逻辑而有所不同。更多详细信息,请参见此处。Merkle tree的根是未被提交到链上的状态承诺。

SHARP- Cairo程序的共享证明服务。 它接收来自不同应用程序的证明请求,并输出证明以证明Cairo执行的有效性。输出的证明可以在多个证明请求之间共享。

STARK验证器-这是一个链上组件,用于接收状态更新有效性证明并验证该证明是否有效。

StarkEx合约-该合约有两个主要功能。 第一个是在确认有效性条件得以满足后更新系统状态。第二个功能是以自主托管方式管理在StarkEx中的进出资金,这意味着在任何情况下,用户都可以提取其资金。