Myth1call/PuppyRaffle-audit
GitHub: Myth1call/PuppyRaffle-audit
基于 Cyfrin Updraft 课程的智能合约安全审计实践项目,针对 PuppyRaffle 抽奖协议提供 Foundry PoC、审计发现和 PDF 报告,帮助开发者练习 Solidity 合约安全审计技能。
Stars: 0 | Forks: 0
# Puppy Raffle
本项目旨在参与抽奖以赢取一个可爱的狗狗 NFT。该协议应执行以下操作:
1. 使用以下参数调用 `enterRaffle` 函数:
1. `address[] participants`:参与者的地址列表。你可以利用此参数让自己多次参与,或者让你和一群朋友一起参与。
2. 不允许出现重复的地址。
3. 如果用户调用 `refund` 函数,允许他们退还门票以及对应的 `value`。
4. 每隔 X 秒,抽奖活动将能够抽选出一名获胜者,并为其随机铸造一个小狗 NFT。
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` 部分。
[](https://gitpod.io/#github.com/Cyfrin/3-passwordstore-audit)
# 使用方法
## 测试
```
forge test
```
### 测试覆盖率
```
forge coverage
```
以及基于覆盖率的测试:
```
forge coverage --report debug
```
# 审计范围详情
- Commit Hash: e30d199697bbc822b646d76533b66b7d529b8ef5
- 审计范围内:
```
./src/
└── PuppyRaffle.sol
```
## 兼容性
- Solc 版本: 0.7.6
- 可部署合约的链: Ethereum
# 角色
Owner - 协议的部署者,有权通过 `changeFeeAddress` 函数更改接收费用的钱包地址。
Player - 抽奖活动的参与者,有权通过 `enterRaffle` 函数参与抽奖,并通过 `refund` 函数退还价值。
# 已知问题
无