Welcome to the Solidity Challenges Repository, a platform for Solidity developers and security researchers. This repository offers a wide range of challenges, from language-specific tasks to exploit-focused scenarios.
- Exploits: Identify vulnerabilities and exploit the contracts.
- Solidity: Test your knowledge with language-specific challenges.
Type | Challenge | Author | Discussion |
---|---|---|---|
Exploit | Airdrop | PutraLaksmana | View |
Solidity | Correct writeMyData | vicsnet | View |
# | Challenge | Author |
---|---|---|
16 | Weighted Voting | ZCalz |
15 | Succession | passandscore |
14 | Airdrop | PutraLaksmana |
13 | Instigator | passandscore |
12 | Private Treasure | passandscore |
11 | Sideline | passandscore |
10 | Combination Lock | passandscore |
9 | Mimic | passandscore |
8 | Lucky Spin | passandscore |
7 | False Start | passandscore |
6 | ERC20 Vault Exploit | IzuMan |
5 | Sherwood Bank | IzuMan |
4 | Steal | X_Drained |
3 | Auction | scadamsuab |
2 | Gridlock | passandscore |
1 | Etherstore | passandscore |
- Clone the repository.
- Install Foundry.
- Run
forge build
to set up the project.
Each challenge includes:
- A README file in
src/<challenge-type>/<challenge-name>/README.md
. - Contracts in
src/<challenge-type>/<challenge-name>/
. - A Foundry test in
test/<challenge-type>/<challenge-name>/<ChallengeName>.t.sol
.
To solve a challenge:
- Review the README file.
- Uncover issues in the provided contracts.
- Provide your solution in the test file.
- Test your solution with
forge test --mp test/<challenge-type>/<challenge-name>/<ChallengeName>.t.sol
.
- Follow the rules and constraints outlined in the challenge's README and test file.
-
Add an Exploit Challenge:
- Create a new folder under
src/exploits/
andtest/exploits/
named<challenge-name>
. - Add your challenge's smart contracts in
src/exploits/<challenge-name>/
. - Create a
README.md
file insrc/exploits/<challenge-name>/
detailing the challenge and constraints. - Write a corresponding Foundry test in
test/exploits/<challenge-name>/
.
- Create a new folder under
-
Add a Solidity Challenge:
- Create a new folder under
src/solidity/
andtest/solidity/
named<challenge-name>
. - Add your challenge's smart contracts in
src/solidity/<challenge-name>/
. - Create a
README.md
file insrc/solidity/<challenge-name>/
detailing the challenge and constraints. - Write a corresponding Foundry test in
test/solidity/<challenge-name>/
.
- Create a new folder under
-
Submit a Solution:
- Drop your solutions in the discussion section of the challenge.
-
Improve Existing Challenges:
- Fork the repository and create a new branch.
- Make improvements or fixes to the existing challenges.
- Submit a pull request with details about the changes.
-
Review and Discuss:
- Participate in discussions and provide feedback on pull requests.
- Engage with the community to help refine challenges and solutions.
For help, visit the Discussions section.
This repository contains intentionally vulnerable code for educational purposes. DO NOT USE IN PRODUCTION.