- Welcome to the course!
- Best Practices
- Section Complete
- What is a Blockchain? What does a blockchain do?
- The Purpose Of Smart Contracts
- Other Blockchain Benefits
- What have Smart Contracts done so far?
- Making Your First Transaction
- Gas I: Introduction to Gas
- How Do Blockchains Work?
- Signing Transactions
- Gas II
- High-Level Blockchain Fundamentals
- Section Complete
- Introduction
- Setting Up Your First Contract
- Basic Solidity: Types
- Basic Solidity: Functions
- Basic Solidity: Arrays & Structs
- Basic Solidity: Compiler Errors and Warnings
- Memory, Storage, Calldata (Intro)
- Mappings
- Deploying your First Contract
- The EVM & A Recap of Lesson 2
- Section Complete
- Introduction
- Basic Solidity: Importing Contracts into other Contracts
- Basic Solidity: Interacting with other Contracts
- Basic Solidity: Inheritance & Overrides
- Lesson 3 Recap
- Section Complete
- Introduction
- Sending ETH Through a Function & Reverts
- Chainlink & Oracles
- Review of Sending ETH and working with Chainlink
- Interfaces & Price Feeds
- Importing from GitHub & NPM
- Floating Point Math in Solidity
- Basic Solidity: Arrays & Structs II
- Review of Interfacs, Importing from GitHub, & Math in Solidity
- Libraries
- SafeMath, Overflow Checking, and the "unchecked" keywork
- Basic Solidity: For Loop
- Basic Solidity: Resetting an Array
- Sending ETH from a Contract
- Basic Solidity: Constructor
- Basic Solidity: Modifiers
- Testnet Demo
- Advanced Solidity
- Immutable & Constant
- Custom Errors
- Receive & Fallback Functions
- Lesson 4 Recap
- Section Complete
- Effective Debugging Strategies & Getting Help
- How to Debug Anything Video
- Installation & Setup
- Mac & Linux Setup
- Windows Setup
- Gitpod
- Local Development Introduction
- Optional Javascript Crash Courses
- Tiny Javascript Refresher
- Asynchronous Programming in Javascript
- Compiling our Solidity
- Ganache & Networks
- Introduction to Ethers.js
- A Note on the await Keyword
- Adding Transaction Overrides
- Transaction Receipts
- Sending a "raw" Transaction in Ethersjs
- Interacting with Contracts in Ethersjs
- Environment Variables
- Better Private Key Management
- Optional Prettier Formatting
- Deploying to a Testnet or a Mainnet
- Verifying on Block Explorers from the UI
- Alchemy Dashboard & The Mempool
- Lesson 5 Recap
- Typescript Ethers Simple Storage
- Section Complete
- Introduction
- Hardhat Setup
- Troubleshooting Hardaht Setup
- Hardhat Setup Continued
- Deploying SimpleStorage from Hardhat
- Networks in Hardhat
- Programatic Verification
- Interacting with Contracts in Hardhat
- Artifacts Troubleshooting
- Custom Hardhat Tasks
- Hardhat Localhost Node
- The Hardhat Console
- Hardhat Tests
- Hardhat Gas Reporter
- Solidity Coverage
- Hardhat Waffle
- Lesson 6 Recap
- Typescript Hardhat Simple Storage
- Section Complete
- Introduction
- Hardhat Setup - Fund Me
- Linting
- Hardhat Setup - Fund Me - Continued
- Importing from NPM
- Hardhat Deploy
- Mocking
- Utils Folder
- Testnet Demo - Hardhat Fund Me
- Solidity Style Guide
- Testing Fund Me
- Breakpoints & Debugging
- Gas III:
- console.log & Debugging
- Testing Fund Me II
- Storage in Solidity
- Gas Optimizations using Storage Knowledge
- Solidity Chainlink Style Guide
- Storage Review
- Staging Tests
- Running Scripts on a Local Node
- Adding Scripts to your package.json
- Pushing to GitHub
- 🐸🐦 Tweet Me (add your repo in)!
- Section Complete
- Introduction
- How Websites work with Web3 Wallets
- HTML Setup
- Connecting HTML to Metamask
- Javascript in it's own file
- ES6 vs Nodejs
- Sending a transaction from a Website
- Resetting an Account in Metamask
- Listening for Events and Completed Transactions
- Input Forms
- Reading from the Blockchain
- Withdraw Function
- Lesson 8 Recap
- Optional Links
- Section Complete
- Introduction
- Hardhat Setup - Smart Contract Lottery
- Raffle.sol Setup
- Introduction to Events
- Events in Raffle.sol
- Introduction to Chainlink VRF
- Sub-Lesson: Chainlink VRF
- Implementing Chainlink VRF - Introduction
- Hardhat Shorthand
- Implementing Chainlink VRF - The Request
- Implementing Chainlink VRF - The FulFill
- Modulo
- Introduction to Chainlink Keepers
- Implementing Chainlink Keepers - checkUpkeep
- Enums
- Implementing Chainlink Keepers - checkUpkeep continued
- Implementing Chainlink Keepers - performUpkeep
- Code Cleanup
- Deploying Raffle.sol
- Mock Chainlink VRF Coordinator
- Continued
- Raffle.sol Unit Tests
- Testing Events & Chai Matchers
- Continued I
- Hardhat Methods & Time Travel
- Continued II
- Callstatic
- Continued III
- Massive Promise Test
- ontinued IV
- Raffle.sol Staging Tests
- Testing on a Testnet
- Recommended LINK amounts for Sepolia Staging Test:
- Conclusion
- Typescript - Smart Contract Lottery
- Section Complete
- Introduction
- Optional Sub-Lesson: Full Stack Development & Other Libraries
- NextJS Setup
- Manual Header I
- React Hooks
- Manual Header II
- useEffect Hook
- Local Storage
- isWeb3EnabledLoading
- web3uikit
- Introduction to Calling Functions in Nextjs
- Automatic Constant Value UI Updater
- runContractFunction
- useState
- Calling Functions in NextJS
- useNotification
- Reading & Displaying Contract Data
- A Note about onSuccess
- A Challenge to You
- Tailwind & Styling
- Introduction to Hosting your Site
- IPFS
- Hosting on IPFS
- Hosting on IPFS & Filecoin using Fleek
- Filecoin Overview
- Lesson 10 Recap
- Section Complete
- Overview of Hardhat Starter Kit
- Section Complete
- What is an ERC? What is an EIP?
- What is an ERC20?
- Manually Creating an ERC20 Token
- Creating an ERC20 Token with Openzeppelin
- Lesson 12 Recap
- Section Complete
- What is DeFi?
- What is Aave?
- Programatic Borrowing & Lending
- WETH - Wrapped ETH
- Forking Mainnet
- Depositing into Aave
- Borrowing from Aave
- Repaying with Aave
- Visualizing the Transactions
- Lesson 13 Recap
- Happy Bow-Tie Friday with Austin Griffith
- More DeFi Learnings:
- Section Complete
- What is an NFT?
- Code Overview
- Hardhat Setup
- Basic NFT
- Write Tests
- Random IPFS NFT
- Mapping Chainlink VRF Requests
- Creating Rare NFTs
- Setting the NFT Image
- Setting an NFT Mint Price
- Deploy Script
- Uploading Token Images with Pinata
- Uploading Token URIs (metadata) with Pinata
- Deploying
- Tests
- Dynamic SVG On-Chain NFT
- What is an SVG?
- Initial Code
- Base64 Encoding
- Advanced: EVM Opcodes, Encoding, and Calling
- abi.encode & abi.encodePacked
- Introduction to Encoding Function Calls Directly
- Introduction to Encoding Function Calls Recap
- Encoding Function Calls Directly
- Creating an NFT TokenURI on-Chain
- Making the NFT Dynamic
- Deploy Script
- Deploying the NFTs to a Testnet
- Lesson 14 Recap
- Section Complete
- Introduction
- Part I: NFT Marketplace Contracts
- Hardhat Setup
- NftMarketplace.sol
- Reentrancy
- NftMarketplace.sol - Continued
- NftMarketplace.sol - Deploy Script
- NftMarketplace.sol - Tests
- NftMarketplace.sol - Scripts
- Part II: Moralis Front End
- What is Moralis?
- NextJS Setup
- Adding Tailwind
- Introduction to Indexing in Web3
- Connecting Moralis to our Local Hardhat Node
- Moralis Event Sync
- Reset Local Chain
- Moralis Cloud Functions
- Practice Resetting the Local Chain
- Moralis Cloud Functions II
- Querying the Moralis Database
- Rendering the NFT Images
- Update Listing Modal
- Buy NFT Listing
- Listing NFTs for Sale
- Part III: TheGraph Front End
- Introduction
- What is The Graph?
- Building a Subgraph
- Deploying our Subgraph
- Reading from The Graph
pick up at 1:04:47:22