StarkNet的主要构成简介
因为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来做决定。