# 通过Starklings学习Cairo 1.0 (一) **Published by:** [LVIS](https://paragraph.com/@lviswang/) **Published on:** 2023-02-04 **URL:** https://paragraph.com/@lviswang/starklings-cairo-1-0 ## Content 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工具。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/lviswangSubscribe ## Publication Information - [LVIS](https://paragraph.com/@lviswang/): Publication homepage - [All Posts](https://paragraph.com/@lviswang/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@lviswang): Subscribe to updates