cairo1.0 发布了,相对于原来的有不少重要变化。考虑到Cairo应用在starkex和starknet,将来想在这两个平台做应用的,还是值得研究下的。
演进过程
- 汇编指令级别的调用,比如[ap]的直接操作,现在仍然存在。
- old cairo,也就是cairo文档上描述的,有点像python的语法,但是写起来还是需要很有constraint的概念的。不过里面的trait很像rust
- 现在的cairo,基于Sierra
主要功能变化
- cairo程序不再有failure了,只有true/false,不会再出现不能prove的情况了。
- reverted tx也能包含在block中。说是permissionless,还是要等到各种工具都decentralized后吧,比如sequencer。
- sequencer也能从reverted tx中收fee,说是能防止对sequencer的DoS,但是当然不可能有任何免费交易了,否者肯定DoS。
- forced L1 tx。当然是做到permissionless的一步。
语法变化
总体感觉更像rust了,毕竟rust是安全做得好的里面,最易用的了
- 没有local和tempvar,可能自动判断变量作用范围?
- if里面,变量不变的话,不需写冗余语句了。这个确实更直白
- 强类型;Pointer总是指向初始化的mem,Dict永远会被squashed,而不是让程序员主动调用squash_dict
- 其他就是一些方便的语法描述了,其中比较重要的是支持了整数除法
- 支持