Study Plan For Developers To Be A Full-Stack Dapp Developer

Yehia Tarek
Coinmonks
5 min readDec 11, 2022

--

I created this study plan for any software engineer or developer to learn everything related to blockchain and decentralized applications. After finishing this plan, you can start looking for a job as a junior full-stack Dapp developer. I see many tutorials saying that after completing this roadmap, projects, and documentation, you will be a senior, which I don’t believe. To be a senior, you need real-life expertise in mainnet(production) and experience working with the development team, not just doing side projects and learning independently.

Pre-requisites

  • The basics of any object-oriented programming language.
  • Nodejs and Npm.
  • Frontend basics. If you are interested in making a full-stack decentralized application, not just smart contracts.

Agenda

  • Decentralized technology and blockchain
  • Ethereum
  • Solidity
  • Framework And Toolkit
  • Auditing
  • Monitoring with the Graph Protocol and Forta
  • Frontend integration

Decentralized technology and blockchain

Knowing the basics will help you be faster. Many people jump into coding, and it takes them forever to do a simple app. If you know the basics, you will have a better way to debug. And you will be a better developer because good developers have strong fundamentals.

  1. Learn the difference between decentralized, distributed, and centralized systems.
  2. Search for all blockchain use cases.
  3. Symmetric and asymmetric encryption
    - Hash Functions.
    - Digital SignaturesBlockchain accounts. (public and private addresses)
  4. Blockchain accounts. (public and private addresses)
  5. Consensus Mechanism
    - Proof Of Work.
    - Proof Of Stake
    - Proof Of Authentication
    - Proof Of History
  6. Permissioned and permissionless blockchains.
  7. [Assignment]:
    Submit five project ideas:
    Three of them need the blockchain, and two don’t.
  8. [External Resources]:
    Bitcoin Whitepaper Exercises
    Encryption Exercises
    Teach Yourself Crypto

Ethereum

I recommend Ethereum for anyone starting on the blockchain. Because it is the first blockchain to support smart contracts, learning the Ethereum blockchain will help you with all EVM-compatible blockchains.

  1. Ethereum Virtual Machine
  2. Blocks in Ethereum
  3. Account types.
    - External Owned Account (EOA).
    - Smart Contract Account
  4. Ethereum 2.0.
  5. Smart contracts.
  6. Solidity and Vyper.
  7. [Assignment]:
    Read Ethereum 101
    Do some challenges on eth.build
  8. [External Resources]:
    Ethereum Whitelist
    The Ethereum Book

Solidity

For someone who already knows OOP, it will be easy for you to start with solidity. Just a matter of syntax. But I don’t recommend this. Solidity has different compilation versions, unique patterns, and security practices; you will understand them if you have Ethereum virtual machine basics and Solidity basics before looking at the syntax.

  1. Smart contract structure.
  2. ABI.
  3. Compilers.
  4. Remix and run your first smart contract app.
  5. Variables type.
  6. Storage and memory.
  7. Events.
  8. Functions.
  9. Mapping.
  10. Modifiers.
  11. Inheritance & Interfaces
  12. [Assignment]:
    Create a to-do list smart contract that applies to all CRUD processes.
  13. Difference between call, delegate call, and callCode.
  14. [External Resources]:
    Solidity By Example
    CryptoZombies
    BuildSpace

Framework And Toolkit

  1. Foundry: a toolkit for Ethereum application development.
  2. [Reference]:
    Foundry book
  3. How to use unit test cases for your smart contract?
  4. What are tokens, and what are their different standard?
    — ERC20
    — ERC721
    — ERC1155
    — ERC777
    — ERC4626
  5. Openzepplin library. (ownership, roles, access, and tokens)
  6. [Assignment]:
    Deploy your first token with a 100K supply with the burnable feature using the Openzepplin library.
  7. [Assignment]:
    Deploy your NFT using the Openzepplin library only.
  8. Deploy your remote node with Ganache or hardhat node.
  9. Testnets.
  10. Continuous Integration with the foundry.
  11. Smart contract verification.
  12. How to upgrade your smart contract and use the proxy.
  13. [Assignment]:
    Solve some challenges on Speed Run Ethereum

Auditing

  1. Smart contract security practices:
    a) Reeterancy Attack
    b) Denial of Service Attack
    c) Overflow/Underflow
    e) Locked Ether
  2. Fuzz Testing.
  3. Slither for security testing.
  4. [Assignment]:
    Create a Voting app with candidates and voters:
  • Candidates should pay vote erc20 tokens to participate as candidates.
  • The intelligent contract owner should add voters to vote.
  • Voters receive NFT as a reward for voting.
  • Candidates can’t vote.
  • Unit test cases should cover all transactions on the test file.
  • Should have CI for unit testing.
  • We should deploy the smart contract at least locally.
    [Bonus]:
  • Deploy your smart contracts on Testnet.
  • Verify your smart contract and interact with it from the blockchain explorer.
  • Use a proxy smart contract to upgrade your smart contract.

[External Resources]:
Secureum
Capture The Ether
Ethernaut
Openzeppelin Youtube Playlist

Monitoring with the Graph Protocol and Forta

The graph protocol: Querying data from the smart contract is computationally expensive from the frontend side and unscalable for complex queries. The graph protocol fixes this problem and offers an easy way to read the ipfs hash from the smart contract.

Forta Bots: After deploying your smart contracts, you need to put some alerts. To be on the safe side, you get notified instantly if anything goes wrong. For example, In our voting app, create an alert if a voter voted two times or if candidates collected many votes more than expected.

  1. Learn about Forta.
  2. What is the graph protocol, and why use it?
  3. Use the Apollo client to connect the subgraph.
  4. [Assignment] :
  • Check the Uniswap subgraph on subgraph studio ​​
  • Query all available swapping pairs by the symbol.
  • Get all minted by this account 0x7a250d5630b4cf539739df2c5dacb4c659f2488d
  • Do the same queries on the browser console.

5. [External Resources]:
Forta ChainStack Article
The Graph Academy

Frontend

How to interact with smart contracts from your React app and use third parties like IPFS.

  1. Wallet connections with web3.js/ether.js
  2. Wallet connections with React.
  3. [Assignment]
    Create a navbar to show the user’s current Ethereum balance and the address (first four characters).
  4. JSON-RPC calls.
  5. You should understand the basics first and implement the connection ad smart contract querying & submission using ether.js/web3js only. Then after learning, you can start using one of the new packages. Like Wagami React Hooks, Or try using Thirdweb. Thirdweb is built on Wagami with some extra react components to interact with different tokens and DAO.
  6. [Assignment]
    See voting results for each candidate and implement vote transactions on the front end.
  7. IPFS fundamentals protoSchool has a very good course for it.
  8. Ipfs fetch/upload data.
  9. How to use Ipfs with your smart contract.
  10. [Assignment]:
    Create a mint NFT website with two pages, one to see the current NFTs and the second to mint a new one.

[Eternal Resources]:
Write and Deploy NFTs This resource uses Hardhat instead of the foundry, which is not a big deal as they are both frameworks for smart contract developments, and it is a good exercise to get used to both of them.

[Bonus]: Deploy all static websites pages on IPFS

New to trading? Try crypto trading bots or copy trading

--

--