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 buildto 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.mdfile 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.mdfile 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.
