# 走进Starknet（二）-技术架构

By [Tim Bro](https://paragraph.com/@punkdog) · 2023-11-12

---

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

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

StarkEx

StarkEx 是 StarkWare 创立的，为项目方定制 ZKR 的企业服务，它可以帮助项目定制应用专有的 ZKR，目前使用 StarkEx 的客户包括 dYdX 、 [Sora](https://www.bitget.com/zh-CN/price/sora)re、ImmutableX、DeversiFi 等。

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

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

StarkEx工作流如下：

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

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

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

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

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

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

StarkNet

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

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

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

相比之下，StarkNet 仅在链下执行计算并生成一个 ZK 证明，然后在链上验证该证明的正确性，最后把多个 L2 交易打包为以太坊上的一笔交易。因此，StarkNet 上发生的交易成本可以被同一打包批次的其他交易所均摊，就像拼车（

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

技术分析

ZK-Rollup VS OP-Rollup

目前市场上使用最广泛的 Layer2 — — Arbitrium 的底层技术是 OP- Rollup，（Optimistic Rollup）。它是通过欺诈证明（Fraud proofs）实现扩容。在 Op-Rollup 中，交易数据被系统乐观地相信是正确的，而不进行实时验证，直接进入一个等待期。在等待期内，如果有节点提出异议并提供了证据证明存在恶意交易，那么该交易将被取消；如果没有异议，等待期结束后，交易将自动完成并在主链上验证交易。

而 Starknet 则是基于 ZK-Rollup 技术的 Layer2。ZK-Rollup 主要依赖于零知识证明技术，通过将计算和验证过程分离，将合约执行的验证放在链下完成，然后将验证结果提交到以太坊主网上。计算过程在链下进行，而验证结果仅作为一个证明提交到以太坊，因此，这种方法提供了最高级别的安全性和用户隐私保护。

OP-rollup 和 ZK-rollup 相比，ZK-rollup 则是一种比 OP-rollup 更加安全的替代方案，而 OP-rollup 则是具有 EVM 兼容性的 DeFi 项目的更好选择。由此可见，具备 EVM 兼容性的 ZK-rollup 以其天然的安全性的优势将会是 Layer2 的未来的叙事发展方向。安全性的实现这一优势要归功于 StarkNet 对最安全、最可扩展的密码学证明系统 — — STARK 的依赖。

Zk-STARKs VS Zk-SNARKs

STARK（Zero-Knowledge Scalable Transparent Arguments of Knowledge）和 Zk-SNARK（Zero-Knowledge Succinct Non-Interactive Argument of Knowledge）都属于零知识证明的技术，用于创建可以验证但不泄露全部信息的证明。但它们在实现方式和特性上存在一些关键的区别。

选择使用 SNARKs 还是 STARKs 取决于具体的应用场景和需求。SNARKs 在证明大小和验证速度上有优势，但需要信任设置。而 STARKs 不需要信任设置，对量子计算机攻击有抵抗力，但证明较大，验证速度较慢。

这里引入了一个概念 — — 信任设置（Trusted Setup），他是一种在某些类型的零知识证明系统（如 zk-SNARKs）中使用的过程，它在系统开始运行之前创建了一些初始参数。这些参数在证明的生成和验证过程中都会被使用。

信任设置的关键是确保生成者在创建初始参数后彻底销毁他们所使用的秘密信息。如果生成者保留了这些秘密信息，他们就有能力创建看似有效的虚假证明，这将危及系统的安全性。因此，信任设置过程需要接受严格的审查和监控，以确保所有生成者都按规定销毁了秘密信息。这就是为什么称其为「信任设置」，因为用户必须相信这个过程是公正的，生成者没有作弊行为。

而 zk-STARKs 却是一种不需要信任设置的零知识证明系统。这意味着，与需要信任设置的系统（如 zk-SNARKs）不同，zk-STARKs 的证明生成和验证过程不依赖于任何秘密信息。这提供了更高的透明性和安全性，因为系统的安全性不依赖于任何特定个体或组织的行为。zk-STARKs 是通过使用一种被称为「FRI」（Fast Reed-Solomon Interactive Oracle Proofs）的技术实现的。

FRI 协议

FRI 协议的基本思想是通过一系列的抽样和插值步骤，逐步降低多项式的度。在每一步，证明者都会提供一个新的多项式，并声称它是原始多项式的一个压缩版本。验证者可以通过检查这些多项式在随机点上的值，来验证这个声称是否正确。

这个过程会一直持续到多项式的度足够低，以至于验证者可以直接检查它的所有系数。由于在每一步中多项式的度都会减半，所以这个过程可以在对数时间内完成，这使得 FRI 协议非常高效。

FRI 协议的一个关键特性是，它只依赖于公开的、预先定义的参数，而不需要任何秘密信息。这使得它可以用于构建不需要信任设置的零知识证明系统，如 zk-STARKs。然而，FRI（Fast Reed-Solomon Interactive Oracle Proofs）协议并不相当于信任设置。相反，FRI 协议是一种用于生成和验证 zk-STARKs 证明的技术。它允许证明者向验证者证明一个多项式的系数是低度的，而不需要透露多项式的具体内容。FRI 协议的关键特性是，它只依赖于公开的、预先定义的参数，而不需要任何秘密信息。这使得它可以用于构建不需要信任设置的零知识证明系统，如 zk-STARKs。FRI 协议是 zk-STARKs 的一个关键组成部分，它使得 zk-STARKs 能够在不需要信任设置的情况下工作。但 FRI 协议本身并不是一个信任设置过程，因为它不涉及生成或销毁任何秘密信息。

Starknet 工作原理

StarkWare 公司旗下的产品有专门为项目方定制的 ZKR 企业服务的 StarkEx 以及更加通用的 StarkNet。StarkNet 由五个部分组成，分别是：Starknet 上的 prover（证明者），Sequencer（排序器）和 Full node（全节点）；以及部署在以太坊上的 verifier（验证者）和 Starknet core（核心状态合约）。

其工作原理是在 StarkNet 上发起一个交易，由链下服务器排序器进行接受，排序，验证，并打包到区块，执行交易，然后状态转发给 starknet core 状态合约。随即，证明者将交易生成证明，并发送给以太坊的验证者验证。验证者将验证结果发送到以太坊的 starknet core 核心状态合约，并从 Starknet core 合约触发一组新的以太坊交易，以更新链上的全局状态以进行记录保存。而全节点（Full node）则发挥了储存功能，包括状态改变、元数据、证明以及记录在 Starknet 中被执行的所有事务，并跟踪系统的当前全局状态。

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

---

*Originally published on [Tim Bro](https://paragraph.com/@punkdog/starknet-2)*
