Skip to content

levblanc/web3-blockchain-solidity-course-js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


Logo

Web3, Full Stack Solidity, Smart Contract & Blockchain development with JavaScript

My Web3 full stack Solidity smart contract & blockchain development journey along with
» this course from Patrick Collins


About The Project

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.

Getting Started

  1. 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
  1. Install dependencies with yarn install or npm install

Skills Acquired

Solidity Remix Javascript NextJS React NodeJS

Hardhat EthersJS Ganache Chai Mocha AAVE Chainlink Alchemy

IPFS Moralis The Graph Apollo GraphQL Wagmi RainbowKit

Full Course Journey

challenge-00

Milestones

  • Blockchain basics
  • Solidity basics - languange syntax, gas & transactions
  • Compile & Deploy contracts (VM and Testnet)
  • Chainlink price feeds

Skills

Solidity Chainlink Remix

challenge-01

Milestones

  • 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

Skills

Solidity EthersJS Ganache JavaScript TypeScript NodeJS Alchemy

challenge-02

Milestones

  • 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

Skills

Solidity JavaScript TypeScript Hardhat Chai Mocha

challenge-03

Milestones

  • 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

Skills

Solidity JavaScript Hardhat Chai Mocha Chainlink

challenge-04

Milestones

  • 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

Skills

Solidity JavaScript TypeScript Hardhat Chai Mocha Chainlink

challenge-05

Milestones

  • 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

Skills

Solidity JavaScript ReactJS NextJS Moralis IPFS

challenge-06

Milestones

  • Create ERC20 token manually, refering to
    • tutorial on ethereum.org
    • OpenZeppelin
  • Create ERC20 token with OpenZeppelin template

Skills

Solidity JavaScript Hardhat Chai Mocha

challenge-07

Milestones

  • 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

Skills

Solidity JavaScript Hardhat Chai Mocha Aave

challenge-08

Milestones

  • 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

Skills

Solidity JavaScript Hardhat Chai Mocha Chainlink Pinata

challenge-09

Milestones

  • 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

Skills

Solidity JavaScript Hardhat Chai Mocha Pinata

challenge-10

Milestones

  • Setup subgraph env
  • Build a subgraph to handle the events emit from NFT marketplace contract
  • Deploy to Subgraph Studio on The Graph

Skills

TheGraph GraphQL

challenge-11

view marketplace app in action

Milestones

  • 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

Skills

Solidity JavaScript ReactJS NextJS TheGraph ApolloGraphQL GraphQL Rainbow Wagmi Antd

challenge-12

Milestones

Skills

Solidity JavaScript Hardhat Chai Mocha Chainlink

challenge-13

Milestones

Skills

Solidity TypeScript Hardhat OpenZeppelin

challenge-14

Milestones

  • 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

Skills

Solidity TypeScript Hardhat OpenZeppelin Slither Echnida