StarkNet的主要构成简介

StarkNet 2024-01-29 77
本文将简要解释StarkNet中的关键部件,不涉及编码部分或过多的技术细节,但希望读者能对ZKKNet进行简要解释-Rollup(Validity-Rollup)有一个基本的了解。

因为Starknet的系统设计包括零知识证明和Merkleet 与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通过STARK将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。

图像来源:Starkiencc文章

Verifier Contract负责验证L1上所有这些内容是否合法,包括接收输入和STARK Proof来做决定。

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

StarkNet L1 Core Contract存储L2状态的证明。当我们的trace通过Prover生成确认并在L1中生成时, Verifier Contract验证后,会通知L1 Core “状态更新”Contract。

相关推荐