23

引介 | Hello,Cairo!

 3 years ago
source link: https://ethfans.org/posts/hello-cairo
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

zEFNvqj.png!mobile

摘要

Cairo 是第一个用于生成通用计算的 STARK 证明的生产级平台,具有图灵完备,高效等特点。我们开发的所有内容都是用 Cairo 编写的,从提交 Reddit 的竞标开始,到我们即将部署的各个项目: DeversiFiImmutabledYdX

无论你的计算和储蓄需求有多少,如果你需要在以太坊上以较低的 Gas 成本大规模应用,Cairo 都很有用。在接下来的几个季度中,我们会开始提供 Cairo 的开发者工具,在此之前,请你直接联系我们,我们可以一同开发你的应用。

项目背景

扩展 Reddit 竞标 对于我们 StarkWare 来说是一个里程碑,不光是因为我们取得的成绩(用单个 STARK 证明囊括 30 万个交易),更因为我们取得该成绩的方法。这次 Reddit 竞标是我们第一次在以太坊主网部署 Cairo,一个用于生成通用计算的 STARK 证明的图灵完备 1 生产级平台。我们其他即将在主网部署的项目都会基于 Cairo,包括:

本文将涵盖以下内容:1. 我们为什么需要 Cairo;2. 项目的新颖之处,其性能及扩展效率;3. 讨论我们向社区开发者分享 Cnaairo 工具链的开发计划。

需求:图灵完备的生产级 STARKs

自从我们成立以来,就一直专注于解决可扩展性问题,从以太坊扩展性开始。我们很早就意识到 有效性证明是一个强大的扩展性解决方案 ,而且 STARKs 在为通用计算解决扩展性问题上有其独到之处。快速回顾一下概念:一个链下证明器(Prover),可以处理大量运算(比如大量交易),并产生量级上更小的有效性证明,这些证明反过来又可以在链上验证。

我们每个合作伙伴都有一类独特的运算需要下放到 Layer 2 上。DeversiFi 的现货交易,Immutable 的 NTF 生成与交易,而 dYdX 则要执行永续合约。为每个项目定制手写打造一个 STARK 系统 2 将耗时巨大,就像为每个计算构建一个专用 ASIC 一样。因此,我们要想拓展业务并支持高性能和速度,就需要在第二层有一个图灵完备的生产级 STARK 系统,因此我们开发出了 Cairo。Cairo 是 C PU A lgebraic I ntermediate R epresentation (中央处理器代数中介码(AIR))的首字母缩写,并包含单个 AIR 来验证这个 “CPU” 的指令集。

解决方案:Cairo,单一 AIR 的通用方案

Cairo 连接了一系列用于构建通用计算可扩展性与零知识证明的工具链。

所有先前部署在测试网或者主网上的系统都只能被归为 “电路编写库” 3 。这些库可以看作是为创建用于特定计算的 ASIC 的工具链。而 Cairo 与之完全不同,应该看作是从 ASIC 向 CPU 的过度。

Cairo 是第一个实现图灵完备的 冯诺伊曼结构 的生产级证明系统,每个 Cairo 程序 P 以及它处理的数据 D 都存留在虚拟机的内存中。Cairo 的 单一 AIR 可以验证 任意 Cairo 程序,因此验证器(Verifier)也是 单一 的,形式可以是智能合约或者 WebAssembly 程序等。也就是说,Cairo 的 AIR 可以验证用数据 D 跑程序 P 的计算完整性,以及执行后系统状态的正确性。

有了 Cairo,新的业务逻辑不再需要新的智能合约,而只需要另外一个 Cairo 程序。由此,业务逻辑和证明系统的界限划分明确了。

用单一的 AIR 来解决所有问题还具有一个深远的意义:我们可以使用单一证明来断言不同程序执行的完整性。比如,基于 VeeDo 的密封竞标拍卖、Gods Unchained 卡牌的生成、一批 dYdX 上的交易,这些都可以用同一个证明来证实其有效性。我们把这项功能称为通用验证服务(GPS),我们很快会提供更多相关信息。

Cairo 语言

