π Complete hands-on blockchain development workshop with working code examples in Python and Solidity.
# Clone the repository
git clone https://github.com/Legumtechnica/blockchain-workshop.git
# Navigate to directory
cd blockchain-workshop-2025
# Install dependencies
pip install -r requirements.txt
# You're ready to go!blockchain-workshop/
βββ day1/ # Day 1: Foundations
β βββ simple_blockchain.py # Build a blockchain from scratch
β βββ create_wallet.py # Generate Ethereum wallets
β βββ sign_message.py # Digital signatures demo
β βββ transaction_demo.py # Send transactions
β βββ hash_demo.py # Hashing examples
β
βββ day2/ # Day 2: Smart Contracts
β βββ HelloWorld.sol # Your first smart contract
β βββ MyToken.sol # ERC-20 token
β βββ SimpleStorage.sol # Storage contract
β βββ deploy_contract.py # Deploy with Web3.py
β βββ interact_contract.py # Interact with contracts
β
βββ requirements.txt # Python dependencies
βββ .gitignore # Git ignore file
βββ README.md # This file
- β How blockchain works under the hood
- β Build a blockchain in Python
- β Cryptographic hashing
- β Public/private key cryptography
- β Create Ethereum wallets
- β Digital signatures
- β Send your first transaction
- β Use MetaMask wallet
- β Explore Etherscan
- β Write smart contracts in Solidity
- β Deploy contracts to Ethereum
- β Create your own ERC-20 token
- β Understand DeFi protocols
- β NFTs and how they work
- β Build a complete dApp
- β Final project
Required:
- Python 3.8 or higher
- pip (Python package manager)
- Code editor (VS Code, PyCharm, etc.)
- Web browser (Chrome/Firefox/Edge)
Optional:
- Git (for cloning repository)
- MetaMask browser extension
1. Install Python Dependencies:
pip install -r requirements.txt2. Verify Installation:
python -c "import web3; print('β
Web3.py installed successfully!')"3. Install MetaMask:
- Go to metamask.io/download
- Install browser extension
- Create wallet (save seed phrase!)
Build a blockchain from scratch in Python:
python day1/simple_blockchain.pyWhat it does:
- Creates genesis block
- Adds blocks to chain
- Validates blockchain integrity
- Demonstrates tamper-proof nature
Try modifying:
- Add your own transactions
- Change difficulty
- Try to tamper with blocks
Generate Ethereum wallets programmatically:
python day1/create_wallet.pyWhat you'll get:
- Ethereum address (public)
- Private key (keep secret!)
- Understanding of key pairs
Learn how transactions are signed:
python day1/sign_message.pyWhat it demonstrates:
- Message signing
- Signature verification
- How blockchain proves ownership
Understand cryptographic hashing:
python day1/hash_demo.pyTry:
- Hash different inputs
- See avalanche effect
- Understand collision resistance
1. Install Extension:
- Visit metamask.io/download
- Click "Install MetaMask"
- Add to your browser
2. Create Wallet:
- Click "Create a Wallet"
- Set a strong password
- CRITICAL: Write down 12-word seed phrase on PAPER
- Store seed phrase securely
3. Switch to Sepolia Testnet:
- Settings β Advanced
- Enable "Show test networks"
- Network dropdown β Select "Sepolia"
4. Get Test ETH:
Option 1: Alchemy Faucet
- Go to sepoliafaucet.com
- Create free account
- Paste your address
- Request 0.5 SepoliaETH
Option 2: QuickNode Faucet
- Go to faucet.quicknode.com/ethereum/sepolia
- Connect Twitter (verification)
- Request test ETH
- β Share your private key or seed phrase
- β Type seed phrase into any website
- β Store keys/phrases digitally (no photos, cloud)
- β Send to "support" (MetaMask never asks)
- β Write seed phrase on paper
- β Store in secure location
- β Use hardware wallet for real funds
- β Double-check addresses before sending
- β Start with small test amounts
# Create blockchain
blockchain = Blockchain()
# Add blocks
blockchain.add_block("Alice β Bob: 1 BTC")
blockchain.add_block("Bob β Charlie: 0.5 BTC")
# Validate
print(f"Valid? {blockchain.is_valid()}")from eth_account import Account
import secrets
# Generate private key
private_key = "0x" + secrets.token_hex(32)
# Create account
account = Account.from_key(private_key)
print(f"Address: {account.address}")
print(f"Private Key: {private_key}")from eth_account.messages import encode_defunct
# Encode message
message = encode_defunct(text="Hello Blockchain")
# Sign
signed = account.sign_message(message)
# Verify
recovered = Account.recover_message(message, signature=signed.signature)
print(f"Match? {recovered == account.address}")- Remix IDE - Smart contract development
- Etherscan - Blockchain explorer
- MetaMask - Crypto wallet
- Hardhat - Development environment
- CryptoZombies - Learn Solidity
- Buildspace - Web3 projects
- Alchemy University - Free courses
Problem: ModuleNotFoundError: No module named 'web3'
Solution:
pip install web3 eth-accountProblem: MetaMask not connecting Solution:
- Check browser permissions
- Try different browser
- Reinstall extension
Problem: Faucet not working Solution:
- Try alternative faucet
- Wait 24 hours (daily limit)
- Ask instructor for test ETH
Problem: Transaction pending forever Solution:
- Check network (must be Sepolia)
- Increase gas fee
- Cancel and resend
Problem: Can't find seed phrase Solution:
β οΈ Without seed phrase, wallet is LOST- Create new wallet
- Never lose seed phrase again!
- Don't rush - Take time to understand each concept
- Ask questions - No question is stupid
- Experiment - Modify code, break things, learn
- Take notes - You'll want to reference later
- Network - Connect with other participants
- Practice after - Repetition builds mastery
- Test everything - Run all code before workshop
- Have backups - Pre-deployed contracts, funded wallets
- Go slow - Especially on security topics
- Check understanding - Ask questions frequently
- Be patient - People learn at different speeds
- Share stories - Real-world examples resonate
Found a bug? Have an improvement? Contributions welcome!
# Fork the repo
# Create feature branch
git checkout -b feature/improvement
# Make changes
git commit -am 'Add improvement'
# Push to branch
git push origin feature/improvement
# Create Pull RequestMIT License - See LICENSE file for details
Workshop Instructor: Parijat Sharma
Company: QuillDB Solutions Private Limited
Email: contact@quilldb.io
Website: quilldb.io
- Ethereum Foundation for documentation
- OpenZeppelin for secure contracts
- Web3.py maintainers
- Remix IDE team
- All workshop participants!
- 9:00 - 10:30 | Introduction to Blockchain
- 10:30 - 10:45 | Break
- 10:45 - 12:30 | Blockchain Architecture & Crypto
- 12:30 - 1:30 | Lunch
- 1:30 - 3:00 | Hands-On: Build Blockchain
- 3:00 - 3:15 | Break
- 3:15 - 5:00 | MetaMask & First Transaction
- 9:00 - 10:30 | Smart Contracts & Solidity
- 10:30 - 10:45 | Break
- 10:45 - 12:30 | Deploy Your Contract
- 12:30 - 1:30 | Lunch
- 1:30 - 3:00 | DeFi & NFTs
- 3:00 - 3:15 | Break
- 3:15 - 5:00 | Final Project & Presentations
If you found this workshop helpful, please star the repository!
# Clone this amazing repo
git clone https://github.com/Legumtechnica/blockchain-workshop.git
# Star on GitHub
# Click the β Star button on GitHubHappy Learning! π
Remember: With great blockchain power comes great responsibility. Use wisely!
Last Updated: December 2025
Version: 1.0