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
- 其他就是一些方便的语法描述了,其中比较重要的是支持了整数除法
- 支持rust like的enum,即有None的
- Trait里面,支持对操作符重定义?很不错呀。
- 更多库,比如Dict<Uint256, MyStruct>和Array<MyOtherStruct>
工具
说要有更好的IDE、包和社区支持。看来是要慢慢开源了,好趋势
对regenesis的影响?
TBD
Ref
[1] 封面照片 https://blog.fuertehoteles.com/en/activities/day-trip-sierranevada/