导论

什么是Cairo?

Cairo是为同名虚拟CPU设计的编程语言。该处理器的独特之处在于,它不是针对我们世界的物理约束而创建的,而是针对加密需求而设计的,因此能够有效地证明其上运行的任何程序的执行情况。这意味着您可以在一个不信任的机器上执行耗时的操作,并在更便宜的机器上快速检查结果。尽管Cairo 0曾经直接编译为Cairo CPU汇编语言(CASM),但Cairo 1是一种更高级的语言。它首先编译为Sierra,Cairo的中间表示形式,稍后将编译为CASM的安全子集。Sierra的作用是确保您的CASM始终可证明,即使计算失败。

你可以用它做什么?

Cairo允许您在不受信任的机器上计算可信的值。其一个主要用例是Starknet,一种以太坊扩容的解决方案。以太坊是一种去中心化的区块链平台,使得可以创建所有参与者都验证用户和d-app之间的每次交互的去中心化应用程序。Starknet是建立在以太坊之上的第二层。它不需要网络的所有参与者来验证所有用户交互,只有一个节点(称为证明者)执行程序并生成证据证明计算是正确的。然后智能合约验证这些证据,相比于执行交互本身,需要的计算能力大大降低。这种方法允许增加吞吐量和减少交易成本,同时保持以太坊的安全性。

与其他编程语言相比有什么区别?

Cairo与传统编程语言有很大不同,尤其是在开销和其主要优点方面。您的程序可以通过两种不同的方式执行:

当由证明者执行时,它类似于任何其他语言。因为Cairo是虚拟化的,并且操作并非专门设计用于最大效率,这可能会导致一些性能开销,但这并不是最重要的部分需要进行优化。

当生成的证据由验证者验证时,则稍微有些不同。这必须尽可能便宜,因为它可能在许多非常小的机器上进行验证。幸运的是,验证比计算快,而Cairo具有一些独特的优势,可以进一步改善。一个值得注意的例子是非确定性。这是本书中将在更多细节中介绍的主题,但基本意思是理论上可以使用不同的算法进行验证和计算。目前,为开发人员编写自定义的非确定性代码不受支持,但标准库利用非确定性来提高性能。例如,在Cairo中对数组排序的成本与复制相同。由于验证者不会对数组进行排序,它只检查它是否排序,这就更便宜了。

另一个使该语言独特的方面是其内存模型。在Cairo中,内存访问是不可变的,意味着一旦将值写入内存,它将无法更改。Cairo 1提供了帮助开发人员处理这些约束的抽象,但它并没有完全模拟可变性。因此,开发人员必须仔细考虑如何管理他们程序中的内存和数据结构以优化性能。

此外,Cairo还有一些其他特点:

  • 静态类型:与许多现代编程语言一样,Cairo是一种静态类型的语言。这意味着变量必须在使用之前声明,并且它们只能被分配给其声明类型的值。
  • 无限制的精度算术:Cairo中的数学运算不受硬件规定的限制,因此可以进行以任意精度执行。
  • 内存安全:由于内存访问是不可变的,Cairo几乎可以完全避免许多常见的内存错误,例如缓冲区溢出和悬空指针。

总体而言,Cairo是一种专门设计用于加密需求的编程语言,并且具有独特的优势,使其成为构建安全和高效计算的理想选择。

参考文献

  1. Cairo CPU Architecture: https://eprint.iacr.org/2021/1063
  2. Cairo、Sierra 和 Casm:https://medium.com/nethermind-eth/under-the-hood-of-cairo-1-0-exploring-sierra-7f32808421f5
  3. 非确定性的状态:https://twitter.com/PapiniShahar/status/1638203716535713798

请注意,第三个参考文献似乎是一条推文的链接,因此我提供了一个指向该推文的链接以供参考。如果需要翻译,请复制并使用您选择的在线翻译工具对其进行翻译。