Welcome to BCD-101, a beginner-friendly blockchain development course focused on teaching smart contract development using Solidity.
This repository contains the list of projects we have completed so far in the course. More will be added as we progress.
π Code:
https://github.com/flowdiary/BCD-101/blob/main/projects/AgeStorage.sol
The Age Storage smart contract introduces the fundamentals of Solidity development and Ethereum storage patterns.
Key concepts covered include:
- State variables
- Mappings
- Dynamic arrays
- Structs and struct arrays
- Adding and retrieving on-chain data
- Removing elements from arrays
This project builds a strong foundation for understanding how data is stored and organized on the blockchain.
π FundMe.sol:
https://github.com/flowdiary/BCD-101/blob/main/projects/remix/FundMe.sol
π PriceConverter.sol:
https://github.com/flowdiary/BCD-101/blob/main/projects/remix/PriceConverter.sol
The FundMe project expands your Solidity knowledge by introducing payable smart contracts, real-time ETH/USD conversion, and safe withdrawal mechanisms.
It demonstrates how to build a contract that collects ETH payments and enforces a minimum USD value using Chainlink price feeds.
Users must send enough ETH to equal at least 5 USD, determined using Chainlinkβs ETH/USD oracle.
Handles:
- Fetching live ETH/USD price
- Converting ETH amounts to USD
- Adjusting decimals
Uses Chainlink Price Feed (Sepolia):
0x694AA1769357215DE4FAC081bf1f309aDC325306The contract maintains:
- A dynamic array of funders
- A mapping from address β amount funded
Only the owner can withdraw all ETH using the secure .call{value: ...}() pattern.
The contract:
- Resets all funders
- Clears the mapping
- Prevents unauthorized access using a modifier
- Uses custom errors for gas savings
Both functions forward ETH transfers to the fund() function, ensuring:
- No ETH is accidentally lost
- Wallets that send ETH without data are supported
More projects will be added soon as the course continues.