# 一文读懂StarkNet的开源堆栈

By [Untitled](https://paragraph.com/@0x2aad9ee719311ea9a2587a591272a8257a29d44f) · 2023-11-05

---

Web3 降智系列是我在 2023 年新开始的一个 以日常交流中 Web3er 对一些知识和概念的误解为引子，以即使你在忙了一天后大脑停机的降智状态也能读懂为目的，通过讲述设计思想而不是外在表现，尽量不涉及具体公式和代码的 面向非技术人员的科普系列。

继上次我们提到 StarkNet 发布了开源的 Sequencer（定序器）后，StarkWare 又搞了一个大新闻：StarkNet 的 Prover（证明器）即将开源！

不知不觉的，从去年 11 月Cairo 语言开源之后，三个月的时间内，StarkNet 的所有组件全部重写+开源。在这里，我们回顾一下 StarkNet 的开源堆栈吧。

整体架构 首先，我们先复习一下上次的文章里提到的 StarkNet 架构。

Sequencer 负责管理和协调交易的执行顺序。Sequencer 可以认为是一个交易队列，它确保在同一个区块内的所有交易按照指定的顺序执行，并且确保没有交易被重复执行。Sequencer 还负责验证交易的合法性，并将其写入区块链。

Prover 则负责生成关于 Sequence 执行轨迹有效性的加密证明。目前，这项工作是由单一的 Prover，即「Share Prover」或「SHARP」执行的。

Verifier 位于 L1，用于验证 Starknet Prover 产生证明的智能合约，如果运行成功，其将更新以太坊 L1 上的状态用于记录保存。

在上一篇文章里我们提到了上述三个部件，这一次除了 Sequencer 和 Prover，我们还将对 FullNode 进行说明（Verifier 和 StarkNet Core 属于以太坊上的合约，不在讨论范围内）。

Sequencer—Blockifier Starknet 的新 Sequencer Blockifier已于 1 月 26 号发布，其节点部分和 CairoOS 部分分别基于将在下面提到的 Papyrus 和 Cairo-rs。之前的 Sequencer 是一个闭源的由 python 编写客户端，且只由 StarkNet 自己控制。而这个 Python 客户端是连官方也承认的慢，而且也没实现交易执行的并行性，这严重影响了 StarkNet 的 TPS，且不符合去中心化思想。

这个由 Rust 编写的 Sequencer 开源后，最基础的，是可以让任何人都可以自行编译和运行自己的 Sequencer 客户端。同时根据官方自己的信息，这个客户端大幅度的提高了执行速度。而官方的后继计划也在路上：

*   整合现有的 StarkNet Sequencer，通过替换其当前用 Python 编写的事务块化组件。
    
*   实现交易执行的乐观并发。
    
*   将 Blockifier 扩展成一个完整的 StarkNet Squencer，替换当前使用的 sequencer。
    

FullNode—Papyrus FullNode，即全节点，在 Starknet 中指的是一个 PathFinder（寻径者）客户端或者运行这个客户端的机器。一个全节点会记录 rollup 中执行的所有交易，并跟踪系统的当前全局状态。它通过 p2p 网络接收此信息，每当创建一个新块时，都会共享全局状态和与其相关的有效性证明。

而Papyrus，是一个 StarkNet 全节点的 Rust 实现，已经于 1 月 16 号发布。它将成为新的 StarkNet Sequencer 的基础的一部分，大大提高 StarkNet 的 TPS。开源 Papyrus，将有助于提高 StarkNet 性能和去中心化。

Cairo OS—Cairo-rs Cairo OS 是 Sequencer 中用来执行以 Cairo 语言编写的合约的虚拟机（VM）。而Cairo-rs，是一个由第三方开发团队 Lambdaclass 开发的新的开源 Cairo VM，用以替换老旧的由 Python 开发的 CairoVM。

Prover—???(名称未定) 那么这次的开源 Prover 又对于 StarkNet 的架构有什么意义？第一是为 Prover 的去中心化做准备，第二则是为了提高 StarkNet 的 TPS。目前 StarkNet 仅有官方运行的单一 Prover，叫做即「Share Prover」（共享证明器，简称「SHARP」）。为什么它的名称里有个共享？是因为这个证明器不仅负责生产 StarkNet 的证明，还要负责生成 StarkEX 的证明（关于什么是 StarkEX 参考此处）。这严重影响了 StarkNet 的 TPS，且不符合去中心化思想\* agian。

有了开源的 Prover 之后，任何人都可以自行编译和运行自己的 Prover。当然，Prover 还仍然只是宣布开源，暂未放出 Git Repo。而且因为 ZK 的特性，Prover 为计算生成证明所需的计算远远多于 Sequencer 所执行的计算，所以根据官方的旧文档，Prover 可能需要极高的配置，准入门槛非常高（如图所示，4 核 CPU 和 16GB 内存只能每秒处理 100 个哈希）。

Cairo Language Cairo 1.0 也已经在今年开源，由于 Cairo Language 是由 Rust 编写，StarkNet 整个官方生态可以说已经变成了 Rust 全家桶。当然，Cairo 1.0 还未被 StarkNet 所支持，因此还不能用来编写智能合约。根据官方消息，将在 2023 年 Q1 之内实现对 Cairo 1.0 支持。

---

*Originally published on [Untitled](https://paragraph.com/@0x2aad9ee719311ea9a2587a591272a8257a29d44f/starknet-2)*
