简介
Ethernaut 是一个基于 Web3/Solidity 的过关游戏。
如果对如何安全编写Solidity感兴趣,建议你去玩下。
官网:https://ethernaut.openzeppelin.com/
适用范围
要玩这个游戏,最好对下面这几个技术有一定的了解
- Solidity,基本了解Solidity智能合约的开发,个人建议最好的学习方式可以从官网文档开始 https://docs.soliditylang.org
- Javascript,能写基本的Javascript
- Web3,了解基本的web3的概念
工具
IDE: VSCODE
工具: Hardhat(Solidity的开发环境) https://hardhat.org
说明
这个系列的代码会都放在Github上,可以通过这个地址查看
https://github.com/bin2chen66/ethernaut
在官网玩需要连接以太坊的测试网rinkeby,不是很稳定,再加上需要去找稳定的水龙头,所以我把关卡的代码复制到本地,通过hardhat的本地编译环境来跑。
目录结构如下:
.
├── contracts # 过关用的Solidity代码
│ ├── 01FallbackRun.sol
│ ├── 02FalloutRun.sol
│ ├── 03CoinFlipRun copy.sol
│ ├── 04TelephoneRun.sol
│ ├── 05TokenRun.sol
.....
│ └── ethernaut #从官网复制的关卡源码
│ ├── 01Fallback.sol
│ ├── 02Fallout.sol
│ ├── 03CoinFlip.sol
│ ├── 04Telephone.sol
│ ├── 05Token.sol
....
└── test #测试用例,每个关卡一个文件
├── 01Fallback.js
├── 02Fallout.js
├── 03CoinFlip.js
├── 04Telphone.js
├── 05Token.js
...
每个测试文件包含三部分:
1.setup : 模拟线上关卡,初始化player/levelOwner/levelContract
2.attachs: 执行对应的Run.sol,进行过关
3.check: 检测过关条件,不满足就测试不通过
运行第一关:
$ npx hardhat test test/01Fallback.js
运行所有关卡:
$ npx hardhat test
有问题或者任何建议可以twitter上DM我,感谢。
言归正传 #show me the code
(提示:第0关是介绍,根据官网的提示走即可)
目前github更新10关,blog会陆续跟上
Top comments (0)