Skip to content

passandscore/solidity-challenges

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Solidity Challenges Repository

GitHub stars GitHub contributors GitHub forks

Welcome, Solidity Developers & Researchers! 🎉

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.



🦶 Choose Your Path

  • Exploits: Identify vulnerabilities and exploit the contracts.
  • Solidity: Test your knowledge with language-specific challenges.


🏆 Feature Challenges

Type Challenge Author Discussion
Exploit Airdrop PutraLaksmana View
Solidity Correct writeMyData vicsnet View


🚨 Exploit Challenges

# 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


🚨 Solidity Challenges

# Challenge Author
6 Users reporting incorrect game count passandscore
5 Correct writeMyData vicsnet
4 Update userOperation passandscore
3 Parse the given bytes to return both the function selector and data passandscore
2 Ensure secure randomness in this lottery contract codyrhoten
1 The test should revert when attempting to mint as an unauthorized user passandscore


🚀 Installation

  1. Clone the repository.
  2. Install Foundry.
  3. Run forge build to set up the project.

🤔 Usage

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:

  1. Review the README file.
  2. Uncover issues in the provided contracts.
  3. Provide your solution in the test file.
  4. Test your solution with forge test --mp test/<challenge-type>/<challenge-name>/<ChallengeName>.t.sol.

Rules

  • Follow the rules and constraints outlined in the challenge's README and test file.

📄 Contributor Guidelines

  1. Add an Exploit Challenge:

    • Create a new folder under src/exploits/ and test/exploits/ named <challenge-name>.
    • Add your challenge's smart contracts in src/exploits/<challenge-name>/.
    • Create a README.md file in src/exploits/<challenge-name>/ detailing the challenge and constraints.
    • Write a corresponding Foundry test in test/exploits/<challenge-name>/.
  2. Add a Solidity Challenge:

    • Create a new folder under src/solidity/ and test/solidity/ named <challenge-name>.
    • Add your challenge's smart contracts in src/solidity/<challenge-name>/.
    • Create a README.md file in src/solidity/<challenge-name>/ detailing the challenge and constraints.
    • Write a corresponding Foundry test in test/solidity/<challenge-name>/.
  3. Submit a Solution:

    • Drop your solutions in the discussion section of the challenge.
  4. 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.
  5. Review and Discuss:

    • Participate in discussions and provide feedback on pull requests.
    • Engage with the community to help refine challenges and solutions.

🧰 Troubleshooting

For help, visit the Discussions section.

🚨 Disclaimer

This repository contains intentionally vulnerable code for educational purposes. DO NOT USE IN PRODUCTION.

About

Solidity exploits & challenges.

Resources

Stars

Watchers

Forks