From e3b0021740e6c0c83bb2ca03c78d1fbdb8049596 Mon Sep 17 00:00:00 2001 From: PatrickAlphac <54278053+PatrickAlphaC@users.noreply.github.com> Date: Mon, 17 Jan 2022 15:22:15 -0500 Subject: [PATCH] lessons --- README.md | 297 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 297 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..33998f5 --- /dev/null +++ b/README.md @@ -0,0 +1,297 @@ + + + + +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. + +# Resources For This Course +### Questions +- [Github Discussions](https://github.com/smartcontractkit/full-blockchain-solidity-course-py/discussions) + - Ask questions and chat about the course here! +- [Stack Exchange Ethereum](https://ethereum.stackexchange.com/) + - Great place for asking technical questions about Ethereum +- [StackOverflow](https://stackoverflow.com/) + - Great place for asking technical questions overall + +# Lesson 0: Welcome To Blockchain +## What is a Blockchain? +- [Bitcoin Whitepaper](https://bitcoin.org/bitcoin.pdf) +- [Ethereum Whitepaper](https://ethereum.org/en/whitepaper/) +- [Hybrid Smart Contracts](https://blog.chain.link/hybrid-smart-contracts-explained/) +- [Blockchain Oracles](https://betterprogramming.pub/what-is-a-blockchain-oracle-f5ccab8dbd72?source=friends_link&sk=d921a38466df8a9176ed8dd767d8c77d) +- [What is a blockchain](https://www.investopedia.com/terms/b/blockchain.asp) +## Making Your First Transaction +- [Metamask](https://metamask.io/) +- [Etherscan](https://etherscan.io/) +- [Rinkeby Etherscan](https://rinkeby.etherscan.io/) +- [Kovan Etherscan](https://kovan.etherscan.io/) +- Rinkeby Faucet (Check the [link token contracts page](https://docs.chain.link/docs/link-token-contracts/#rinkeby)) + - NOTE: The Chainlink documentation always has the most up to date faucets on their [link token contracts page](https://docs.chain.link/docs/link-token-contracts/#rinkeby). If the faucet above is broken, check the chainlink documentation for the most up to date faucet. +- OR, use the [Kovan ETH Faucet](https://faucets.chain.link/), just be sure to swap your metamask to kovan! +- [Gas and Gas Fees](https://ethereum.org/en/developers/docs/gas/) +- [Wei, Gwei, and Ether Converter](https://eth-converter.com/) +- [ETH Gas Station](https://ethgasstation.info/) +## How Do Blockchains Work? +- [Blockchain Demo](https://andersbrownworth.com/blockchain/) +- [Public / Private Keys](https://andersbrownworth.com/blockchain/public-private-keys/keys) +- [Layer 2 and Rollups](https://ethereum.org/en/developers/docs/scaling/layer-2-rollups/) +- [Decentralized Blockchain Oracles](https://blog.chain.link/what-is-the-blockchain-oracle-problem/) +- [Block Rewards](https://www.investopedia.com/terms/b/block-reward.asp) +- [Run Your Own Ethereum Node](https://geth.ethereum.org/docs/getting-started) +### Consensus +- [Consensus](https://wiki.polkadot.network/docs/learn-consensus) +- [Proof of Stake](https://ethereum.org/en/developers/docs/consensus-mechanisms/pos/) +- [Proof of Work](https://ethereum.org/en/developers/docs/consensus-mechanisms/pow/) +- [Nakamoto Consensus](https://blockonomi.com/nakamoto-consensus/) +- [Ethereum 2 (the merge)](https://ethereum.org/en/eth2/) + + +# Lesson 1: [Welcome to Remix! Simple Storage](https://github.com/PatrickAlphaC/simple_storage) +💻 Code: https://github.com/PatrickAlphaC/simple_storage +### Everything in this section can be read about in the [Solidity Documentation](https://docs.soliditylang.org/en/v0.8.6/index.html) +### [Remix](https://remix.ethereum.org/) +### Basic Solidity +- Versioning +- Compiling +- Contract Declaration +- [Types & Declaring Variables](https://docs.soliditylang.org/en/v0.8.6/types.html) + - `uint256`, `int256`, `bool`, `string`, `address`, `bytes32` +- Default Initializations +- Comments +- Functions +- Deploying a Contract +- Calling a public state-changing Function +- [Visibility](https://docs.soliditylang.org/en/v0.7.3/contracts.html#visibility-and-getters) +- Scope +- View & Pure Functions +- Structs +- Intro to Storage +- Arrays - Dynamic & Fixed sized +- Compiler Errors and Warnings +- Memory +- Mappings +- SPDX License +- Recap +### Deploying to a "Live" network +- A testnet or mainnet +- [Find a faucet here](https://docs.chain.link/docs/link-token-contracts/#rinkeby) +- Connecting Metamask +- Interacting with Deployed Contracts +- The EVM +# Lesson 2: [Storage Factory](https://github.com/PatrickAlphaC/storage_factory) +💻 Code: https://github.com/PatrickAlphaC/storage_factory +### Inheritance, Factory Pattern, and Interacting with External Contracts +- Factory Pattern +- Imports +- Deploy a Contract From a Contract +- Interact With a Deployed Contract +- Recap +# Lesson 3: [Fund Me](https://github.com/PatrickAlphaC/fund_me) +💻 Code: https://github.com/PatrickAlphaC/fund_me +### Payable, msg.sender, msg.value, Units of Measure +- Payable +- [Wei/Gwei/Eth Converter](https://eth-converter.com/) +- msg.sender & msg.value +### Chainlink Oracles +- Decentralized Oracle Network Chainlink + - Blockchains can't make API calls + - Centralized Nodes are Points of Failure +- [data.chain.link](https://data.chain.link/) +- Getting External Data with Chainlink Oracles + - [Chainlink](https://docs.chain.link/) + - [Faucets and Contract Addresses](https://docs.chain.link/docs/link-token-contracts/) + - [Kovan](https://docs.chain.link/docs/link-token-contracts/#kovan) + - [Getting Price Information](https://docs.chain.link/docs/get-the-latest-price/) +### Importing from NPM and Advanced Solidity +- Decimals/Floating Point Numbers in Solidity +- latestRoundData +- Importing from NPM in Remix +- Interfaces + - Introduction to ABIs +- [Getting Price Feed Addresses](https://docs.chain.link/docs/reference-contracts/) +- getPrice +- Tuples + - Unused Tuple Variables +- Matching Units (WEI/GWEI/ETH) +- getConversionRate +- Matching Units (Continued) +- SafeMath & Integer Overflow + - using keyword + - [Libraries](https://docs.soliditylang.org/en/v0.8.6/contracts.html#libraries) + - SafeMath PSA +- Setting a Threshold +- Require +- Revert +- Withdraw Function +- Transfer +- Balance +- this +- Contract Owners +- Constructor +- == +- Modifiers +- Resetting +- for loop +- Array Length +- Forcing a Transaction +- Recap + + +# Lesson 4: [Web3.js Simple Storage]() +💻 Code: +### Installing VSCode, Python, and Web3 +- [Developer Bootcamp Setup Instructions (metamask, vscode, python, nodejs..)](https://chain.link/bootcamp/brownie-setup-instructions) +- [VSCode](https://code.visualstudio.com/download) +- [VSCode Crash Course](https://www.youtube.com/watch?v=WPqXP_kLzpo) +- Extensions +- Short Cuts: + - [VSCode Shortcuts](https://code.visualstudio.com/docs/getstarted/keybindings) + - [VSCode MacOS Shortcuts](https://code.visualstudio.com/shortcuts/keyboard-shortcuts-macos.pdf) +- [Python](https://www.python.org/downloads/) + - Install Troubleshooting +- Terminal +- Making a directory/Folder +- Opening the folder up with VSCode +- Creating a new file +- Syntax Highlights +- Remember to save! +- Setting linting compile version +- VSCode Solidity Settings + - Formatting & Format on Save + - Solidity Prettier + - [Python Black](https://pypi.org/project/black/) + - [pip](https://pypi.org/project/pip/) +### Our First Python Script with Web3.js - Deploying a Contract +- Reading our solidity file +- Running a Python Script in the Terminal +- [MaxOS Shortcuts](https://code.visualstudio.com/shortcuts/keyboard-shortcuts-macos.pdf) +- [Windows Shortcuts](https://code.visualstudio.com/shortcuts/keyboard-shortcuts-windows.pdf) +- [Linux Shortcuts](https://code.visualstudio.com/shortcuts/keyboard-shortcuts-linux.pdf) +- Compiling in Python +- [py-solc-x](https://pypi.org/project/py-solc-x/) + - compile_standard +- Colorized Brackets +- JSON ABI +- Saving Compiled Code +- Formatting JSON +### Interacting with Our Contract in Javascript & Web3.js + + +# Lesson 5: [Hardhat Simple Storage]() +### Hardhat Introduction +### Installing Hardhat +### Testing Basics +### [Hardhat console] +- `brownie console` + + +# Lesson 6: [Hardhat Fund Me]() + +### Introduction +- Setup +### Dependencies, Deploying, and Networks +### Funding and Withdrawing Javascript Scripts +### Testing across networks +### Git +- Tweet it out! + + +# Lesson 7: SmartContract Lottery +💻 Code: + +### Introduction +- Add a `README.md` +- Defining the project +- Is it decentralized? +### `Lottery.sol` + +# Lesson 8: Full Stack Introduction + +# Lesson 9: Full Stack Lottery + +# Lesson 10: [Hardhat Starter Kit](https://github.com/smartcontractkit/hardhat-starter-kit) +💻 Code: https://github.com/smartcontractkit/hardhat-starter-kit + +# Lesson 11: [ERC20s, EIPs, and Token Standards]() +💻 Code: +- +# Lesson 12: [Defi & Aave]() +💻 Code: + +### Defi Intro +- [Defipulse](https://defipulse.com/) +- [Defillama](https://defillama.com/) +- [Aave Testnet Site](https://testnet.aave.com/) +- [Paraswap](https://paraswap.io/) +- Decentralized Exchange + +# Lesson 13: [NFTs]() +💻 Code + +# Lesson 14: NFT Marketplace + +# Lesson 15: [Upgrades](https://github.com/PatrickAlphaC/upgrades-mix) +💻 Code: https://github.com/PatrickAlphaC/upgrades-mix + +# Lesson 16 [DAOs] + +# Lesson 17 [Security] + + +## Where do I go now? +### Learning More +- [CryptoZombies](https://cryptozombies.io/) +- [Dapp University](https://www.youtube.com/channel/UCY0xL8V6NzzFcwzHCgB8orQ) +- [ChainShot](https://www.chainshot.com/courses) +- [Ivan on Tech](https://academy.ivanontech.com/) +- [Eat the Blocks](https://www.youtube.com/channel/UCZM8XQjNOyG2ElPpEUtNasA) +- [Patrick Collins](https://www.youtube.com/channel/UCn-3f8tw_E1jZvhuHatROwA) +- [Austin Griffith](https://www.youtube.com/channel/UC_HI2i2peo1A-STdG22GFsA) +- [Nader Dabit](https://www.youtube.com/user/boyindasouth) +- [Ethereum.org](https://ethereum.org/en/) +### Community +- Twitter +- [Brownie Discord](https://discord.gg/9zk7snTfWe) +- [Ethereum Discord](https://ethereum.org/en/) +- [Chainlink Discord](https://discord.gg/2YHSAey) +- [Reddit ethdev](https://www.reddit.com/r/ethdev/) + +### Hackathons + - [CL Hackathon](https://chain.link/hackathon) + - [ETH Global](https://ethglobal.co/) + - [ETH India](https://twitter.com/ETHIndiaco) + +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