# 深入解析Starknet的Cairo VM、CASM、Cairo Zero、Cairo和Sierra




> 解读 Cairo VM、CASM、Cairo Zero、Cairo 和 Sierra。

### 

**撰文：StarkWare**

**编译：Starknet 中文社区**

### 

## 引言

为了实现以太坊安全且去中心化的扩容，有效性证明 Rollup 使批量交易验证效率大大高于其直接重新执行。特定的节点（被称为排序器）在 L2 将交易打包到新的 L2 区块中，而以太坊主网的节点只需要极少的工作量即可确认这些交易。

Starknet 是一个利用 Cairo VM 的有效性证明 Rollup，专用于优化有效性证明的效率。Starknet 使用 STARKs（可扩展、透明的知识论证）作为其证明系统，能够为复杂的计算生成简洁的证明，从而大大降低链上验证过程的复杂性。

本文将深入探讨使 Starknet 成为 TPS 性能最强的 L2 的不同组件 — Cairo VM、CASM、Cairo Zero、Cairo 和 Sierra。

## Cairo VM

为通用计算程序创建有效性证明，需要深入了解 STARKs 背后的复杂数学原理。对于每项计算，构建一个代数中间层表示（AIR）至关重要，它包含了一组多项式约束，能够准确地描述给定的计算。Cairo 最初被称为 「CPU AIR」，是一个虚拟 CPU 和一个单一的 AIR，能够用相同的「通用」 AIR 描述任何计算。Cairo VM 专门为有效性证明系统量身定制，并不受 EVM （以太坊虚拟机）所施加的限制所约束。

![](https://www.528btc.com/d/file/2023-09-13/scale70)

# 

## CASM

CASM（Cairo 汇编）是 Cairo VM 运行的机器代码。CASM 被转译为多项式约束，强制程序正确执行。CASM 是生态系统的关键组件，因为无论用户向 Starknet 排序器发送什么，被证明的都是 CASM 的正确执行。

## Cairo Zero，一项突破

2020 年发布的 Cairo Zero 引入了世界上首个用于创建 STARK 可证明程序的图灵完备语言，彻底改变了可验证的计算方式。Cairo Zero 程序在本地编译为 CASM，然后发送到 Starknet 排序器。尽管 Cairo Zero 具有开创性，但由于 Cairo Zero 的低层级性质，它的学习曲线较为陡峭，并没有完全抽象出证明程序执行所需的底层加密原语。

## Cairo：比 Cairo Zero 更强大

Cairo（现为 v2.1.1 版本）突破了 Cairo Zero 的局限性，有望实现更安全、更高效的合约编写。Cairo 采用类 Rust 的语法，并抽象出了 Cairo Zero 中存在的限制（例如，只写一次的内存），大大改善了开发者的体验。

Cairo 引入了 Rust 世界的现代编程概念，如特征 / 实现、泛型、枚举匹配等，同时无需牺牲底层 CairoVM 带来的证明生成效率。

## Sierra

随着 Cairo 的出现，Sierra 也随之而来。Sierra 充当了 Cairo 和 CASM 之间的中间层表示的角色。这个附加层确保用户代码在所有情况下都是可证明的。Sierra 编译为 「安全 CASM」，这是 CASM 的一个子集，可保证所有输入都是可证明的。这个在用户代码和可证明代码之间的中间层至关重要，它可以保护 Starknet 排序器免受因不可证明交易形式出现的 DOS 攻击。

Sierra 的一个令人意外的好处是，由于这种简单的中间层表示的存在，Starknet 的排序器最终可以直接在本地硬件上运行，而无需通过 CairoVM。为了说明执行 Sierra 的排序器的强大功能，请看以下示例：人们可以使用 Sierra 的类型信息来处理本地类型（例如 u32），而无需在 CairoVM 的质数域字段中进行处理。

## 结论

Cairo 建立在 CairoVM 的基础上，革新了可验证的计算方式。凭借类 Rust 语法和现代编程语言的特性，Cairo 极大地优化了开发者的体验，简化了合约编写，降低了出现错误的几率。Cairo 将成为推动去中心化创新的强大工具。
