GithubHelp home page GithubHelp logo

zeisync / journey-to-become-a-blockchain-engineer Goto Github PK

View Code? Open in Web Editor NEW

This project forked from spo0ds/journey-to-become-a-blockchain-engineer

0.0 0.0 0.0 19.15 MB

I'm sharing everything I'm learning to become a Blockchain Engineer

journey-to-become-a-blockchain-engineer's Introduction

Journey-to-become-a-Blockchain-Engineer

I'm sharing everything I'm learning to become a Blockchain Engineer

Blockchain

Day 1

Blockchain
- Bitcoin
- Ethereum
- Smart Contracts
- Bitcoin Vs Ethereum
- Oracle Problem & Solution
- Hybrid Smart Contracts
- Chainlink
- Importance of Ethereum
- Chainlink features
- Summary
Features of blockchain and smart contracts
- Decentralized
- Transparency & Flexibility
- Speed & Efficiency
- Security & Immutability
- Removal of Counterparty risks
- Trust Minimized Agreements
- Summary
DAOs

Day 2

Ethereum Transaction On a Live Blockchain
- Wallet Creation
- Etherscan
- Multiple Accounts
- Mnemonic , Public & Private keys
- Mnemonic vs Private vs Public keys
- Mainnet & Testnets
- Initiating our first Transaction
- Transaction details
- Gas fees, Transaction fees, Gas limit, Gas price
- Gas vs Gas price vs Gas Limit vs Transaction fee
- Gas estimator
How Blockchain works/whats going on Inside the Blockchain
- Hash or Hashing or SHA256
- Block
- Blockchain
- Decentralized/Distributed Blockchain
- Tokens/Transaction History
- Summary

Day 3

Signing and Verifying a Transaction
- Public & Private Keys
- Signatures
- Transactions
- Summary
Concepts are same
- Nodes
- Centralized entity vs Decentralized Blockchain
- Transactions are Listed
- Consensus
- proof of work/Sybil resistance mechanism
- Blocktime
- Chain selection rule
- Nakamoto consensus
- Block Confirmations
- Block rewards & transaction fees
- Sybil attack
- 51% attack
- Drawbacks of pow
- proof of stake/sybil resistance mechanism
- Validators
- pros & cons of pos
- Scalability problem & Sharding solution
- Layer 1 & Layer 2
- Rollups
- Summary

Day 4

Solidity
Lesson 1 - Remix IDE & its features
- Solidity version
- Defining a Contract
- Variable types & Declaration
- Solidity Documentation
- Initializing
- Functions or methods
- Deploying a Contract
- Public , Internal , private , External Visibility
- Modifying a Variable
- Scope
- View functions
- Pure function
- Structs
- Intro to storage
- Arrays
- Dynamic array
- Fixed array
- Adding to an array
- Compiler Errors
- Memory Keyword
- Storage keyword
- Mappings Datastructure
- SPDX license
- Deploying to a live network
- Interacting with deployed contracts
- EVM
- Summary

Day 5

Lesson 2 - StorageFactory
- Factory pattern
- New contract StorageFactory
- Import 1 contract into another
- Deploy a Contract from a Contract
- Track simple storage contracts
- Interacting with Contract deployed Contract
- Calling Store & Retrieve Functions from SF
- Address & ABI
- Compiling & storing in SS through SF
- Adding Retrieve Function
- Compiling
- Making the Code lil bit Simpler
- Additional Note
- Inheritance
- Recap

Day 6

Lesson 3 - Fund me
- purpose of this contract
- Payable function , wei , gwei & ether
- Mapping , msg. sender , msg.value
- Funding
- ETH -> USD /conversion
- Deterministic problem & Oracle solution
- Centralized Oracles
- Decentralized Oracle Networks
- Chainlink Datafeeds
- Chainlink Code documentation on ETH/USD
- Importing Datafeed code from Chainlink NPM package
- Interfaces
- ABI/Application Binary Interface
- Interacting with an Interface Contract
- Finding the Pricefeed Address
- Deploying
- Getprice function
- Tuples
- Typecasting
- deploying
- Clearing unused Tuple Variables & Deploying
- Making the contract look Clean
- Wei/Gwei Standard (Matching Units)
- getting the price using Get conversion rate
- deploying

