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
- 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
- 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)
- Lesson 15: NextJS NFT Marketplace
- Lesson 16: Hardhat Upgrades
- Lesson 17: Hardhat DAOs
- Lesson 18: Security & Auditing
- Welcome to the course!
- Why do you want to embark on this journey?
- Best Practices
- Bitcoin Whitepaper
- Ethereum Whitepaper
- Hybrid Smart Contracts
- Blockchain Oracles
- What is a blockchain
- 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
- 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
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
- 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
- A testnet or mainnet
- Find a faucet here
- Connecting Metamask
- Interacting with Deployed Contracts
- The EVM
๐ป Code: https://github.com/PatrickAlphaC/storage-factory-fcc
๐ป Code: https://github.com/PatrickAlphaC/fund-me-fcc
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:
๐ป 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
๐ป 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
๐ป Code: https://github.com/PatrickAlphaC/html-fund-me-fcc
- Live Server: ExtensionID: ritwickdey.LiveServer
- Metamask Docs
- Web3Provider
- Browserify
- Watchify
- Javascript Promise
๐ป 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
- Chainlink Keepers Docs
- Enum
- Emit Chai Matcher
- Make Hardhat do whatever you want it to
- Special debugging hardhat methods
- Chainlink VRF: 2 LINK
- Chainlink Keepers: 8 LINK
๐ป Code: https://github.com/PatrickAlphaC/nextjs-smartcontract-lottery-fcc
We moving into using NextJS for our front end. NextJS is a React framework for building websites.
- 6 Ways to connect your dapp to a wallet
- NextJS Crash Course
- Other React libraries:
- Other Full Stack Web3 Templates
yarn create next-app .
-
- call, staticcall, delegatecall
- send, transfer, call
๐ป Code: https://github.com/smartcontractkit/hardhat-starter-kit
๐ป Code: https://github.com/PatrickAlphaC/hardhat-erc20-fcc
๐ป Code: https://github.com/PatrickAlphaC/hardhat-defi-fcc
- 5 minute speedrun ethereum ft. XXX
๐ป Code: https://github.com/PatrickAlphaC/hardhat-nft-fcc
1. IPFS / SVG On-Chain
2. Randomization
3. Trading Cards / Stats
4. Challenge
๐ป Code: (In Progress)
1. Using Moralis
2. Using Graph Protocol
๐ป 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
๐ป Code: https://github.com/PatrickAlphaC/hardhat-dao-fcc
1. Encode data
2. Function selectors & signatures
3. abi.encodePacked, vs abi.encode etc
4. Challenge
๐ป 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
- CryptoZombies
- Patrick Collins
- Dapp University
- ChainShot
- Ivan on Tech
- Eat the Blocks
- Austin Griffith
- Nader Dabit
- Ethereum.org
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