当前位置:首页 > 知识 >

StarkNet的主要构成简介

  • ar star
  • 2023-09-24 02:27:53
  • 2476
本文将简要解释StarkNet中的重要组件,不涉及编码部分或过多技术细节,但希望读者对ZK-Rollup(Validity-Rollup)有基本了解。

由于StarkNet的系统设计中包含与零知识证明和Merkle Tree相关的数据结构,因此读者需要对零知识证明和Merkle Tree有初步了解,这将有助于阅读本文内容。未来我们也将继续深入讨论各个系统组件。

作者:ChiHaoLu(chihaolu.eth) @ imToken Labs

StarkNet OS(操作系统)是由Cairo开发的StarkNet原生语言编写的。类似于Solidity,它用于编写智能合约,并且是一种零知识证明语言,用于构建StarkNet核心操作系统和各种功能。

StarkNet OS包含了StarkNet链上的所有逻辑,例如账户状态定义、交易原理、合约执行,甚至包括位运算、哈希运算和本地签名算法等。操作系统需要在接收交易和合约输入后生成输出,并将该输出更新到StarkNet L2状态中。

为什么要使用零知识证明语言来编写StarkNet OS,而不是其他常见的编程语言呢?我们知道,扩容的一种方法是将复杂的计算放在Off-Chain,只需在On-Chain进行验证。StarkNet会将由Cairo编写的ZK-STARK程序的执行结果通过STARK-proof system进行证明,并在以太坊上进行验证。

我认为StarkNet的系统架构有三个重点:Sequencer、Prover&Verifier和L1 Core Contract。此外还有原生AA设计的User Account、Full Node、Fact Register等组件,但本文主要介绍前三个重点。

StarkNet的系统概述: StarkNet不需要矿工角色,但仍然需要一个角色来"验证交易"、"决定交易顺序"和"构建区块",这个角色就是Sequencer。

Sequencer是一个Off-Chain服务器,其工作流程的第一步是接收用户提交的交易(来自不同用户的多个交易),然后Sequencer决定交易顺序并构建L2区块。

Sequencer需要确认交易是由账户所有者授权的(由于StarkNet使用了原生AA账户系统,所以这里的确认可能不仅仅是验证签名的正确性,可能还涉及多签或其他验证逻辑)。通过StarkNet OS执行一次交易,接收输入并执行合约逻辑,生成输出。

Sequencer执行交易后会生成一个trace,并将这些执行过程的"过程见证"提供给Prover生成证明,告诉其他人:"我执行过这段代码"。

在接下来的Prover和Verifier验证成功后,Sequencer会更新L1 StarkNet Core Contract中的状态。

Prover也是一个Off-Chain服务器,其主要功能是接收Sequencer生成的代码执行过程trace,并生成相应的STARK proofs,然后交给L1上的Verifier Contract进行验证。验证通过后,将结果注册为fact供未来的L1 StarkNet Core Contract查询使用。

图像来源:Starkience推文

Verifier Contract在L1上负责验证所有这些内容是否合法,包括接受输入和STARK Proof来进行决策。

补充说明:目前StarkNet只有一个Prover,它不仅为StarkNet生成证明,还为运行在StarkWare自己的StarkEx rollup上的所有其他应用程序(如Immutable X、dYdX、Sorare等)生成证明。这就是为什么这项服务被称为Shared Prover或SHARP的原因。

StarkNet L1 Core Contract存储了L2状态的证明。当我们的trace通过Prover生成证明并在L1 Verifier Contract验证后,会告知L1 Core Contract这个"状态更新"。

猜你喜欢

微信二维码

微信