Day 7

- Safemath & Integer Overflow
- Libraries
- Setting Threshold
- Require statement
- Revert
- Deplying & Transaction
- Withdraw Function
- Transfer , Balance , This
- Deploying
- Owner , Constructor Function
- Deploying
- Modifiers
- Deploying
- Resetting the Funders Balances to Zero
- For loop
- Summary
- Deploying & Transaction
- Forcing a Trasacttion

Day 8

Lesson 4 - Web3. py SimpleStorage
- Limitations of Remix
- VScode , Python , Solidity Setup
- VScode features
- Testing python install & Troubleshooting
- Creating a new folder
- SimpleStorage. sol
- Remember to save
- VScode Solidity Settings
- Python Formatter & settings
- Author's recommended Settings
- working with python
- Reading our solidity file in python
- Running in Python
- Keyboard Shortcuts
- Py-Solc-x
- Importing solcx
- Compiled_sol
- Bracket pair colorized
- pysolcx documentation
- Printing Compiled_sol
- Comparison wih remix (Lowlevelstuffs , ABI)
- Saving Compiled Code/writing
- import Json
- Json formatting/settings
- Deploying in Python (Bytecode , ABI)
- Which Blockchain/Where to deploy
- Ganache Chain
- Ganache UI
- Introduction to Web3. py
- pip install web3
- import web3
- Http/Rpc provider
- Connecting to Ganache(RPC server,Documentation,Chain ID,address,Privatekey)
- Deploy to Ganache
- Building a Transaction
- Nonce
- Getting Nonce
- Create a Transaction
- Transaction Parameters
- Signing Our Transaction(signed_txn)
- Never Hardcode your Private keys
- Environment Variables
- Setting Environment variables
- Limitations of Exporting Environment Variables
- Private key PSA
- Accessing Environment Variables
- .env file, .gitignore, pip install python-dotenv
- load_dotenv()
- Sending the signed Transaction
- Deployment

Day 9

- Block confirmation(wait_for_transaction_reciept)
- interact/work with thee contract
- Address & ABI
- Retrieve() , Call & Transact
- Store function
- Creating Transaction(Store_transaction)
- Signing Transaction(signed_store_txn)
- Sending Transaction(send_store_tx,tx_receipt)
- Deployment
- some nice syntax & deployment
- ganache-cli
- install Nodejs
- install yarn
- Run ganache cli , ganache documentation
- update privatekeys,addresses,http provider
- open new terminal & deploy
- deploy to testnet/mainnet
- Infura, Alchemy
- Create project
- update the rinkeby url, Chain id , address & private key
- Deploying
- summary/recap

Day 10

Lesson 5 - Brownie Simple Storage
- Brownie Intro & Features
- install Brownie
- 1st brownie simplestorage project
- Brownie Folders
- brownie compile & store
- brownie deploy
- brownie runscripts/deploy. py & default brownie network
- brownie Advantages over web3. py in deploying
- getting address & private key using Accounts package
- add default ganache account using index
- add accounts using Commandline
- add accounts using env variables
- adding wallets in yaml file and updating in account
- importing contract simplestorage
- importing & deploying in brownie vs web3. py
- recreating web3 .py script in brownie
- tests
- Deploying to a Testnet
- Brownie console

Day 11

Lesson 6 -Brownie Fund Me
- Initial Setup
- Dependencies
- Remappings
- Rinkeby Deploy Script
- init.py
- Deploying to Rinkeby
- Deploying to ganache
- Mock
- Constructor Parameters

Day 12

- Refactoring
- Deploying to a persistant ganache
- Adding network to brownie
- Withdraw and Fund
- Testing
- Default Network
- Mainnet fork
- Custom mainnet-fork
- Adding to Github
- Where should I run my tests?

Day 13

