DEV Community

bin2chen
bin2chen

Posted on

Ethernaut系列-说明

简介

Ethernaut 是一个基于 Web3/Solidity 的过关游戏。
如果对如何安全编写Solidity感兴趣,建议你去玩下。
官网:https://ethernaut.openzeppelin.com/

适用范围

要玩这个游戏,最好对下面这几个技术有一定的了解

  1. Solidity,基本了解Solidity智能合约的开发,个人建议最好的学习方式可以从官网文档开始 https://docs.soliditylang.org
  2. Javascript,能写基本的Javascript
  3. 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
    ...
Enter fullscreen mode Exit fullscreen mode

每个测试文件包含三部分:
1.setup : 模拟线上关卡,初始化player/levelOwner/levelContract
2.attachs: 执行对应的Run.sol,进行过关
3.check: 检测过关条件,不满足就测试不通过

运行第一关:

$ npx hardhat test test/01Fallback.js
Enter fullscreen mode Exit fullscreen mode

如图:
Image description


运行所有关卡:

$ npx hardhat test
Enter fullscreen mode Exit fullscreen mode

有问题或者任何建议可以twitter上DM我,感谢。

https://twitter.com/bin2chen


言归正传 #show me the code

(提示:第0关是介绍,根据官网的提示走即可)

目前github更新10关,blog会陆续跟上

Discussion (0)