blastonyz/SC-Security

GitHub: blastonyz/SC-Security

Cyfrin 智能合约安全课程的审计练习项目,以 Puppy Raffle 抽奖协议为审计靶场帮助开发者学习 Solidity 合约安全审计。

Stars: 0 | Forks: 0

puppy-raffle
# Puppy Raffle 本项目旨在参与抽奖以赢得一个可爱的小狗 NFT。该协议应实现以下功能: 1. 调用 `enterRaffle` 函数并传入以下参数: 1. `address[] participants`:参与者的地址列表。你可以利用此参数让自己多次参与,或者让你和一群朋友一起参与。 2. 不允许出现重复地址。 3. 如果用户调用 `refund` 函数,允许他们退还门票及对应的 `value`。 4. 每隔 X 秒,抽奖活动将能够抽取一名获胜者,并为其随机 mint 一个小狗。 5. 协议的 owner 将设置一个 feeAddress 来抽取一部分 `value`,其余的资金将发送给小狗的获胜者。 - [Puppy Raffle](#puppy-raffle) - [入门指南](#getting-started) - [环境要求](#requirements) - [快速开始](#quickstart) - [可选的 Gitpod](#optional-gitpod) - [使用方法](#usage) - [测试](#testing) - [测试覆盖率](#test-coverage) - [审计范围详情](#audit-scope-details) - [兼容性](#compatibilities) - [角色](#roles) - [已知问题](#known-issues) # 入门指南 ## 环境要求 - [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) - 如果你能运行 `git --version` 并看到类似 `git version x.x.x` 的输出,说明你安装正确。 - [foundry](https://getfoundry.sh/) - 如果你能运行 `forge --version` 并看到类似 `forge 0.2.0 (816e00b 2023-03-16T00:05:26.396218Z)` 的输出,说明你安装正确。 ## 快速开始 ``` git clone https://github.com/Cyfrin/4-puppy-raffle-audit cd 4-puppy-raffle-audit make ``` ### 可选的 Gitpod 如果你无法或在本地运行和安装,你可以在 Gitpod 中使用此代码库。如果你这样做,可以跳过 `clone this repo`(克隆此代码库)的部分。 [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#github.com/Cyfrin/4-puppy-raffle-audit) # 使用方法 ## 测试 ``` forge test ``` ### 测试覆盖率 ``` forge coverage ``` 以及基于覆盖率的测试: ``` forge coverage --report debug ``` # 审计范围详情 - Commit Hash: 2a47715b30cf11ca82db148704e67652ad679cd8 - 审计范围内: ``` ./src/ └── PuppyRaffle.sol ``` ## 兼容性 - Solc 版本: 0.7.6 - 部署合约的区块链网络: Ethereum # 角色 Owner - 协议的部署者,有权通过 `changeFeeAddress` 函数更改接收费用的钱包地址。 Player - 抽奖活动的参与者,有权通过 `enterRaffle` 函数参与抽奖,并可通过 `refund` 函数退还资金。 # 已知问题 无

标签:Solidity, Web3, 区块链安全, 后端开发, 安全审计靶场, 智能合约审计