cairo1.0语言

发布于:2022-12-20 ⋅ 阅读:(1262) ⋅ 点赞:(0)

cairo1.0 发布了,相对于原来的有不少重要变化。考虑到Cairo应用在starkex和starknet,将来想在这两个平台做应用的,还是值得研究下的。

演进过程

  1. 汇编指令级别的调用,比如[ap]的直接操作,现在仍然存在。
  2. old cairo,也就是cairo文档上描述的,有点像python的语法,但是写起来还是需要很有constraint的概念的。不过里面的trait很像rust
  3. 现在的cairo,基于Sierra

主要功能变化

  1. cairo程序不再有failure了,只有true/false,不会再出现不能prove的情况了。
  2. reverted tx也能包含在block中。说是permissionless,还是要等到各种工具都decentralized后吧,比如sequencer。
  3. sequencer也能从reverted tx中收fee,说是能防止对sequencer的DoS,但是当然不可能有任何免费交易了,否者肯定DoS。
  4. forced L1 tx。当然是做到permissionless的一步。

语法变化

总体感觉更像rust了,毕竟rust是安全做得好的里面,最易用的了

  1. 没有local和tempvar,可能自动判断变量作用范围?
  2. if里面,变量不变的话,不需写冗余语句了。这个确实更直白
  3. 强类型;Pointer总是指向初始化的mem,Dict永远会被squashed,而不是让程序员主动调用squash_dict
  4. 其他就是一些方便的语法描述了,其中比较重要的是支持了整数除法
  5. 支持rust like的enum,即有None的
  6. Trait里面,支持对操作符重定义?很不错呀。
  7. 更多库,比如Dict<Uint256, MyStruct>和Array<MyOtherStruct>

工具

说要有更好的IDE、包和社区支持。看来是要慢慢开源了,好趋势

对regenesis的影响?

TBD

Ref

[1] 封面照片 https://blog.fuertehoteles.com/en/activities/day-trip-sierranevada/

[2] https://medium.com/starkware/cairo-1-0-aa96eefb19a0


网站公告

今日签到

点亮在社区的每一天
去签到