# Cairo 1.0 **Published by:** [Starknet 中文](https://paragraph.com/@starknet-zh/) **Published on:** 2022-09-15 **URL:** https://paragraph.com/@starknet-zh/cairo-1-0 ## Content 原文:Cairo 1.0 翻译:「StarkNet 中文」社区概要自两年前 Cairo 推出后,Cairo 1.0 是第一个重大版本更新Cairo 1.0 将为开发者提供一种更安全、更简单、更实用的编程语言Cairo 1.0 的核心是 Sierra,这是个中间表示层,承诺为 Cairo 程序提供更大的长期稳定性Sierra 提升 Cairo,推进无需许可网络:保护网络:更稳固的 DoS 防护保护用户:继承以太坊的抗审查性Cairo 1.0 在许多方面都将影响 StarkNet,也会影响到网络重置。我们将在几周内发布更多关于重置的信息。简介我们在 2020 年发布了图灵完备编程语言 Cairo,向 STARK 可验证计算迈出了一大步。今天,我们宣布 Cairo 1.0,这是迄今为止 Cairo 最大的改进。Cairo 1.0 将引入一种改进语言,其功能可以提高可用性、安全性和便捷性。Cairo 1.0 旨在支持 StarkNet 作为一个无需许可网络的要求,让协议变得更简洁、更安全。 开发工作已在进行中,我们预计第一个版本很快就会出来。 在这篇文章中,我们将讲述迄今为止 Cairo 的发展历程,以及即将推出的功能细节。Cairo 的发展历程2020 年以前,建立 STARK 通用计算可验证程序需要专项知识。只有那些了解 STARK 背后复杂数学原理的人才有可能做到这点。具体来说,对于每一个业务逻辑,即每一次计算,都需要生成一个代数中间数表示 (AIR),这是一组代表特定计算的多项式约束。 可验证计算应该让世界各地的开发者都能使用,Cairo 正是出于这样的想法而诞生了。Cairo 让开发者可以随心驾驭 STARK 的力量。 自此开发者社区就对 Cairo 充满热情。今日 StarkNet 生态系统中的一切繁荣都建立在 Cairo 之上。在 StarkNet 和 StarkEx 之间,由 Cairo 驱动的应用程序已处理超过 2.2 亿笔交易,铸造了超过 6500 万个 NFT,处理交易总价值超过 7000 亿美元,所有的这些都在以太坊上结算。 虽然 Cairo 让 STARK 变得可用,但最初是作为汇编语言而设计,因此就写成了一种低级语言。用 Cairo 编写的一个早期程序示例在开发者的反馈和 StarkNet 兴起的推动下,我们逐渐改进 Cairo,让它变得更具表现力,对开发者更友好。一个 ERC-20 Cairo 合约示例,展示了对变量、if 语句、错误和 UINT256 库的支持但很快我们就确定,需要向前更进一步,与其对 Cairo 做渐进式的改进,不如来一次更大胆的转型。Cairo 1.0从 Cairo 1.0 开始,我们从头开始构建了一个全新的编译器,为开发者提供安全功能,且允许以更简单、更具表现力的方式编写合约。隆重推出 Sierra:保证每次 Cairo 运行程序都可验证Cairo 1.0 主要新增 Sierra(Safe Intermediate Representation,安全中间表示)。Sierra 构成 Cairo 1.0 和 Cairo 字节码之间的一个新的中间表示层。Sierra 的目标是确保每一次 Cairo 的运行(即一个 Cairo 程序和它的输入)都能得到证明(见下文)。 Sierra 保证 Cairo 开发者的代码未来一定可用。底层系统改进的情况下,StarkNet 合约不需要重新编译(例如,改变 CPU AIR 架构,改进 Sierra 到 Cairo 字节码的最终转译),这进一步带来稳定性。 证明每一次 Cairo 运行。 在之前的 Cairo 版本中,Cairo 运行可能导致三种情况:TRUE、FALSE 或失败。 失败的运行无法证明。 Sierra 能确保 Cairo 运行永远不会失败,并且只会得到 TRUE 或者 FALSE 的结果。 同时反过来又确保了每次 Cairo 的运行都可以被证明。 Sierra 的引入对于 StarkNet 作为一个无需许可的网络来说具有重要意义。 Sierra 确保即使是撤回的交易也可以包含在 StarkNet 块中。 此属性将允许 StarkNet 协议无需添加复杂的加密经济机制仍旧保持精简。 两个形象的例子:排序器会对撤回交易收取费用,从而使 StarkNet 能够以既定的方式防范排序器 DoS 攻击。可以实现强制 L1 交易,让 StarkNet 继承以太坊的全面抗审查性。语言特色Cairo 1.0 将对编程语言自身提供很多改进。 下面所示内容并非在第一个版本一次更新,会按路线图逐渐更新。改进后的语法不再有 local 和 tempvar,只用 let 来处理所有变量改进 if 命题语法Oldif cond != 0 { tempvar x = x+1; } else { tempvar x = x; }__________________________________Newif cond { x = x + 1; } 类型安全保证编译器将使用强类型化来提高代码的安全性。比如:指针将总是指向初始化的内存默认压缩 dictionaries,而不需要程序员调用 squash_dict使用语言构造更容易例如:循环let sum = 0 for x in iter { sum = sum + x; } 布尔表达式整数(常规整数除法 👯)相关类型的溢出保护布尔条件一个全面的类型系统抽象数据类型(即类似 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. 更直观的代码库(e.g. dict, arrays)Dict;Array;进一步优化的代码 自动检测并自动完成局部变量分配,无需明确说明。更好整合编译器启用更好的 IDE 支持、软件包管理以及更好地促进社区贡献。结论Cairo 首次发布并应用两年的同时,我们也在开发 Cairo 1.0,将大幅提升可表达性、安全性和语法。这是 StarkNet 向前迈出的一大步,更方便开发人员编写 StarkNet 合约。 在即将发布的文章中,我们将详述 Cairo1.0 对 StarkNet 网络重置影响,以及开发人员应如何为其发布做好准备。 ## Publication Information - [Starknet 中文](https://paragraph.com/@starknet-zh/): Publication homepage - [All Posts](https://paragraph.com/@starknet-zh/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@starknet-zh): Subscribe to updates - [Twitter](https://twitter.com/StarkNet_ZH): Follow on Twitter