作者:msfew,Foresight Ventures
StarkWare 简介
StarkWare 主要解决了区块链的可扩展性和隐私。 StarkWare 开发了一个完整的解决方案,使用 STARK 技术,通过 zk-Rollups 和 Validium 模式组成 Volition 来生成和验证计算完整性的证明。 StarkWare 的密码证明可以做到零知识、简洁、透明和后量子安全。 StarkWare 所研发的产品主要有: StarkNet、StarkEx、Cairo。
2018: STARK 白皮书发布,以太坊基金会 Grant
2019: 第一个 Demo 发布 (扩大以太坊效率 200 倍),StarkEx Alpha 发布测试网,第二个 Demo 发布 (扩大以太坊效率 700 倍)
2020: DeversiFi (StarkEx 1.0) 发布主网,VeeDo (基于 Stark 的 VDF) 发布主网,StarkEx Rollup 发布主网,ethSTARK 发布,Cairo (图灵完备的针对 STARK 语言) 以及其 PlayGround 发布,Ziggy STARK (后量子安全的安全签名) 发布,StarkEx 2.0 发布主网
2021: StarkNet 公布,dYdX 与 Immutable X (均为 StarkWare 的客户) 项目发布主网
iMMUTABLE 是第一个 Layer 2 的 NFT 交易平台。 Tik Tok 在 9 月份与 Immutable 开展了合作,发布了一系列 NFT。
由于以太坊的本地吞吐量上限为 4 交易 / 秒,限制了任何希望扩展的 DApp。对于 NFT 来说,吞吐量瓶颈甚至比普通 Token 更大: 使用 NFT, 一千个 Token 实际上消耗区块链资源的千倍于单个 Token。Immutable 希望用以太坊原生解决方案来享受以太坊的安全,开发工具和网络效果,所以采取了 StarkWare 提供的解决方案。
StarkWare 提供的解决方案的独特功能之一是它能够以多种数据可用性模式进行部署: zk-Rollups 或 Validium. 两者都是基于有效性证明的,但是在 zk-Rollups 中,所有数据都在链上提交,而在 Validium 中,数据被保存在链外,并且只有对最新状态的提交,以及该状态有效性证明的链上提交。Immutable 以 Validium 模式开始,提供更低的 gas fee。由于政策法规规定,数据可用性委员会 (DAC) 确保用户始终可以访问他们的数据。 所以 Immutable 切换到了 Volition 的新数据可用性模式,该模式将允许用户以单一事务粒度选择数据的存储位置——链上 (zk-Rollups) 或链下 (Validium). 同时这样的做法也最大化了性能的拓展。
在 Tik Tok 与 Immutable 的合作博客文章中,Tik Tok 特别提到了 StarkWare 是第一个碳中和的 L2 拓展解决方案。 在传统互联网公司的视角里,环保是很重要的,不环保是很容易受到抨击的,因此 L2 高性能和节约资源的特性也能吸引传统互联网公司的目光,给他们铺平道路,光明正大入局加密货币领域。
StarkWare 提供给 Immutable 的解决方案最终让 Tik Tok 这个目前最热门的公司找上了 Immutable 进行合作。 StarkWare 所提供的两种部署模式给了客户数据保存方式的灵活性,不仅符合法规,同时也让性能得以拓展。更重要的是,性能的拓展也让以太坊饱受争议的能耗问题得到了解决,这会是 Layer 2 的胜利,更是 StarkWare 的胜利。在未来,我们一定会看到更多的传统企业选择以太坊以及 StarkWare 的方式进入区块链领域。
StarkWare 应用为何有如此高的性能?
StarkWare 的 Prover 有各种数学优化和 StarkWare 首先提出的一些优化算法,同时开发所用的 Cairo 语言有专门数学相关的优化。除此之外,交互数据送到 Prover 之前会用 StarkEx 引擎先协调一遍待证明的数据以及批处理。 整个运行流程都做到了全覆盖的优化。 具体细节会在后文中详细探讨。
StarkWare 的 StarkNet 上的共识为 zk-STARK. zk-Rollups 不一定是去中心化,无准入限制的。 但是 StarkWare 所使用的 zk-STARK 是无准入限制的,与以太坊等公链一样。 在 StarkWare 所做的应用中间过程是会存在一些中心化的服务器来提供一些服务。 但这在一个完整应用的开发中是必要且无法去除的。 就像 uniswap 必须得有个中心化的域名和前端一样。 所以 StarkWare 所做的 dYdX, StarkNet 等依然是去中心化的。
目前来看,StarkWare 无论是从性能还是目前的运行状况,都领先于 zkSync。zkSync 和 StarkWare 最大的区别还是运作理念。 zkSync 的项目都是开源的,而且团队说自己被替代掉也无所谓,只要能推动社区和以太坊的发展。 StarkWare 公司是 toB 中心化的运作方式,STARK 证明器目前只能 StarkWare 公司使用,而且做 Cairo 这个语言其实也是不那么对以太坊生态有利的做法 (对开发者友好的做法应该是和 zkSync 或 Optimistic 一样去做 EVM 兼容)。
STARK 通过允许开发人员将计算和存储移出链来提高可伸缩性。 链外服务将能够生成 STARK 证明,证明链外计算的完整性。 然后,这些证据被放回链上,供任何利益相关方验证计算。使用 STARK 将大部分计算工作移出链,允许现有区块链基础设施以指数级扩展,同时保持计算完整性。
以太坊数据上链大致流程:1000 笔交易发送给以太坊每个节点 → 每个节点读取 1000 笔交易 → 节点更新 1000 笔交易
zk-STARK 数据上链流程: 1000 笔交易发送给 zk-STARK → zk-STARK 作为证明者,生成 1 个证明 (*生成阶段) → 节点作为验证者读取证明,更新
侧链 (Polygon 或 xDai)
状态通道
Plasma
zk-Rollups
对比完各个 L2 解决方案后,我们可以发现 zk-Rollups 或许是最接近区块链升级扩容的完美解决方案。 同时 zk-Rollup 的为数不多的几个缺点会在 StarkWare 采用的 zk-STARK 中得到修正。
STARK 与其他 ZK 性能比较
ZK 证明中主要有 SNARK, STARK, Bulletproof 三种。 Bulletproofs 和 STARK 不需要可信设置,STARK 使用公开可验证的随机性来创建不受信任的可验证计算系统。 其中 STARK 相较于其他两种,证明大小大非常多,但在计算时的大小和证明速度上有很大优势。 同时 STARK 的安全性更高,可以抗量子攻击。
上图是 StarkWare 的 Co-Founder 在宣讲时放出的图。 他们测试时使用的 STARK 证明用图里服务器配置运行,对比其他几种包括 SNARK 算法的性能都高出很多。
StarkNet Alpha 会 在 11 月上线以太坊主网。(区块链浏览器)
StarkNet 是一个去中心化,无需许可即可加入且抗审查的 L2 zk-Rollups, 支持以太坊上的通用计算。 它基于图灵完备的 Cairo 语言。 开发人员可以构建应用程序来实现 App 业务逻辑并部署在 StarkNet 上 ; 用户可以将交易以与以太坊正常交易相同的方式发送到 StarkNet 来执行。 StarkNet 节点和参与者将受到经济激励,以确保网络高效公平运行。
所有 StarkNet 交易将定期进行批处理,交易在 STARK 证明中得到证明,最终在以太坊上进行验证。 由于验证 STARK 证明所需的计算工作量与以太坊证明的计算量相比,呈指数级小,因此 StarkNet 可以将以太坊扩展几个数量级。 由于所有 StarkNet 状态转换都将经过 STARK 验证,因此以太坊只接受最终有效的状态转换。
主要特点: 性能可拓展性,开发便利,针对以太坊生态的可组合性。
StarkEx 类似一个底层引擎,构成组件来支持使用 STARK 的应用。
StarkEx 是可用于生产环境的 L2 可扩展性引擎,自 2020 年 6 月起部署在以太坊主网上。 StarkEx 利用 STARK 技术为 DeFi 和游戏等应用程序提供可扩展的自托管交易。 StarkEx 支持广泛的用例: 现货交易,永续交易以及 NFT 铸造和交易。 在主网部署之前,超过 5000 万笔 StarkEx 交易在公共和私人以太坊测试网上结算。
StarkEx 目前支持 ETH 代币,ERC-20, ERC-721 代币和合成资产。 此外,它可以支持其他兼容 EVM 的区块链上的代币。
上图是一个使用了 StarkNet 和 StarkEx 的典型应用的架构图。 假设这个应用是一个叫 Starkswap 的 DEX。
Starkswap 的业务逻辑如下:
1. 处理请求:
淡蓝色方框内的 StarkWare 应用程序处理客户请求,将这些交易转换为可证明的陈述,并将这些发送给深蓝色方框内的 SHARP. 所有请求发送与处理都通过图中第一步的 API 以及第二步中的批处理语句发送 (一个批次可以编译多个请求)。
2. SHARP 证明:
深蓝色的 SHARP 构造证明。
3. 登记证明:
SHARP 将证明传输到粉色框中的第三步的链上验证者智能合约。
4. 注册状态转换:
第四步中,StarkWare 应用程序在 Starkswap 智能合约上进行应用状态转换。
第五步中,为确保转换的有效性 (SHARP 的验证), Starkswap 的智能合约确认转换语句已在 Verifier 智能合约中注册。
https://docs.starkware.co/starkex-v3/crypto/stark-curve
功能细节:
Cairo 是第一个生成 STARK 证明的生产级平台。 它是图灵完备的,而且非常高效。 要在 StarkNet 上部署高性能并且低 gas 费的 Layer 2 应用组件就需要使用 Cairo 来编写应用程序。 Cairo 语言不是一门专门的合约语言,但是可以并且主要用来写类似合约的内容。
zk-Rollups 当前的缺点是通用计算: 将智能合约逻辑直接移植到 rollups 中更具挑战性,因此只有有限的功能可用,例如转移和交易。 然而,Cairo 填补了这个空缺,可以将智能合约逻辑直接移植到 rollups 中。 zkSync 和 Optimistic 的做法分别是让 rollups 做到 EVM 兼容和 EVM equivalency (更加全面并且进一步的 EVM 兼容).
1、计算完整性
计算完整性是代表了在没有监管的情况下,能保证计算的公正性。 保证 Computational Integrity 的方法有五种: 银行委托问责制 (基于信誉,审计等), 计算可重放性 (例如比特币和其他 L1 公开所有交易), 可信执行环境 (例如英特尔的 SGX), 欺诈证明 (Optimistic rollups, 介于委托问责和计算可重放性之间), 密码学证明 (zk-STARK). Cairo 语言经过多篇论文以及数学证明的验证,可以安全可信地生成 zk-STARK 的证明来保证计算完整性。
2、AIR (代数中间代码表示)
在 STARK 证明的过程中,需要用到很多设计代数证明的运算以及符号,Cairo 会通过编译器把编程语言转化为 Cairo 字节代码,生成一个 AIR 来包含所有的数学证明步骤,最终生成结果。 Cario 语言有配套的 AIR 可视化工具,来查看证明中的细节。
3、语言设计
Cario 语言的设计遵循 Minimal Variable Language 的原则,讲究恰到好处。 同时做到了语言的表达性 (便于开发者阅读) 以及 STARK 证明的生成效率。 Cario 语言的设计也并非过于复杂,仅有三个寄存器 (PC, 分配指针,帧指针), 和简洁的指令集。 Cario 语言也支持一些必要的功能,包括函数,递归,分支,判断等。 Cario 语言设计的感觉更加符合数学证明的逻辑,更加工整。
4、工具链
编译器、虚拟机、代码编辑环境插件 (VSCode 上的代码提示 插件)、跟踪程序、代码示例。
目前 Cairo 语言的生态可以说非常全面但年轻。 在工具链方面一应俱全,根据这些工具的 GitHub 星数可以判断出并没有收获很大的关注,但是仓库的开发者在持续更新,基本在一到两周内都有新的提交。 未来 Cairo 语言会更加开放,培养更多开发者后,在 StarkEx 引擎上写 Cairo 代码的工作很可能从 StarkWare 移交到开源开发者手里,这样对 StarkWare 应用的去中心化会有很大的意义。
更重要的是 OpenZeppelin 正在做 Cairo 语言的 ERC-20、ERC-721 等基础模版的 实现。这个实现的意义就是能方便开发者在此实现的基础上开发,能让开发者放心且大胆地拷贝此实现,迅捷开发并且不用过于担心安全性。从仓库的 commit 来看,OpenZeppelin 目前有专人来为 Cairo 语言做支持,证明 OpenZeppelin 对 StarkWare 生态的重视。
作为一家 Layer 2 解决方案提供商,StarkWare 做出了 dYdX 和 Immutable 这样的爆款产品。 在各种解决方案中,StarkWare 的 zk-STARK 技术支持了 Layer 2 上最大的交易数量。 从 Prover 的数学优化,Cairo 语言的数学优化,到 StarkEx 引擎的证明协调,StarkNet 作为一个去中心化 zk-STARK 网络,提供了极高的性能,做到完全运行流程的优化。 StarkWare 通过前沿的技术和完整的技术服务,支撑了 Layer 2 应用庞大的交易量,未来也必将拥抱开源,做到更去中心化,帮助了以太坊 2.0 的建设。