Cairo 是一个图灵完备的 ZK 友好高级语言,也是以太坊 L2-Starknet 的合约开发语言。Cairo 1.0版本。引入一种改进的语言,其功能将增强可用性、安全性和便利性。它旨在支持 StarkNet 作为无许可网络的要求,使协议变得更简单、更安全。
Cairo的诞生
Cairo 的诞生源于这样一种认识:应向世界各地的开发人员提供可验证的计算。Cairo 使开发人员能够利用 STARK 的力量。
此后,开发者社区抓住cairo的机遇,热情地进行建设。如今蓬勃发展的 StarkNet 生态系统中的一切都基于Cairo。在STARKNET 和 STARKEX之间 ,Cairo 驱动的应用程序已经处理了超过 2.2 亿笔交易,铸造了超过 6500 万个 NFT,并处理了价值 700B 美元的交易,所有这些交易都在以太坊上结算。
Cairo 1.0
对于 Cairo 1.0构建了一个全新的编译器,它将为开发人员提供安全功能,并允许他们以更简单、更具表现力的方式编写合约。
Sierra 简介:确保每一次开罗跑步都能得到验证
Cairo 1.0中主要添加的是Sierra (安全中间 表示)。Sierra 构成了 Cairo 1.0 和 Cairo 字节码之间的新中间表示层。Sierra 的目标是确保每一次 Cairo 运行(即 Cairo 程序及其输入)都可以得到证明(请参阅下文)。
Sierra 承诺开罗开发人员提供更好的面向未来的代码。在底层系统改进的情况下(例如,CPU AIR 架构更改、从 Sierra 到 Cairo 字节码的最终翻译的改进),StarkNet 合约不需要重新编译,这一事实提供了进一步的稳定性。
在旧版本中,Cairo 运行可能会导致三种情况:正确、错误或失败。无法证明失败的运行。Sierra,确保开罗运行永远不会失败,并且只能得出 TRUE 或 FALSE。这反过来又确保了每次Cairo 运行都能得到验证。
Sierra 的引入对于 StarkNet 作为无需许可的网络具有重要意义。Sierra 确保即使是恢复的交易也可以包含在 StarkNet 区块中。这一特性将使 StarkNet 协议保持精简和简单,而无需添加复杂的加密经济机制。两个有意义的例子:
Sequencer 将能够对恢复的交易收取费用,从而使 StarkNet 能够以完善的方式防止 Sequencer DoS。
实施强制 L1 交易将成为可能,从而使 StarkNet 继承以太坊的完全抗审查能力。
语言特点
Cairo 1.0 将对编程语言本身进行许多改进。并非下面列出的所有内容都将成为第一个版本的一部分,但它是路线图的一部分。
改进的语法
删除本地和 临时变量。现在我们只需要 let 来规则所有变量。
改进的 if 语句语法
Oldif cond != 0 { tempvar x = x+1;} else { tempvar x = x;}__________________________________Newif cond { x = x + 1; }
类型安全保证
编译器将使用强类型来提高代码的安全性。例如:
指针将始终指向已初始化的内存。
字典总是会被压缩,而不是将调用squash_dict的责任留给程序员。
更容易使用语言结构
例如:
For 循环
let sum = 0for x in iter { sum = sum + x;}
布尔表达式
整数(具有常规整数除法)
相关类型的溢出保护
布尔条件
OldIf cond1: if cond2: # Some code else if cond3: # Same code__________________________________NewIf cond1 && (cond2 || cond3) { … }
一个成熟的类型系统
抽象数据类型(即类似 Rust 的枚举)
enum Option<T> { Some: T, None,}match result { Some(r) => {..}, None => {..},}
性状
trait Add<Uint256> { fn add(…) { … }}let a: Uint256 = 1;let b: Uint256 = 4;a + b; // Evaluated to 5 of type Uint256.
更直观的库
(例如字典、数组)
字典<Uint256,MyStruct>;
数组<MyOtherStruct>;
更优化的代码
无需显式声明局部变量的分配——自动检测并自动完成。
更好的编译器集成
实现更好的 IDE 支持、包管理和更好地促进社区贡献。
结论
Cairo 1.0 提供了改进的可表达性、安全性和语法。它将让开发者能够更轻松地编写他们的 StarkNet 合约。