# WTF Cairo极简教程: 1. Hello Cairo(5行代码) **Published by:** [0xAA](https://paragraph.com/@wtfacademy/) **Published on:** 2022-11-26 **URL:** https://paragraph.com/@wtfacademy/wtf-cairo-1-hello-cairo-5 ## Content 我最近在学cairo-lang,巩固一下细节,也写一个WTF Cairo极简教程,供小白们使用。教程基于cairo 0.10.2版本 推特:@0xAA_Science|@WTFAcademy_ WTF Academy 社群:Discord|微信群|官网 wtf.academy 所有代码和教程开源在 github: github.com/WTFAcademy/WTF-CairoCairo 简介cairo(cairo-lang)是StarkNet(以太坊ZK-Rollup扩容方案)智能合约的编程语言。它同时也用于编写可证明程序,证明某个计算已正确执行。Cairo主要有两个特点:ZK友好: Cairo是原生的可证明计算的编程语言,可以直接编译为Stark可证明程序。而Solidity不能。难学: Cairo是低级语言,学习曲线陡峭;并且现在属于开发早期,每个版本都会有很大改变。目前Cairo版本为0.10.2,预计22年年底发行比较成熟的1.0版本。开发工具: Cairo Playground本教程中,我会用cairo playground来运行cairo合约。cairo playground是Cairo官方开发的在线编辑器,适合新手,可以在浏览器中快速部署智能合约,你不需要在本地安装任何程序。 网址: cairo-lang.org/playground/Hello Cairo第一个Cairo程序很简单,只有5行代码:%lang starknet @view func gm() -> (res: felt) { return (res='Hello Cairo!'); } 我们拆开分析,学习cairo代码源文件的结构:第1行声明了这段代码为 StarkNet 合约。如果不声明,则不能部署在StarkNet上。%lang starknet 之后,我们写一个函数。第2行,我们用@view修饰这个函数。与solidity中的类似view类似,该函数只能查询但不能修改合约状态。第3-5行我们声明了名为gm的函数,没有参数,返回一个变量,类型为felt。felt(field element,域元素)是 cairo 的基本类型,数字,字符串,地址通通由它表示。然后在函数体中,我们将返回值设为 Hello Cairo!。@view func gm() -> (res: felt) { return (res='Hello Cairo!'); } 编译并部署代码我们将代码拷贝到cairo playground的编辑器(Editor)中,然后点击右上角的 Deploy on StarkNet 就能将合约编译并部署到StarkNet测试网上。部署好以后,下面的输出栏(Output)会显示智能合约地址和交易哈。合约部署上链大概需要2-5分钟合约部署成功后,点击合约地址链接跳转到StarkNet的区块链浏览器Voyager(类似以太坊的etherscan)就可以查看合约。一个已部署好的例子。 下滑到页面底,点击Read Contract栏,可以看到合约里的只读函数gm()。点击gm,将输出选为Text(文本),然后点击Query运行函数,就可以看到Hello Cairo!了!总结这一讲,我们简单介绍了cairo-lang,并在cairo playground中部署了第一个cairo智能合约--Hello Cairo。之后,我们将继续 Cairo 之程!Cairo 资料推荐Cairo官方文档(英文) ## Publication Information - [0xAA](https://paragraph.com/@wtfacademy/): Publication homepage - [All Posts](https://paragraph.com/@wtfacademy/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@wtfacademy): Subscribe to updates - [Twitter](https://twitter.com/0xAA_Science): Follow on Twitter