Cairo 程序要用到类似汇编语言的也叫 Cairo 的语言写来编写,而 Cairo 语言具有以下功能:内存、函数调用、递归和分支条件。Cairo 还用到了证明器(Prover)端的 “hints” 来创建快捷方式并启用特定计算。我们说 Cairo 是生产级的,我们说的不仅是即将到来的主网部署,更是我们为此构建出的强大开发环境,包括一个从 Cairo 语言到 Cairo 字节码的编译器、一个用于模拟 Cairo 执行的虚拟机、调试器、集成开发环境、还有上述提到的用 Solidity 编写的单一验证器(Verifier)智能合约。

3ieyIff.png!mobile

我们将很快发布白皮书,详细介绍 Cairo 的设计理念以及对于该新一代编程语言的完整规范。在下面几个月中,我们会开始发布用于编写、调试和运行 Cairo 程序的工具( 注册 以便收到更新通知)。

Cairo 的效率和安全性

我们可以从两个方面考虑效率和安全性:涉及数学的方面(AIR)和工程实现方面;而 Cairo 会在这两个方面都使代码更加高效且安全。

Cairo 的 AIR 相对简单,也就可以为链上验证(Verifier)和链下证明(Prover)服务提高效率并降低成本。这也提高了安全性,因为审核单个简单的 AIR 比审核多个复杂的专用 AIR 要安全得多。

因此,有了 Cairo,我们可以依赖于单一验证器智能合约,再也不用为每个应用都部署一个验证器。在安全性方面这意味着:对这一份智能合约的审计就能保护所有应用都免受证明系统风险影响,而应用仅仅需要审计自己的业务逻辑。而对于业务逻辑,理解并审核其代码相比专用 AIR 来说要简单得多了。

为了理解 Cairo 中实际应用中的具体效率,我们来看这两个例子:

DeversiFi:

目前在以太坊主网上支持 DeversiFi 2.0 的 StarkEx 系统是个 ASIC 的 STARK,我们在 Cairo 中也部署了相同的 StarkEx,在测试网上运行,并比较两个系统。通常来说,CPU 比 ASIC 要慢,但在实际案例中,由于 Cairo 强大的优化,两个系统几乎没有差别:

  • Cairo 证明器比当前的 ASIC 实现慢 30%
  • 验证器只消耗 1.03 倍的 gas

Reddit 竞标

我们与以太坊生态中的其他项目一起冲刺完成了 Reddit 可扩展性竞标 。多亏了 Cairo,我们才能:

  • 我们以前所未有的效率完成了比赛。 我们可以把所有 30 万个交易都打包成一个证明,还用到了聚合调用数据(仅仅用修改的账户信息代表整个批次,而不包括每个交易的调用数据)。这是 Cairo 可编程性及优化算法所得便捷性的直接成果。我们在 6 分 03 秒内完成了所有任务。

值得注意的是:更高级别的编程能轻易增加优化,这些优化带来的好处通常大于上文提到的 CPU 劣势。因此,在多数情况下,使用 Cairo 比使用量身定制的 AIR 实际上可能最终实现更好的性能。

  • 我们以超快的速度完成了比赛。 没什么人注意到我们的单个证明在 7 月 15 日就提交到主网上了,比六周的冲刺期提前了两周。这也是 Cairo 给我们带来的奇迹。

前路漫漫

我们计划将我们与其他人开发的 Cairo 和 GPS 提供给社区广大的开发者,为大家提供强大的开发工具,我们计划开发出从更高级语言到 Cairo 的编译器,还要给开发者长期提供我们的云上开发环境。这都需要大量的精力与资源,Cairo 不是一天建成的。我们将定期一步一步更新 Cairo,为大家提供更强的功能、性能及优化。

目前我们与合作伙伴 DeversiFi、Immutable 和 dYdX 一同在使用中不断调试 Cairo,每周都有进展。如果你想 现在 开始在以太坊上进行开发,但受限于扩展性和日益增长的 gas 价格,如果你想构建一个真正的生意,需要生产级高性能的工具链,请联系我们。

推特: StarkWare ,邮箱:[email protected]

脚注

[1]:我们使用该术语的 通俗 含义,即,涵盖所有现实世界的通用计算

[2]:更准确地说,应用之间的不同点就在于 AIR,AIR 之于 STARK 来说就好比运算电路与 R1CS 系统之于 SNARKs。

[3]:根据 zkp.science 的综合分类

(完)

原文链接: https://medium.com/starkware/hello-cairo-3cb43b13b209

作者:StarkWare

翻译&校对:Elisa & 阿剑


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK