spo0ds
Journey-to-become-a-Blockchain-Engineer
Solidity

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

Last updated Jul 1, 2026
942
Stars
191
Forks
1
Issues
0
Stars/day
Attention Score
41
Language breakdown
No language data available.
โ–ธ Files click to expand
README

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

| | A Live Ethereum Transaction | | - Wallet Creation | | - Etherscan | | - Multiple Accounts | | - Public and private keys, as well as mnemonics | | - 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/What Happens Inside 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 | | 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

| | 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 | | - Overrides | | - Recap | |

Day 6

| | 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 | | - Libraries | | - Advanced Solidity Immutable & Constant | | - Custom Errors | | - Receive & Fallback | |

Day 8

| | 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(waitfortransaction_reciept) | | - interact/work with thee contract | | - Address & ABI | | - Retrieve() , Call & Transact | | - Store function | | - Creating Transaction(Store_transaction) | | - Signing Transaction(signedstoretxn) | | - Sending Transaction(sendstoretx,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

| | 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

| | 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

| | 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 | | - contracttomock | | - 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 | | - testcantenterunlessstarted | | - testcanstartandenter_lottery | | - testcanend_lottery | | - testcanpickwinnercorrectly | | - Events and Logs | | - callBackWithRandomness | | - Integration Test | | - Test deployment | | - Topics | | - Conftest.py | |

Day 15

| | Chainlink Mix | | ERC20s, EIPs, and Token Standards | | - Why make an ERC20? | | - How do we build one of these tokens? | | - Solidity 0.8 | | - 1deploytoken.py | |

Day 16

| | 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

| | 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 | | - deployandcreate.py | | - IPFS companion | | - Testing | | - What else with NFTs? | |

Day 19

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

Day 20

| | - Advanced deployandcreate.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

| | 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 | | - getencodefunction | | - Assigning V2 to proxy | | - Upgrade Python Function | | - Testing our upgrades | | - Testing our proxy | | - Upgrades on a testnet | |

Day 24

| | Full Stack Defi | | - Staking and Depositing | | - DappToken.sol | | - TokenFarm.sol | | - tokenIsAllowed | | - Valued Staked Tokens | | - issueTokens | | - getUserTotalValue | |

Day 25

| | - unStakeTokens | | - Can this be reentrancy attacked? | | - Scripts and Tests | |

Day 26

| | - Testing | |


README truncated. View on GitHub

ยฉ 2026 GitRepoTrend ยท spo0ds/Journey-to-become-a-Blockchain-Engineer ยท Updated daily from GitHub