My Web3 full stack Solidity smart contract & blockchain development journey along with
» this course from Patrick Collins
Through out my journey with this course, I keep track of each lesson with Github, pushed my codes to corresponding repos frequently.
The purpose of this master repo is to setup a connecting point of all my repos, and as a demostration/documentation of the new skills acquired and the roadmaps achieved.
- Clone your target repo
# Repo links can be found in each challenge's README.md
# OR
# Click the chalenge badges below
git clone <repo-link-of-target-challenge>
# Example: cloning challenge 0
git clone https://github.com/levblanc/solidity-basics.git
- Install dependencies with
yarn install
ornpm install
- Blockchain basics
- Solidity basics - languange syntax, gas & transactions
- Compile & Deploy contracts (VM and Testnet)
- Chainlink price feeds
- Local development env setup
- Work with Ganache for local blockchain networks
- Work with Ether.js to create wallet & deploy contracts to testnet or mainnet
- Interact with contract functions with Ethers.js
-
.env
file & it's content management - Work with Alchemy as RPC provider
- Verify contract on block explorer UI
- Made everything compadible with Typescript
- Hardhat env setup
- Hardhat networks & local node
- Deploy contracts with Hardhat (local & testnet)
- Programmatic Verification
- Interacting with contracts in Hardhat
- Hardhat tests & coverage reporter
- Made everything compadible with Typescript
- Testing with Chainlink mocks & helper-hardhat-config
- Contract testing with Solidity console.log & VS Code breakpoints
- Storage in Solidity
- Gas Optimizations using storage knowledge
- Staging Tests
- Running Scripts on a Local Node
- Adding scripts to your package.json
- Chainlink VRF (Randomness in Web3)
- Implementing Chainlink VRF - The Request
- Implementing Chainlink VRF - The Fulfill
- Introduction to Chainlink Keepers
- Implementing Chainlink Keepers (checkUpKeep)
- Implementing Chainlink Keepers (performUpKeep)
- Enums
- Use Mock Chainlink VRF Coordinator for unit tests
- Hardhat Methods & "Time Travel"
- Callstatic
- Manual Header to understand how
ConnectButton
works - react-moralis hooks & functions (
useMoralis
&isWeb3Enabled
,useWeb3Contract
&runContractFunction
) - Automatic Constant Value UI Updater
- Calling Functions in NextJS
- Reading & Displaying Contract Data
- Tailwind & Styling
- Create ERC20 token manually, refering to
- tutorial on ethereum.org
- OpenZeppelin
- Create ERC20 token with OpenZeppelin template
- Concepts of ERC, EIP, ERC20
- Creating an ERC20 Token with Openzeppelin
- Concepts of DeFi & Aave
- Programatic Borrowing & Lending
- WETH Wrapped ETH
- Forking Mainnet
- Depositing into Aave
- Borrowing from Aave
- Repaying with Aave
- Visualizing the Transactions (And aTokens) on Etherscan
- Concept of an NFT?
- Basic NFT contract & tests
- Creating an ERC20 Token with Openzeppelin
- Createing a Random IPFS NFT with Chainlink VRF
- Uploading Token Images & Token URIs (metadata) with Pinata
- Base64 encoding / decoding
- EVM opcodes, ABI encoding functions & call functions directly from contract
- Creating a marketplace for ERC721 NFTs
- Concept of 'Pull Over Push' when sending ETH
- Ins & outs of Reentrancy attack
- Solidity Events with indexed params
- Solidity modifiers - review and application on marketplace
- Unit tests for all NFTs
- Scripts to interact with contract functions
- Setup subgraph env
- Build a subgraph to handle the events emit from NFT marketplace contract
- Deploy to Subgraph Studio on The Graph
- Setup NextJS to work with the graph queries and marketplace/dynamicNFT contracts
- Query subgraph and display contract data with GraphQL & Apollo client
- Use RainbowKit for wallet connection
- Use Wagmi to interact with smart contracts
- Build separate pages for displaying, minting and listing NFTs
- Customize UI/UX with Ant Design Components & Tailwind Styling
- Types of Upgrades
- Parameter
- Social Migrate
- Proxy
- Proxy Gotchas
- Metamorphic Upgrades
- Transparent
- UUPS (Universal Upgradable Proxies)
- Diamond
- What is a DAO?
- Walked thru Compound app's governance process
- Built an on-chain DAO with
- governance token
- governor contract (with OpenZeppelin Contracts Wizard)
- timelock contract
- Learn about
slither
as a static and fast auditing tool - Learn about
eth-security-toolbox
as an auditing toolkit and run with docker - Learn about the standard auditing process
- Learn about known attacks and how to avoid them