引言:当“信任”不再依赖语言,而依赖数学
过去十年,智能合约开发者的核心焦虑一直是“如何写出不出错的代码”。Solidity开发者花费大量精力防范重入攻击,Move开发者依赖资源模型保证资产安全,但这些本质上都是“在语言层面建立护栏”。而Cairo提出了一个截然不同的命题:如果代码本身的执行可以被数学证明呢?
Cairo是StarkNet的原生语言,也是目前唯一为STARK证明系统从底层设计的通用编程语言。它的核心定位不是“更安全的智能合约语言”,而是“可证明计算的语言”——你可以在不被信任的机器上运行计算,然后在便宜的机器上快速验证结果。这意味着,Cairo程序不仅能在链上执行,还能生成一份数学证明,让任何人在不知道输入的情况下确认“这个程序确实正确运行了”。
这带来了一个根本性的范式转移:安全模型从“语言保证”转向“密码学保证”。Cairo的每一个程序都是一条可证明的陈述。本文将带你从零开始,在StarkNet上编写、编译、测试并部署一个Cairo智能合约,体验“数学即安全”的开发方式。
一、Cairo的三大独特设计:不可变内存、非确定性、Sierra
要理解Cairo,必须先理解它与传统语言的三个根本差异。
1.1 不可变内存:一次写入,永不修改
在Cairo中,内存访问是不可变的——一旦一个值被写入内存,它就不能被改变。这听起来像是倒退,但对于STARK证明来说却是关键优势:证明器不需要证明“内存被修改”,只需要证明“值在写入后保持不变”。Cairo 1提供了让开发者感知不到这个约束的抽象,但内存模型仍然是不可变的。
1.2 非确定性:验证比计算更快
Cairo最反直觉的设计是“非确定性”。理论上,你无