通过 Starklings 学习 Cairo 1.0 ( 一 )
2023-02-04 03:38
Lvis 的专栏
2023-02-04 03:38
订阅此专栏
收藏此文章

Starklings

在之前的 Cairo 0.10 版本的学习中,发现一个非常神奇的工具Starklings,可以以一种交互式的方式轻松学习 Cairo,有点像学习 Solidity 时的打僵尸教程(crypto zombie),是由OnlyDust编写的,OnlyDust 也是 Starkware 的战略合作伙伴。

https://github.com/onlydustxyz/starklings

最近偶然看到了 Cairo 1.0 版本的 Starklings,不过好像不是 OnlyDust 官方出品,但是使用方法上和之前非常类似,我也不挑了,能学就行。

目前该 repo 只更新了 4 则非常简单的 cairo 1.0 的语法,看起来甚至有点无聊,说明也较少,不过可以关注着,在这记录 Starklings 的使用方法。

https://github.com/shramee/starklings-cairo1

使用方法

1. 克隆该仓库到本地,下载配套的 rust 工具。

  1. Cairo 0.1 是类 python 的,而 1.0 是类 Rust 的,所以我们需要先安装 Rust。多提一句,Cairo 的编译器 Sierra 也是用 Rust 写的。上个月底,Starware 宣布了他们正在开发一个新的由 Rust 编写的开源 Sequencer( 定序器 )— blockifier。

https://starkware.medium.com/starknets-new-sequencer-339e63845003

这是以太坊不同客户端不同交易的处理数据的对比。“Python 客户端是众所周知的慢和贵。StarkNet 换 Rust 客户端后会直接提高 TPS 和降低 Gas ”。但是客户端的优化能提高 TPS 可以理解,为什么能或者什么情况下能降低 Gas 呢?可以看看这条 thread 的解析:

https://twitter.com/cryptonerdcn/status/1621351302566666242?s=20&t=-U3LGxldbq8PhcvLHoCHow

回到 Starklings,安装完成后按照指引,运行cargo run --bin starklings watch就可以进入 starklings 的学习了!

2. 怎么用?

运行完该命令后会让进入 watch mode,把这个终端放在一边不用去管,打开 vscode,到exercises/intro文件夹里进行编辑。在注释行里会有基本的语法介绍,想让你了解学习的内容,掌握之后根据要求修改程序,使其能够成功编译就算过关。

回到处于 watch mode 的终端,就可以看到报错或者提示成功,完成编译后,将//I AM NOT DONE一行删除,就可以进入下一个练习了。

3. intro1-4.cairo

目前更新的 1-4 都是非常简单的,作者正在更新十多个语法点,可以保持关注。

intro 1

这里告诉大家 Cairo1 必须要有个 main 函数才算有效,尽管这个是空的。不需要做任何修改就能编译,直接移除//I AM NOT DONE 进入下一个练习。

intro 2

这里一片空白,提示说这个练习无法编译。想到 intro1 里介绍,cairo1 必须要有个 main 函数才有效,于是添加

fn main() {}

回到终端查看是否成功:

intro 3

这里开始介绍 cairo 的类型。felt(field element,域元素)是 cairo 的基本类型,数字,字符串,地址通通由它表示。它是定义在 的整数,其中 P 是一个非常大的质数。在目前的版本中,P = 2^{251}+17*2^{192}+1,大小为 252 bit。P 具有一些很好的数学性质用于零知识证明,因此没有选择和 Solidity 一致的 256 bit。在 cairo 0.10 中仅支持这一种类型,在 1.0 中不知道是否有更多类型。

这个练习中定义了输入的类型,即 a,b 都为 felt,add 函数中缺少返回类型,加上个返回 felt 就可以了:

intro 4

这里提了在编写函数内容时,如果在结尾不加分号,就会自动返回这行的结果,这会使得代码看起来更简洁。这里他以 add 函数作为例子,我们需要修改 sub 函数和 main 函数:

到此为止,4 个练习就都完成啦!

关于 Cairo1 的语法,最好的是追踪官方的仓库:

https://github.com/starkware-libs/cairo

但是由于是基于 rust 的,学 rust 也准没错,可以参考@Asten正在更新的中文版 rust 文档:

https://github.com/0xAsten/rust-book-zh

欢迎交流:

https://twitter.com/lviswang

subscribe://

collect://

相关Wiki

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

在 App 打开
特朗普
空投
rwa
稳定币
babylon
以太坊
wayfinder
wct
morph
香港
hyperliquid
wal