.outline.md | ||
cronological-updates.txt | ||
README.md |
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
- Github Discussions
- Ask questions and chat about the course here!
- Stack Exchange Ethereum
- Great place for asking technical questions about Ethereum
- StackOverflow
- Great place for asking technical questions overall
Table of Contents
- Resources For This Course
- Table of Contents
- Lesson 0: The Edge of the Rabbit Hole
- Lesson 1: Blockchain Basics
- Lesson 2: Welcome to Remix! Simple Storage
- Lesson 3: Remix Storage Factory
- Lesson 4: Remix Fund Me
- Lesson 5: Ethers.js Simple Storage
- Lesson 6: Hardhat Simple Storage
- Lesson 7: Hardhat Fund Me
- Lesson 8: HTML / Javascript Fund Me (Full Stack / Front End)
- Lesson 9: Hardhat Smart Contract Lottery
- Lesson 10: NextJS Smart Contract Lottery (Full Stack / Front End)
- Lesson 11: Hardhat Starter Kit
- Lesson 12: Hardhat ERC20s
- Lesson 13: Hardhat DeFi & Aave
- Lesson 14: Hardhat NFTs (EVERYTHING you need to know about NFTs)
- Lesson 15: NextJS NFT Marketplace (If you finish this lesson, you are a full-stack MONSTER!)
- Lesson 16: Hardhat Upgrades
- Lesson 17: Hardhat DAOs
- Lesson 18: Security & Auditing
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?
- Bitcoin Whitepaper
- Ethereum Whitepaper
- Hybrid Smart Contracts
- Blockchain Oracles
- What is a blockchain
Making Your First Transaction
- Metamask
- Etherscan
- Rinkeby Etherscan
- Kovan Etherscan
- Rinkeby Faucet (Check the link token contracts page)
- NOTE: The Chainlink documentation always has the most up to date faucets on their link token contracts page. If the faucet above is broken, check the chainlink documentation for the most up to date faucet.
- OR, use the Kovan ETH Faucet, just be sure to swap your metamask to kovan!
- Gas and Gas Fees
- Wei, Gwei, and Ether Converter
- ETH Gas Station
How Do Blockchains Work?
- Blockchain Demo
- Public / Private Keys
- Layer 2 and Rollups
- Decentralized Blockchain Oracles
- Block Rewards
- Advanced Gas
- EIP 1559
- GWEI, WEI, and ETH
- Run Your Own Ethereum Node
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
uint256
,int256
,bool
,string
,address
,bytes32
- Bits and Bytes
- 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
- NodeJS Course
- Javascript Course
- Format your solidity code with:
"[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
- Hardhat Documentation
- DevDependencies vs Dependencies
- @ Sign node modules
- Chain ID List
- Etherscan Verify Tutorial
- Javascript == vs ===
- Hardhat Gas Reporter
- Coinmarketcap API
- Best README Template
- Hardhat-Waffle
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
- Eslint
- Solhint
- Linting Code
- Hardhat Deploy
- Mocking
- Aave Github
- Chainlink Github
- Style Guide
- NatSpec
- Unit Testing
- Waffle Chai Matchers
- Storage Layout
- Purpose of the memory keyword
- Opcodes by Gas
- Ternary
- Github Quickstart
Lesson 8: HTML / Javascript Fund Me (Full Stack / Front End)
💻 Code: https://github.com/PatrickAlphaC/html-fund-me-fcc
- Live Server: ExtensionID: ritwickdey.LiveServer
- Metamask Docs
- Web3Provider
- Browserify
- Watchify
- Javascript Promise
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
Sub-Lesson: Chainlink VRF
Sub-Lesson: Chainlink Keepers
- Chainlink Keepers Docs
- Enum
- Emit Chai Matcher
- Make Hardhat do whatever you want it to
- Special debugging hardhat methods
Recommended LINK amounts for Rinkeby Staging Test:
- 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
- 6 Ways to connect your dapp to a wallet
- NextJS Crash Course
- Other React libraries:
- Other Full Stack Web3 Templates
- React being quite popular
- Why use react?
The Rest of this Lesson
yarn create next-app .
-
- call, staticcall, delegatecall
- send, transfer, call
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
- What is DeFi?
- DefiLlama
- WETH Token Rinkeby Etherscan
- Aave V2 Docs
- DAI
- Uniswap
- WETH Token Mainnet
- Aave Risk Parameters
More DeFi Learnings:
- Speed Run Ethereum
- Defi-Minimal
- Defi Dad
- 5 minute speedrun ethereum ft. Austin Griffith!
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:
-
Backend (Contracts): https://github.com/PatrickAlphaC/hardhat-nft-marketplace-fcc
-
Frontend (Moralis Indexer): https://github.com/PatrickAlphaC/nextjs-nft-marketplace-moralis-fcc
-
Frontend (TheGraph Indexer): https://github.com/PatrickAlphaC/nextjs-nft-marketplace-thegraph-fcc
- Using Moralis
- Using Graph Protocol
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
- Best Practices
- Attacks
- Damn Vulnerable Defi
- Ethernaut
- Some Auditors
Where do I go now?
Learning More
- CryptoZombies
- Patrick Collins
- Dapp University
- ChainShot
- Ivan on Tech
- Eat the Blocks
- Austin Griffith
- Nader Dabit
- Ethereum.org
Community
Hackathons
Be sure to check out project grant programs!
And make today an amazing day!
Improvements from the Python edition:
- Videos are split into 2 -> 15 minute sections
- Javascript & Typescript edition of code
- Deeper explainer of:
- Stackoverflow
- Stack Exchange ETH
- How to ask good questions & get help
- Aave lesson improvements
- Fundme lesson improvements
- Not using sleep to wait for tx to complete
- Front end stuff
- TODO: Explain EIP-1559 at some point... maybe after blockchain explainer, but before coding.
optional JS seciton? Async, Arrow functions, yarn