Skip to content

passandscore/solidity-challenges

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

130 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

Contributors 7