100 days of solidity challenge

Favour AjayeFavour Ajaye
5 min read

(How i forgot to put this here is what is amazing)

So, I made a decision to put this out there as a challenge for anyone who would want to take it up. This is a “100-day solidity” challenge for anyone out there who wants to challenge themselves with learning solidity.

You must not be a total beginner to pick this up. You can also pick it up as a refresher for your knowledge. Each day comes with a task that is required of you.

What do you need to start this challenge?

You need your learning resources (videos and books).

You also need a GitHub repo to push your code.

I will be documenting the daily tasks here and also updating my repo as I move on. The link to my GitHub repo for this challenge will be available soon.

Take a look at the challenge.

100 days of solidity

Day 1: Introduction to Solidity

  • Understand what solidity is and its importance in blockchain development.

  • Set up a development environment for Solidity.

  • Write and deploy a simple smart contract on a local blockchain.

Day 2–3: Solidity Basics

  • Learn Solidity data types, variables, and operators.

  • Explore control structures such as if statements and loops.

  • Practice writing basic smart contracts for simple use cases.

Day 4–7: Solidity Functions and Events

  • Understand how to define and use functions in Solidity.

  • Learn about function modifiers and fallback functions.

  • Explore advanced topics like function overloading.

  • Explore event handling and logging in Solidity.

  • Build smart contracts with multiple functions and events.

Day 8–12: Solidity Contracts and Inheritance

  • Understand the concept of contracts and contract deployment.

  • Explore inheritance in Solidity and use it to create reusable contracts.

  • Learn about interfaces and abstract contracts.

  • Build complex smart contracts with multiple contract interactions.

  • Explore contract libraries and their use cases.

  • Understand contract ownership and access control patterns.

  • Explore different contract architectures and design patterns.

  • Practice building contracts with inheritance and interfaces.

Day 13–17: Solidity Data Structures

  • Learn about arrays, mappings, and structs in Solidity.

  • Explore their use cases and best practices.

  • Build smart contracts that utilize different data structures for various scenarios.

Day 18–22: Solidity Advanced Topics

  • Dive into more advanced topics such as error handling, gas optimization, and security considerations in Solidity.

  • Explore design patterns such as factory contracts, state machines, and upgrades.

  • Practice writing complex smart contracts with the best coding practices.

Day 23–30: Solidity Testing and Debugging

  • Understand the importance of testing and debugging in Solidity development.

  • Learn how to write unit tests using frameworks like Truffle, hardhat, foundry, or Remix.

  • Explore debugging tools and techniques for Solidity contracts.

  • Practice testing and debugging smart contracts to ensure their security and functionality.

Day 31–40: Solidity Integration with Web3 and Frontend Development

  • Learn how to interact with Solidity smart contracts using Web3.js or other Web3 libraries.

  • Understand the basics of frontend development with HTML, CSS, and JavaScript.

  • Build a simple web-based user interface to interact with your smart contracts.

Day 41–50: Solidity Security Best Practices

  • Dive into the best practices for writing secure Solidity code.

  • Understand common security vulnerabilities in smart contracts and how to mitigate them.

  • Learn about tools and techniques for auditing and securing Solidity contracts.

  • Practice writing secure smart contracts with an emphasis on security best practices.

Day 51–60: Solidity Deployment and Production Readiness

  • Learn about different deployment options for Solidity contracts, including local and testnet deployments.

  • Understand the process of deploying contracts to the Ethereum mainnet.

  • Explore techniques for optimizing contract deployment costs and performance.

  • Practice deploying Solidity contracts to various networks and ensuring production readiness.

Day 61–70: Solidity Upgrades and Maintenance

  • Understand the importance of contract upgradability and maintenance.

  • Learn about different approaches to contract upgrades, including proxy patterns and state migration.

  • Explore best practices for maintaining and updating Solidity contracts over time.

  • Practice upgrading and maintaining Solidity contracts with minimal disruptions to their functionality.

Day 71–75: Solidity Project Development

  • Choose a project idea and start planning and designing a solidity-based application.

  • Develop the project iteratively, implementing the concepts learned throughout the challenge.

  • Practice integrating different components of Solidity development, including smart contracts, frontend interfaces, and backend servers.

  • Debug, test, and optimize your project to ensure its functionality and security.

Day 76–85: Solidity Project Documentation and Best Practices

  • Learn the importance of documentation in Solidity development.

  • Create comprehensive documentation for your Solidity project, including smart contract specifications, deployment instructions, and user guides.

  • Understand best practices for project organization, code commenting, and version control.

  • Practice documenting your Solidity project according to industry best practices.

Day 86–95: Solidity Project Optimization and Performance

  • Explore advanced techniques for optimizing Solidity contracts for gas usage and performance

  • Learn about contract upgradeability and security considerations in a live production environment

  • Analyze and optimize the performance of your Solidity project, including contract execution, gas costs, and transaction management

  • Practice optimizing the performance of a Solidity project for efficient and cost-effective deployment

Day 96–100: Solidity Project Review and Conclusion

  • Review your Solidity project from start to finish, analyzing its functionality, security, and performance.

  • Identify areas for improvement and lessons learned during the challenge.

  • Reflect on your overall experience and progress throughout the “100 Days of Solidity” challenge.

  • Celebrate your achievements and plan your next steps in Solidity development.

It’s not going to be easy doing this challenge, but it will be worth it.

Remember, I will be updating each task here and also updating my GitHub repo.

Your thoughts on this challenge are welcome in the comment section. Share this challenge with your friends, too.

Don’t forget to hit the "follow" button to see my future writeups.

20
Subscribe to my newsletter

Read articles from Favour Ajaye directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Favour Ajaye
Favour Ajaye

smart contract developer