Learn Blockchain, Solidity, and Full Stack Web3 Development with Javascript
Go to file
PatrickAlphac 40c31e9831 updated
2022-04-18 21:14:12 -04:00
.outline.md wip 2022-03-06 23:31:25 -05:00
cronological-updates.txt added updates file 2022-03-26 11:52:33 -04:00
README.md updated 2022-04-18 21:14:12 -04:00

Welcome to the repository for the Ultimate Solidity, Blockchain, and Smart Contract - Beginner to Expert Full Course | Javascript Edition FreeCodeCamp course!

All code references have both a javascript and a typescript edition.

Recommended Testnet: Rinkeby

Testnet Faucets: https://faucets.chain.link

Resources For This Course

Questions

Table of Contents

Lesson 0: The Edge of the Rabbit Hole

  • Welcome to the course!
  • Why do you want to embark on this journey?
  • Best Practices

Lesson 1: Blockchain Basics

What is a Blockchain?

Making Your First Transaction

How Do Blockchains Work?

Consensus

Lesson 2: Welcome to Remix! Simple Storage

💻 Code: https://github.com/PatrickAlphaC/simple-storage-fcc

Everything in this section can be read about in the Solidity Documentation

Remix

Basic Solidity

  • Versioning
  • Compiling
  • Contract Declaration
  • Types & Declaring Variables
  • Default Initializations
  • Comments
  • Functions
  • Deploying a Contract
  • Calling a public state-changing Function
  • Visibility
  • Scope
  • View & Pure Functions
  • Structs
  • Intro to Storage
  • Arrays - Dynamic & Fixed sized
  • Compiler Errors and Warnings
  • Memory, storage, calldata
  • Mappings
  • SPDX License
  • Recap

Deploying to a "Live" network

  • A testnet or mainnet
  • Find a faucet here
  • Connecting Metamask
  • Interacting with Deployed Contracts
  • The EVM

Lesson 3: Remix Storage Factory

💻 Code: https://github.com/PatrickAlphaC/storage-factory-fcc

Lesson 4: Remix Fund Me

💻 Code: https://github.com/PatrickAlphaC/fund-me-fcc

Lesson 5: Ethers.js Simple Storage

Installation & Setup!

Windows Only:

💻 Code: https://github.com/PatrickAlphaC/ethers-simple-storage-fcc

    "[solidity]": {
        "editor.defaultFormatter": "NomicFoundation.hardhat-solidity"
    },

In your .vscode/settings.json file.

More information:

Lesson 6: Hardhat Simple Storage

💻 Code: https://github.com/PatrickAlphaC/hardhat-simple-storage-fcc

Typescript:

yarn add --dev @typechain/ethers-v5 @typechain/hardhat @types/chai @types/node @types/mocha ts-node typechain typescript

Lesson 7: Hardhat Fund Me

💻 Code: https://github.com/PatrickAlphaC/hardhat-fund-me-fcc

Lesson 8: HTML / Javascript Fund Me (Full Stack / Front End)

💻 Code: https://github.com/PatrickAlphaC/html-fund-me-fcc

Lesson 9: Hardhat Smart Contract Lottery

💻 Code: https://github.com/PatrickAlphaC/hardhat-smartcontract-lottery-fcc

  • Install dependencies:
yarn add --dev @nomiclabs/hardhat-ethers@npm:hardhat-deploy-ethers ethers @nomiclabs/hardhat-etherscan @nomiclabs/hardhat-waffle chai ethereum-waffle hardhat hardhat-contract-sizer hardhat-deploy hardhat-gas-reporter prettier prettier-plugin-solidity solhint solidity-coverage dotenv

Sub-Lesson: Events & Logging

  • Chainlink VRF: 2 LINK
  • Chainlink Keepers: 8 LINK

Lesson 10: NextJS Smart Contract Lottery (Full Stack / Front End)

💻 Code: https://github.com/PatrickAlphaC/nextjs-smartcontract-lottery-fcc Live Demo IPFS: ipfs://QmXwACyjcS8tL7UkYwimpqMqW9sKzSHUjE4uSZBSyQVuEH Live Demo Fleek: https://fancy-dream-3458.on.fleek.co/

We moving into using NextJS for our front end. NextJS is a React framework for building websites.

Optional Sub-Lesson: Full Stack Development & Other Libraries

The Rest of this Lesson

yarn create next-app .

Lesson 11: Hardhat Starter Kit

💻 Code: https://github.com/smartcontractkit/hardhat-starter-kit

Lesson 12: Hardhat ERC20s

💻 Code: https://github.com/PatrickAlphaC/hardhat-erc20-fcc

Sub-Lesson: What is an ERC20?

Rest of the Lesson

Lesson 13: Hardhat DeFi & Aave

💻 Code: https://github.com/PatrickAlphaC/hardhat-defi-fcc

More DeFi Learnings:

Lesson 14: Hardhat NFTs (EVERYTHING you need to know about NFTs)

💻 Code: https://github.com/PatrickAlphaC/hardhat-nft-fcc

1. IPFS / SVG On-Chain
2. Randomization
3. Trading Cards / Stats
4. Challenge

Lesson 15: NextJS NFT Marketplace (If you finish this lesson, you are a full-stack MONSTER!)

💻 Code:

Lesson 16: Hardhat Upgrades

💻 Code: https://github.com/PatrickAlphaC/hardhat-upgrades-fcc

1.  Parameter
2.  Social Migrate
3.  Proxy
    1.  [Metamorphic Upgrades](https://github.com/PatrickAlphaC/hardhat-metamorphic-upgrades-fcc)
        1. Collisions
        2. [opcodes](https://etherscan.io/opcode-tool)
    2.  Transparent
    3.  UUPS
    4.  Diamond
4.  Low level `delegatecall`
5.  Gas optimizations

Lesson 17: Hardhat DAOs

💻 Code: https://github.com/PatrickAlphaC/hardhat-dao-fcc

1. Encode data
2. Function selectors & signatures
3. abi.encodePacked, vs abi.encode etc
4. Challenge

Lesson 18: Security & Auditing

💻 Code: https://github.com/PatrickAlphaC/hardhat-security-fcc

1. Reentrancy
2. Flash Loans Attacks
3. Top Tools
4. Challenge

Where do I go now?

Learning More

Community

Hackathons

Be sure to check out project grant programs!

And make today an amazing day!

Improvements from the Python edition:

  1. Videos are split into 2 -> 15 minute sections
  2. Javascript & Typescript edition of code
  3. Deeper explainer of:
    1. Stackoverflow
    2. Stack Exchange ETH
    3. How to ask good questions & get help
  4. Aave lesson improvements
  5. Fundme lesson improvements
  6. Not using sleep to wait for tx to complete
  7. Front end stuff
  8. TODO: Explain EIP-1559 at some point... maybe after blockchain explainer, but before coding.

optional JS seciton? Async, Arrow functions, yarn