哈喽👋
本教程是为那些有兴趣学习Cairo 1和Starknet 智能合约的开发者准备的,您可以遵循此教程立即开始,玩的开心!
欢迎来到Starknet,这是一个基于Ethereum主网的Validity Rollup(也称为ZK-Rollup),Starknet是一个二层解决方案,可以让开发人员在不影响安全性、可扩展性和去中心化的情况下构建去中心化应用程序。
本仓库呢旨在帮助您阅读Cairo代码和Starknet智能合约,并且在这个过程中理解他们的语法。不用担心,完成它只需要简单的跟着教程做即可,您不需要编写任何代码,或者在你的电脑上安装任何东西。仅仅通过您的浏览器就可以完成所有操作
这些练习题是部署在Starknet Alpha 测试网(goerli testnet)上的一组智能合约,每个智能合约都是一个练习/谜题,用于展示Cairo智能合约的某个特征。
完成每个练习之后,您将获得积分,积分是以ERC20 token的形式展现的。该token没有任何实际价值,但它是一种有趣的方式,来跟踪您的学习进度。
我们希望您在整个过程中玩的开心!
- 如何阅读Cairo 1代码
- 如何阅读Starknet智能合约
- 如何使用浏览器插件钱包和区块浏览器与Starknet智能合约交互
除了学习一些关于Starknet很酷的东西以外,不要期望会有任何额外的好处,Starknet是基于Ethereum主网的第一个通用Validity Rollup。
要完成教程,您需要收集积分。 这些积分将会保存在您的Starknet钱包里。
- 最简单的方法是使用 Argent X (下载chrome插件 或者 他们的仓库) 或者使用 Braavos (下载chrome插件). 这些钱包适用于Starknet,就像Metamask对于Ethereum一样。他们允许发起交易,与Starknet上的应用程序交互。
- 按照钱包说明安装扩展程序。部署账户可能需要5分钟。需要注意的是,在Starknet中,只有一种类型的账户:智能合约账户。要创建一个新的账户,您需要发送一笔将您的智能合约账户部署到网络的交易。
- 确保您当前网络是Goerli测试网。
- 在教程中代表积分的Token合约是这个:
0x044f65adbdb59bf1db71e8b69efb7c9d0b810db94c1730a05fa5751b02d396de
(Starkscan 链接, Voyager 链接). 点击 "Add Token" 在你安装的钱包中添加Token合约的地址,就可以看到您的积分余额啦. 一个名为SC101
(starknet-cairo-101) 的Token将会显示在您的钱包中. - 要在Goerli测试网上执行交易,你需要一些测试网的ETH来支付gas费。有两种方式获得测试网的ETH:
要完成本次教程,您必须通过区块浏览器与练习/合约交互。
你可以使用Starkscan 或 Voyager。这是在Starknet上的区块浏览器,就像Ethereum上的Etherscan一样。您可以通过他们来查看区块链的状态,也可以查看任何交易和他们的状态。
将您的钱包连接到区块浏览器,您就可以将交易发送到网络,与教程中的练习进行交互。
在查找合约/交易时,请确保您使用的是Goerli网络的区块浏览器。要完成练习,需要用到区块浏览器中的read
/write
标签。
每个练习都是一个单独的智能合约. 在正确执行其中的代码时,会自动的将积分发送到您的地址。
要完成联系,请解决下面的链接阅读其代码。阅读其中的注释,并按照说明理解代码。您的目标是让每个练习都成功调用 distribute_points()
函数,成功调用之后将会向您发送ERC20积分。
在验证的过程中,练习合约通常也会调用 validate_exercise()
方法,它会记录您完成了练习,并且防止您多次收集积分。
每个练习都部署在Goerli测试网上,您需要通过区块浏览器与它们进行交互。下表中记录的是合约地址
习题 | 合约代码 | 通过 Starkscan 查看 | 通过 Voyager 查看 |
---|---|---|---|
General syntax | Ex01 | Link | Link |
Storage variables, getters, asserts | Ex02 | Link | Link |
Reading and writing storage variables | Ex03 | Link | Link |
Mappings | Ex04 | Link | Link |
Variable visibility | Ex05 | Link | Link |
Functions visibility | Ex06 | Link | Link |
Comparing values | Ex07 | Link | Link |
Recursions level 1 | Ex08 | Link | Link |
Recursions level 2 | Ex09 | Link | Link |
Composability | Ex10 | Link | Link |
Importing functions | Ex11 | Link | Link |
Events | Ex12 | Link | Link |
Privacy on Starknet | Ex13 | Link | Link |
Multicall | Ex14 | Link | Link |
你的积分将存入你的钱包,这可能需要一些时间。如果您想试试查看您的积分,您可以在区块浏览器上检查余额!
享受这次旅程!如果您有任何疑问,请随时通过 Discord 联系我们,我们非常乐意帮助!
这个项目可以做的更好。非常欢迎您的贡献!访问 CONTRIBUTING 文件获取有关如何设置环境并且为项目作出贡献的更多信息.
这是一些您可以帮忙做的事情:
- 创建一个翻译成您语言的分支
- 修复一些您发现的bug
- 如果您觉得练习中需要更多解释,请在注释中添加
- 添加练习,将您最喜欢的Cairo的特性展示给大家
- 为本仓库添加新的教程
本仓库是教授如何在Starknet上构建的第一个仓库。查看其他类型的仓库:
主题 | GitHub 仓库 |
---|---|
学习如何阅读Cairo代码 (你在这里) | Cairo 101 |
部署并自定义 ERC721 NFT | Starknet ERC721 |
部署并自定义 ERC20 token | Starknet ERC20 |
构建跨链应用程序 | Starknet messaging bridge |
轻松调试您的Cairo合约 | Starknet debug |
设计您自己的账户合约 | Starknet account abstraction |
完成本教程之后,如果您有一些反馈,我们将不胜感激!
请填写 这个表格 让我们知道如何将它变的更好.
如果您努力前进,请一定让我们知道!这个仓库的目的是尽可能的提供帮助;我们想看看是不是这样的。 如果您有任何疑问? 加入我们的 Discord,注册,并加入 #tutorials-support 频道。
您是否有兴趣参与关于Starknet开发的线上讨论?订阅