StarkNet 技术架构和特色生态

关注 StarkNet Astro ✨
中文频道；英文频道

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

StarkWare

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

StarkEx

简介

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

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

工作原理

StarkEx 工作流如下：

打包交易：链下服务器（往往由项目方中心化运行）处理客户请求，将多个交易组合成一个 “批次”，供 StarkEx 处理。

确认交易和更新状态：链下服务器确认交易合法，并以被压缩后的哈希形式更新系统状态。

为交易生成证明：SHARP 会为交易生成 STARK 证明以确认交易有效性，然后将证明和更新发送到链上 Verifier 智能合约，以确保交易的完整性。

链上验证证明：一旦 STARK 证明被验证，状态更新被提交并结算回以太坊主网。所有交易都是在链外处理和验证的，而其完整性的证明是在链上验证的。

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

StarkNet

简介

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

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

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

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

EVM 兼容

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

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

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

1、Warp：将 Solidity 转译为 Cairo 语言的转译器

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

2、Kakarot：一个用 Cairo 语言编写的 zkEVM

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

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

✅ Kakarot 是一个 EVM 字节码解释器。

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

工作原理

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

工作流程如下：

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

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

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

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

参考 StarkNet 开发倡导者 @barretodavid 写的《StarkNet's Architecture Review》。

账户抽象

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

STARK 证明系统

目前有许多不同的证明系统（生成和验证证明） ，如 Halo、PLONK、Groth16、Groth09 、Marlin、Plonky2 等，它们都属于 SNARK 证明系统。证明系统存在一个证明者生成证明，一个验证者验证证明。而不同的 ZK 项目几乎都会使用不同的证明系统，StarkNet 使用的 STARK 某种意义上属于一种特别的 SNARK 。

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

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

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

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

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

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

Cairo VM 和 Cairo 语言

Cairo VM 概述

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

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

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

Cairo VM 特性

灵活的 CPU 架构

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

只读非确定性内存模型

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

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

Cairo 语言概述

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

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

Cairo 语言特性

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

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

可扩展性，验证时间和程序大小呈现对数关系，正如 STARK 部分提到的。

隐私性，验证者可以验证程序是否正确执行而无需知道计算。

内置函数：减少代码编译

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

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

特色生态

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

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

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

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

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

推荐项目 Topology、Cartridge.gg、Briq、Lootrealms

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

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

链上 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 看，TPS 在这里看 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

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 等，官方也在大力支持全链游戏的发展，因此 StarkNet 在技术和资源支持方面适合做链上 AI 和全链游戏。

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

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

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

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

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

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