目前Starknet智能合约的语法大部分继承了之前的Cairo 1.0设计。该设计存在一些我们希望解决的问题。我们转向新语法的目标是通过使合约的行为更加明确来提高安全性。通过为合约的外部函数、存储和事件引入更多结构,我们可以显着降低出现错误的可能性。这将有助于保护协议免受潜在的黑客攻击和资金损失。此外,新语法允许我们引入可扩展性,这是社区强烈要求的功能,它允许开发人员轻松使用外部库编写的组件。
新语法需要进行重大更改。虽然我们选择在现阶段尽可能避免重大变更,但经过内部和社区讨论后,我们得出的结论是,这是未来会带来红利的正确道路,这里我们只想强调,只有合约的“最外层”(外部函数和事件的定义)需要修改。您现有的 Cairo v1 代码只需要进行少量调整(请参阅文档以获取快速迁移指南)。另一方面,新语法的好处非常显着:使用外部库中的组件(处理大型项目时的一个关键功能)将变得很平常,并且不再需要临时的解决方法。
文章中描述的一些即将发生的变化(特别是新的合约语法)将意味着语言的重大变化。虽然在 Cairo v2 之后,大部分重大更改已经过去,但从现在开始致力于向后兼容还为时过早。也就是说,在 Starknet 之上开发智能合约的项目需要稳定性和仔细的审核,这对我们来说是一个重要的考虑因素。为了解决这些问题,我们提供以下稳定性保证:
Starknet 上声明的任何类都将继续像以前一样工作,并且不会受到语言变化的影响
部署在 Starknet 上的任何合约都将继续像以前一样工作,并且不会受到语言变化的影响
对于每一次重大语言升级,以前版本编写的合约将继续在 Starknet 上声明至少六个月。
例如,如果您正在使用 Cairo 版本 X 开发项目(或接近部署/在审核阶段),并且 Cairo Y 发布时带有重大更改,则使用版本 X 编写的合约仍将在 Starknet 上接受至少 6年月。也就是说,您有至少六个月的时间将您的合约部署在 Starknet 上,此时它们将永远受到第 1 点和第 2 点的保护。
随着新合约语法的发布(并在即将发布的 v0.12.0 中在 Starknet 上提供)以及我们身后的大量重大更改,Cairo 现在足够稳定和丰富,足以支持复杂的应用程序,并移植现有的 Cairo 0 逻辑。此外,Starknet 的向后兼容性保证确保即使语言发生重大变化,您也将有足够的时间(至少六个月)来完成合约的开发或审核和部署。
Cairo 不断发展,已经达到了极大地绕过原始语言的地步。如果您还没有,现在是时候参与其中了。我们欢迎开发者社区积极参与讨论,可以直接在编译器存储库上提出问题,也可以在cairo Discord 频道或 Starknet社区论坛上发帖。希望这篇文章(及其技术性更强的文章)有助于阐明预期的变化,并消除对开罗未来的大部分疑虑。