Lesson 7: SmartContract Lottery
- Decentralized Lottery
- Setup
- Wait..is this really decentralized?
- Could we make it decentralized?
- Chainlink Keepers
- Lottery.sol
- Main functions of Lottery.sol
- address payable[]
- require minimum payment
- getEntranceFee
- Testing
- Enum
- startLottery
- Randomness
- pseudorandom numbers
- True Randomness with Chainlink VRF
- Oracle Gas and Transaction Gas
- Request and Receive
- Kovan
- Gas Estimation Failed
- After Link transaction completes
- After transaction completes
- Request and Receive
- Asynchronous 2 Transactions
- Clarification

Day 14

- endLottery
- returns(type variableName)
- fulfillRandomness
- override
- Modulo(Mod Operation %)
- Lottery Testing
- deploy_lottery.py
- get_account refactored
- contract_to_mock
- Contract.from_abi
- Adding vrfCoordinatorMock
- Start Lottery
- enter_lottery
- end_lottery
- Funding with LINK
- brownie interfaces
- waiting for callback
- Integration Tests Vs Unit Tests
- Unit Testing
- pytest.skip
- test_cant_enter_unless_started
- test_can_start_and_enter_lottery
- test_can_end_lottery
- test_can_pick_winner_correctly
- Events and Logs
- callBackWithRandomness
- Integration Test
- Test deployment
- Topics
- Conftest.py

Day 15

Lesson 8: Chainlink Mix
Lesson 9: ERC20s, EIPs, and Token Standards
- Why make an ERC20?
- How do we build one of these tokens?
- Solidity 0.8
- 1_deploy_token.py

Day 16

Lesson 10: Defi & Aave
- Decentralized Exchange(DEX)
- Depositing tokens/ Lending
- WETHGateway
- Interest Bearing Token (aToken)
- Why borrow?
- Stable Vs Variable Interest Rate
- Reward token / Governance token
- Programmatic interactions with Aave
- Qunt Defi Engineer
- No contract deployments here
- aave_borrow.py
- Converting ETH -> WETH
- Get the WETH interface
- Why not get_contract?

Day 17

- aave_borrow.py
- Lending Pool
- LendingPool Address Provider
- Fixing Importing Dependencies
- deposit function
- getUserAccountData
- liquidation threshold
- Getting DAI conversion rate
- Aave Testnet Token Addresses
- Repaying
- Testing

Day 18

Lesson 11: NFTs
- ERC-721
- Metadata
- Token URI
- Let's start Coding
- Initial Setup
- SimpleCollectible.sol
- Factory Contract
- _safeMint
- How do I "see" the NFT?
- Is this decentralized?
- Ethereum Size and dStorage
- IPFS
- deploy_and_create.py
- IPFS companion
- Testing
- What else with NFTs?

Day 19

Advanced NFT
- Double Inherited Constructor
- tokenIDToBreed
- setTokenURI
- _isApprovedOrOwner
- Best Practice

Day 20

- Advanced deploy_and_create.py
- Refactoring
- Deploying AdvancedCollectible
- Continuing our deploy script
- create_collectible.py
- Back to testing
- Unit Testing

Day 21

- Integration Testing
- create_metadata.py
- get_breed
- sample_metadata.py
- Uploading Image to IPFS
- Download IPFS Command Line
- HTTP IPFS DOCS
- Alternative: Pinata
- Upload to Pinata
- Refactor to not re-upload to IPFS
- Setting the TokenURI
- End to End Mannual Test

Day 22

Lesson 12: Upgrades
- Not Really / Parameterize
- Who the admins?
- Are upgradeable smart contracts decentralized?
- Social YEET / Migration
- Proxies
- Biggest Gotchas
- Transparent Proxy Pattern
- Universal Upgradeable Proxies
- Gas Saver!!
- Diamond Pattern

Day 23

- Coding Upgradeable Smart Contracts
- Box.sol
- Getting Proxy Contracts
- Hooking up a proxy to our implementation contract
- Initializer
- encoding the initializer function
- get_encode_function
- Assigning V2 to proxy
- Upgrade Python Function

journey-to-become-a-blockchain-engineer's People

Contributors

spo0ds avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.