# StarkNet 技术架构和特色生态

By [Starknet Astro](https://paragraph.com/@starknet-astro) · 2023-01-13

---

> **关注 StarkNet Astro** ✨ [中文频道](https://twitter.com/StarkNetAstroCN)；[英文频道](https://twitter.com/StarkNetAstro)

分享会内容过长，本次 AMA 总结文字做大量删减，如果你想了解 StarkNet 更多知识可前往 StarkNet Astro 知识库页面。

StarkWare
---------

![](https://storage.googleapis.com/papyrus_images/9806f84d7fa5fe3a029a6712de3722b04d6f8a8c58b12d03cb8cd1e199d0de46.png)

StarkWare 是 StarkEx 和 StarkNet 背后的开发团队，团队成员以密码学工程师为主，STARKs 和 SNARKs 发明者均是其创始人，技术实力一流；融资方面累计融资 2.7 亿美元，估值达到 80 亿美元，为 L2 最高。

StarkEx
-------

![](https://storage.googleapis.com/papyrus_images/7eba7e1e42214895cfa57bb4a0b44ed31bd0e7bd45309123321d1fdb9bd5acbb.png)

### 简介

StarkEx 是 StarkWare 创立的，为项目方定制 ZKR 的企业服务，它可以帮助项目定制应用专有的 ZKR，目前使用 StarkEx 的客户包括 dYdX 、Sorare、ImmutableX、DeversiFi 等。

与通用 ZKR 不同，在通过 StarkEx 定制的 ZKR 中，项目方往往具有超级管理员的权限，可以决定交易是否通过与排序，外部开发者不能免许可地部署应用，网络较为中心化，但优点是性能极高。

### 工作原理

StarkEx工作流如下：

1.  打包交易：链下服务器（往往由项目方中心化运行）处理客户请求，将多个交易组合成一个“批次”，供 StarkEx 处理。
    
2.  确认交易和更新状态：链下服务器确认交易合法，并以被压缩后的哈希形式更新系统状态。
    
3.  为交易生成证明：SHARP 会为交易生成 STARK 证明以确认交易有效性，然后将证明和更新发送到链上 Verifier 智能合约，以确保交易的完整性。
    
4.  链上验证证明：一旦 STARK 证明被验证，状态更新被提交并结算回以太坊主网。所有交易都是在链外处理和验证的，而其完整性的证明是在链上验证的。
    

SHARP 是一个共享证明者，它同时为多个 StarkEx 客户/应用提供证明生成服务——生成计算完整性声明的证明。Verifier 是部署在以太坊上的智能合约，用于验证由 StarkEx 的交易生成的 STARK 证明的正确性。

![https://docs.starkware.co/starkex/architecture/solution-architecture.html](https://storage.googleapis.com/papyrus_images/5750cc89e4c8c0dc59c66364e4498678cb287d6fad7a8c4e6dda8264639f8b57.png)

https://docs.starkware.co/starkex/architecture/solution-architecture.html

StarkNet
--------

![](https://storage.googleapis.com/papyrus_images/d7bceb9c528bd65ed2a8cb330b9a0b22ef92d9ec8ca8f1f89f8edf7d1eb802bd.png)

### 简介

StarkNet 是一个通用的 ZK Rollup，理论上能够将 TPS 提高到 2000+，Gas 降低到 0.002 以下。

为什么 StarkNet 具有相比以太坊更高的性能？首先回顾一下以太坊的工作原理。在以太坊上，每提交一笔交易都需要所有节点检查、验证并执行交易来保证计算正确性，并将计算后的状态变化在网络中广播。

![https://ethereum.org/zh/developers/docs/evm/](https://storage.googleapis.com/papyrus_images/d2e74a36fabfb2f6577f6eff4e70a843dcf23a0a8bcf5ad80300250db97e0e2c.png)

https://ethereum.org/zh/developers/docs/evm/

相比之下，StarkNet 仅在链下执行计算并生成一个 ZK 证明，然后在链上验证该证明的正确性，最后**把多个 L2 交易打包为以太坊上的一笔交易**。因此，StarkNet 上发生的交易成本可以被同一打包批次的其他交易所均摊，就像拼车（🚌拼多多）一样，交易越多，成本越低。StarkNet 为交易生成 ZK 证明的方法可以大大提高网络运行速度、减少链上通信量、增加网络吞吐，因此 StarkNet 相比以太坊具有更高 TPS 和更低 Gas。

简而言之，将验证计算正确性比喻为老师需要检查同学们是不是掌握了知识。**以太坊的方法是检查每个同学是否能背诵整本教科书，而 StarkNet 的方法是让同学们做卷子。后者的效率更高，成本更低，但仍然保证安全。**

### EVM 兼容

StarkNet 网络本身不兼容 EVM（以太坊虚拟机），而设计了另外一套 ZK 友好的 Cairo VM，是 Vitalik 所说的第四类 zkEVM,，但属于严格意义上的 zkVM。

![https://vitalik.eth.limo/general/2022/08/04/zkevm.html](https://storage.googleapis.com/papyrus_images/066882a740a4d4d48c2623b179f22b7237db9ff9693ddf1aeafafad318e49af9.png)

https://vitalik.eth.limo/general/2022/08/04/zkevm.html

在 zkVM 架构方面，StarkNet 实现了一套更加 ZK 友好的指令集、汇编语言、字节码、AIR（代数中间表示） 以及高级语言 Cairo。

![https://www.youtube.com/watch?v=SEp5SFaYQHY&t=6s](https://storage.googleapis.com/papyrus_images/023c1dc60bc5c2277fda63bbe3ea5de9056f902f08c07335a0ad7393a1cf37c8.png)

https://www.youtube.com/watch?v=SEp5SFaYQHY&t=6s

**尽管 StarkNet 本身不兼容 EVM，但 StarkNet 仍然可以通过其他方式兼容以太坊。**

1、[Warp](https://github.com/NethermindEth/warp)：将 Solidity 转译为 Cairo 语言的转译器

![](https://storage.googleapis.com/papyrus_images/db67173387aaf1e0645089bed152113f31be394bc3e63575787ec97123c7a48c.png)

Warp 是一个 Solidity-Cairo 转译器，目前已经由以太坊著名基础设施团队 [Nethermind](https://twitter.com/nethermindeth) 开发完成。Warp 可以把 Solidity 代码转译为 Cairo，但转译后的 Cairo 程序往往需要修改并增添 Cairo 特性（如调用内置函数，优化内存等）才能最大化执行效率。

2、[Kakarot](https://twitter.com/KakarotZkEvm)：一个用 Cairo 语言编写的 zkEVM

![](https://storage.googleapis.com/papyrus_images/3e687429df12d762c45bc44d86243b0dda737714d5ab2c39c62ff5b36c117143.png)

Kakarot 是一个用 Cairo 写的智能合约，目前部署在 StarkNet（goerli测试网）上，100% 字节码等效 EVM。目前处于测试阶段。以太坊应用可以通过部署到 Kakarot 的方式移植到 StarkNet。

*   ✅ Kakarot 可以：(a) 执行任意 EVM 字节码，(b) 按原样部署 EVM 智能合约，(c) 调用 Kakarot 部署的 EVM 智能合约的功能（视图和写入方法）。
    
*   ✅ Kakarot 是一个 EVM 字节码解释器。
    

目前已经支持 EVM 全部操作码。

![https://github.com/sayajin-labs/kakarot](https://storage.googleapis.com/papyrus_images/8a46e1f9c9f547eadc04467168d3ea8fb68141cdb43537a7d856c06a0e2341eb.png)

https://github.com/sayajin-labs/kakarot

### 工作原理

StarkNet 有五个组成部分。分别是在 StarkNet 上的 Prover（证明者），Sequencer（排序器）和全节点；以及部署在以太坊上的验证者（Verifier）和核心状态合约（StarkNet Core）。

工作流程如下：

![https://david-barreto.com/starknets-architecture-review/#more-4602](https://storage.googleapis.com/papyrus_images/623e6b4b3c843e4fc9121f079fd94757c025ac3ed225e153b3b40f6344a8aed3.png)

https://david-barreto.com/starknets-architecture-review/#more-4602

1、当我们在 StarkNet 上发起一个交易，一个链下服务器——排序器将会接收、排序、验证，并将它们打包到区块。执行交易，然后状态转换发送给 StarkNet Core 合约；

2、证明者将为交易生成证明，并发送给以太坊的验证者合约；

3、验证者将验证结果发送到以太坊上的 StarkNet Core 合约，并从 StarkNet Core 合约触发一组新的以太坊交易，以更新链上的全局状态以进行记录保存。状态事务作为“calldata” （EIP-4844后为Blob）来发送，以节省 L1 事务 gas。这些“metadata”可被 StarkNet 全节点解密。

全节点基本发挥存储功能。全节点存储状态改变、元数据、证明以及记录在 StarkNet 中的已被执行的所有事务，并跟踪系统的当前全局状态。在有必要的时候，全节点将解密“metadata”来重构 StarkNet 的历史。

参考 StarkNet 开发倡导者 [@barretodavid](https://twitter.com/barretodavid) 写的[《StarkNet's Architecture Review》](https://david-barreto.com/starknets-architecture-review/#more-4602)。

### 账户抽象

不同于以太坊 EOA+CA 的双账户设计，StarkNet 实现了原生账户抽象，只有一种账户设计，借鉴了 EIP 4337 的精神，下图为交易模型：

![](https://storage.googleapis.com/papyrus_images/27762843b013d533017a572a83998c62f2d3eff95ecaa37d3c818891794813f0.png)

STARK 证明系统
----------

目前有许多不同的证明系统（生成和验证证明） ，如 Halo、PLONK、[Groth16](https://eprint.iacr.org/2016/260.pdf)、[Groth09](https://github.com/huyuguang/zkpblog/blob/master/groth09.md) 、Marlin、Plonky2 等，它们都属于 SNARK 证明系统。证明系统存在一个证明者生成证明，一个验证者验证证明。而不同的 ZK 项目几乎都会使用不同的证明系统，StarkNet 使用的 STARK 某种意义上属于一种特别的 SNARK 。

![https://medium.com/alliancedao/zkps-in-web-3-now-and-the-future-21b459348f29](https://storage.googleapis.com/papyrus_images/0435c84e3fbbf2012e055fbfcd65844e6a7081db55d16725ff7eef9abd49a7c7.png)

https://medium.com/alliancedao/zkps-in-web-3-now-and-the-future-21b459348f29

STARK 相比 SNARK 有更多创新。它不需要和 SNARK 一样依赖“可信设置”。**它还带有更简单的密码学假设，避免了对椭圆曲线、配对和指数知识假设的需要，纯粹依赖哈希和信息论，因此抗量子攻击。总体来讲 STARK 比 SNARK 更安全。**

在扩展性方面，STARK 的扩展性更强。证明生成速度具备线性扩展性，验证时间和证明大小具备对数扩展性。**但缺点在于生成的证明尺寸更大。但随着证明规模增加，验证成本将会边际递减——这意味证明越大，总成本越低。**

![https://consensys.net/blog/blockchain-explained/zero-knowledge-proofs-starks-vs-snarks/](https://storage.googleapis.com/papyrus_images/2bac7069f230ca47278115d446ef2fde254343f4f8e8b0186f7c67f5e973f615.png)

https://consensys.net/blog/blockchain-explained/zero-knowledge-proofs-starks-vs-snarks/

**总结一下，相比 SNARK，STARK 更安全，平均验证时间和证明大小将随着验证规模扩大而降低，缺点在于初始证明尺寸更大，因此更适合大规模应用。**

这里介绍一下 STARK 的重要特性：递归证明

任何通用的、简洁的知识系统的证明/论证（特别是STARKs） 都可以用来递增地验证计算。这意味着一个计算可以产生一个证明，以证明该计算的前一个实例的正确性，这个概念被非正式地称为 "递归证明组合"或者"递归STARKs"。

换句话说，一个递归 STARK 证明者可为一个陈述生成一个证明，即系统的状态可以从 a 移到 a+1。因为证明者已经验证了一个证实 a 的计算完整性的(递归)证明，并且忠实地执行了状态 a 的计算，达到了新的状态 a+1。**简而言之，你可以理解该过程将 a 和 a+1 两个证明合并为了一个证明，在理论上可以将近乎无限的证明合并为一个证明，这将大幅减少证明大小和验证时间。如下图所示：**

![https://medium.com/starkware/recursive-starks-78f8dd401025](https://storage.googleapis.com/papyrus_images/aa5289e690351da1f2594d343b19895379f270fa33d3ca43569fc30d70a6530e.png)

https://medium.com/starkware/recursive-starks-78f8dd401025

Cairo VM 和 Cairo 语言
-------------------

### Cairo VM 概述

![https://www.youtube.com/watch?v=SEp5SFaYQHY&t=6s](https://storage.googleapis.com/papyrus_images/023c1dc60bc5c2277fda63bbe3ea5de9056f902f08c07335a0ad7393a1cf37c8.png)

https://www.youtube.com/watch?v=SEp5SFaYQHY&t=6s

Cairo VM 是一个是一个采用冯诺依曼架构的 CPU VM，其编程语言也叫 Cairo，Cairo 语言基于 Cairo 汇编，因此编译效率非常高。 Cairo 是 **C**PU **A**lgebraic **I**ntermediate **R**epresentation （代数中间表达）的首字母缩写。Cairo VM 包含单个 AIR 来验证这个 「CPU」 的指令集。

它有时候也被叫做 StarkNet OS/Cairo OS 。它不同于 EVM，Cairo VM 不执行计算，仅为计算生成证明并验证正确性。

关于工作方式，它根据收到的输入的交易来更新系统的 L2 状态。促进 Cairo 合约的执行。Cairo VM 是基于 Cairo 的，合约可用的具体系统操作和功能可作为对操作系统的调用。

### Cairo VM 特性

灵活的 CPU 架构

![](https://storage.googleapis.com/papyrus_images/d4b26e047554ff3cdda73ca36682ddc11176c90d410115da8461ab9418e0e6b6.png)

Cairo VM 采用图灵完备的冯诺依曼 CPU 架构，可通过软件编程的方式无限接近 AISC 的性能，有对应的指令集，所以 Cairo 理论上可以复刻其他虚拟机。

只读非确定性内存模型

Cairo VM 采用只读的非确定性内存，这意味着每个内存单元的值由证明者选择，它不能随时间改变（在 Cairo 程序执行期间），是不可变的。该指令只能从中读取。我们可以将之视为一次写入的存储器：可以向一个单元写一次值，但事后不能改变它。而且它是连续的，如果有空会被任意值填充。

![](https://storage.googleapis.com/papyrus_images/7e2a9767a19bb7ff42f6c8b1a4d4e02e8c1b6d1454d71df234d8450b8cf48338.png)

ROM 优点包括：低成本，电路比 ROM 更简单；永存储，内存值将保证永久存储；不可篡改，数据不能修改和删除。

### Cairo 语言概述

![https://www.cairo-lang.org/](https://storage.googleapis.com/papyrus_images/508d13b9f6e0196508c13ed11e3d31b2f04b231bfd8c2de5662999bb0e7b7f47.png)

https://www.cairo-lang.org/

Cairo 是 StarkNet 的智能合约语言，基于 STARK 设计，Cairo 程序可生成 STARK 证明。

Cairo 程序是汇编代码的集合，Cairo 开发人员将以高级语言 Cairo 来编写智能合约而非 Cairo 汇编。当我们写了一个 Cairo 程序，Cairo 编译器会将 Cairo 代码编译成 Cairo 汇编，Cairo 汇编器将采用汇编代码生成 Cairo 字节码（它运行在 Cairo CPU）以在 Cairo VM 执行，当他最终运行到真实机器上还需要编译为操作码和机器代码（还有指令）。

### Cairo 语言特性

**启动加载：从哈希加载程序**

程序可以将另一个程序字节码写入内存，然后运行该程序。 这有两个好处：

1.  可扩展性，验证时间和程序大小呈现对数关系，正如 STARK 部分提到的。
    
2.  隐私性，验证者可以验证程序是否正确执行而无需知道计算。
    

**内置函数：减少代码编译**

开发者直接调用内置函数可以减少计算开销，优化开发体验，而不需要代码转换。添加内置函数不会影响 CPU 约束。这只是意味着相同的内存在 CPU 和内置函数之间共享，如图所示。

![https://medium.com/@pban/demystifying-cairo-white-paper-part-i-b71976ad0108](https://storage.googleapis.com/papyrus_images/42a113221e75c126e94f754f7d7ddf88ce3706401a5c12c7ab090411a8118d6e.png)

https://medium.com/@pban/demystifying-cairo-white-paper-part-i-b71976ad0108

Cairo 体系结构没有指定一组特定的内置函数。可以根据需要在 AIR （代数中间表示）中添加或删除内置函数。

特色生态
----

与其他生态不同，StarkNet 有一些原生的创新应用，分别是全链游戏、合约钱包和链上 AI。

关于全链游戏（On-chain game），它不同于 GameFi。**全链游戏与 GameFi 的根本差别在于前者是去中心、免许可、可组合、互操作的，而后者仅仅将游戏中的关键道具铸造为代币。**

GameFi 只是将游戏资产上链，计算与存储的部分则在链下的中心化服务器上，比如知名的 StepN，Axie Infinity，尽管它们已经取得了非常好的成绩，但这些游戏的玩法和内容是有限的，且受到项目方中心化运营的影响，项目方可以更改游戏规则。GameFi 也不支持 UCG ——玩家和开发者不能免许可地创造游戏内的内容与资产，并且其他链上应用也难以与之互操作。

![](https://storage.googleapis.com/papyrus_images/2d503d2f19fe6e91543630e17b2b049e19b12e11b36664fedc85ab41fee0d5fb.png)

全链游戏则不仅仅是将游戏资产上链，整个游戏也以合约的方式存在于网络之中，游戏的状态存储、逻辑执行也完全在链上，符合区块链的去中心、免许可、可组合的基本属性。这意味着没有实体可以单方面更改游戏规则，游戏的主动权在玩家手中，游戏“官方”的概念将会逐渐消失。

![https://www.gamedeveloper.com/business/let-s-build-a-decentralized-game-economy-using-blockchains-part-1-](https://storage.googleapis.com/papyrus_images/15c634e20c3eda49475dbae3d88e8e217b0c4772e672ded83ef69459c3a3ed55.png)

https://www.gamedeveloper.com/business/let-s-build-a-decentralized-game-economy-using-blockchains-part-1-

更有价值的是，玩家与开发者可以基于开源代码自定义前端，在基本规则约束下对游戏内的设施和资产进行再创造，解锁 UCG——用户创作内容的可能性。而且任何符合全链游戏合约规则的 DApp 都可以免许可地与之互操作，这将把全链游戏的可组合性扩展到更大的生态范围之中，不仅各个链游可以相互操作，链游与 DeFi 、NFT 以及在未来可能涌现的任何 DApp 都能够与全链游戏相互操作，这将打破 Web2 以垄断为商业模式的业务格局，给开发者和用户更完美的应用体验以及更有想象力的创造机会。

推荐项目 [**Topology**](https://www.topology.gg/)**、**[**Cartridge.gg**](http://Cartridge.gg)**、**[**Briq**](https://briq.construction/)**、**[**Lootrealms**](https://realmseternum.com/)

关于合约钱包，它具有强大的可编程、可组合的特性，从而能够适应 DeFi 之外的新场景如全链游戏、社交等。推荐 StarkNet 合约钱包 Braavos 和 Argent，前者可以将手机变成硬钱包，后者支持社交恢复，并且还将不断更新功能。

![https://coincodecap.com/best-smart-contract-wallet](https://storage.googleapis.com/papyrus_images/0ab9b55be5282ea6157d4d8fc80ed76b710d861d2949137981914666737a1e77.png)

https://coincodecap.com/best-smart-contract-wallet

关于链上 AI，StarkNet 允许 AI 模型在链下执行计算，将生成证明交由他人验证即可保证计算完整性，并且 STARK 证明系统存在网络效应，因此可降低需要大规模证明生成的 AI 模型的成本。

![https://elearningindustry.com/how-machine-learning-helps-transform-supply-chain-management](https://storage.googleapis.com/papyrus_images/5608e50851df8a845f527cc838adeabbd0b5fdc01f5f8734847bd380b40744aa.png)

https://elearningindustry.com/how-machine-learning-helps-transform-supply-chain-management

链上 AI 应用范围包括：游戏、预言机、交易（自动收益）、反女巫、KYC、数据隐私以及 AI 模型算力挖矿等。

问答
--

**Q：StarkNet 交易排序的逻辑是什么？是否也会有以太坊上的 MEV？官方排序器有 MEV 需求吗？能做吗？**

A：1）StarkNet 排序器排序，仍然是 gas 优先，去中心排序器后会做并行执行，目前去中心排序器的更多细节还没有确定，排序设计也还没有确定；L2 交易有顺序，在 L1 上作为批处理就不体现 L2 交易顺序；2）会有 MEV，但是还没确定排序器去中心的共识，可能会借鉴 Flashbots，PBS 之类的机制；3）目前 StarkNet 中心化运营排序器，官方没有做 MEV，Rollup 理论上都可以做。

**Q：L2 gas fee，速度在哪里可以看？哪里能看到它们最终的性能指标？**

A：Gas 在 [https://l2beat.com/scaling/tvl](https://l2fees.info/) 看，TPS 在这里看 [https://ethtps.info/](https://ethtps.info/)。目前 ZKR 的工程进度较慢，可能在年中才能迎来规模采用，现在比较性能意义不大，且 L3 的实现可能会给 TPS 计算造成阻碍。

**Q：为什么很多以太坊都部署在 Arbitrum？**

A：因为是 OPR，开发得更快；在前年就部署了，发展期更长。

**Q：ZKR 什么时候会迎来应用爆发？**

A：应用爆发分为两类，应用迁移和应用创新，迁移进度取决于不同 ZKR 的工程周期，可能会在 Q3-Q4；应用创新方面，哪些高 TPS、低单位收益的应用更能在 ZKR 上实现，可能会在年末爆发，取决于。

**Q：OPR 和 ZKR 的差别是什么？**

A：OPR 使用欺诈性证明，ZKR 使用有效性证明，后者更快更便宜，Vitalik 有过文章阐述

[https://vitalik.eth.limo/general/2021/01/05/rollup.html](https://vitalik.eth.limo/general/2021/01/05/rollup.html)

**Q：StarkNet 有什么马上能用的合约钱包？**

A：Braavos、Argent。

**Q：账户抽象的未来是什么？**

A：基于账户抽象的合约钱包可编程，比如它允许用户自定义设置在某个时间内，低于一定价格的 Gas 都将被自动支付；而且相比 EOA 钱包更能适用 DeFi 之外的新场景如全链游戏、社交。它就是把钱包当成合约来设计，让钱包能实现合约能实现的功能。

**Q：StarkNet 上有哪些值得交互的项目？**

A：可以关注 Topology 团队开发的全链游戏 MuMu，它们近期还会推出一个新的链上 AI 格斗游戏；NFT 项目推荐 Briq，之前项目方给购买 NFT 的用户空投了圣诞树 NFT；推荐 Loot 系的游戏 Lootrealms，这个游戏发币了。

**Q：StarkNet 是不是更适合做链上 AI 和全链游戏？**

A：是的，因为 StarkNet 使用 STARK 证明系统，它的平均验证时间和证明尺寸会随着证明规模扩大而降低，因此具备网络效应，这是 SNARK 所不具备的特性，这对链上 AI 和游戏而言有助于降低成本和提高性能；另一方面 StarkNet 生态有很多全链游戏融资、开发的基础设施，如 MatchBoxDAO、Volt Capital、[Cartridge.gg](http://Cartridge.gg) 等，官方也在大力支持全链游戏的发展，因此 StarkNet 在技术和资源支持方面适合做链上 AI 和全链游戏。

**Q：StarkNet 可不可以和其他公链对接？**

A：官方宣称不会，只会以太坊作为结算层；技术上可以。

**Q：账户抽象的缺点是什么？**

A：现在比较早期，相关的工具、代码不够成熟，但随着时间的推进账户抽象会越来越成熟，账户抽象的优点是让交易更加可编程。

**Q：ZKR 的电路是什么？为什么要有电路？**

A：可以理解为 ZK 的代码；ZKR 需要为代码的计算生成证明，高级语言的代码需要编译为字节码再变成 ZK 电路才能够被用来生成 ZK 证明。

---

*Originally published on [Starknet Astro](https://paragraph.com/@starknet-astro/starknet)*
