A comprehensive multi-blockchain faucet system developed for Vilnius University. This platform provides free testnet tokens for various blockchain networks, educational tools, and DApp hosting capabilities.
-
EVM-Compatible Networks:
- Ethereum Sepolia Testnet
- zkSync Sepolia Testnet
- Polygon zkEVM Cardona Testnet
- Linea Sepolia Testnet
- Ethereum Hoodi Testnet
-
UTXO-Based Networks:
- Bitcoin Testnet3
- Bitcoin Testnet4
- Litecoin Testnet4
- Blockchain Simulator: Interactive SHA-256 blockchain demonstration
- Transaction Graph Visualizer: Explore cryptocurrency transaction flows (See more)
- DApp Hosting: File browser and hosting for decentralized applications
- 51% Attack Tool: Visual interface for 51% attack on LTC Testnet4 network (See more)
- Docker and Docker Compose
- Infura API key (for EVM networks)
- Etherscan API key (optional, for enhanced features)
git clone https://github.com/kaunofakultetas/crypto-faucet.git
cd crypto-faucetCopy the sample configuration:
cp docker-compose.yml.sample docker-compose.ymlEdit docker-compose.yml and update the following environment variables:
environment:
- INFURA_PROJECT_ID=your_infura_project_id
- ETHERSCAN_API_KEY=your_etherscan_api_key
- FAUCET_PRIVATE_KEY=your_private_key_here
- DEFAULT_WALLET_ETH_AMOUNT=0.2
- APP_PASSWORD_1=your_secure_password./runUpdateThisStack.sh- Main Interface:
http://<server-ip>(or your configured domain) - Default GUI Password: FAUCET_GUI_PASSWORD
| Variable | Description | Default | Required |
|---|---|---|---|
INFURA_PROJECT_ID |
Infura API project ID | - | β |
ETHERSCAN_API_KEY |
Etherscan API key | - | β |
FAUCET_PRIVATE_KEY |
Private key for faucet wallet | - | β |
DEFAULT_WALLET_ETH_AMOUNT |
ETH amount per faucet request | 0.2 | β |
FAUCET_DEFAULT_NETWORK |
Default EVM network | sepolia | β |
APP_DEBUG |
Enable debug mode | false | β |
APP_PASSWORD_1 |
System GUI access password | - | β |
Networks are configured in backend/main.py:
- EVM Networks: Configured with chain ID, RPC URLs, and block explorers
- UTXO Networks: Configured with Electrum servers and transaction parameters
- Navigate to
/faucet/evm/{network}(e.g.,/faucet/evm/sepolia) - Connect your Web3 wallet (MetaMask, etc.)
- Sign the verification message
- Click "Request Tokens"
- Receive testnet ETH in your wallet
- Navigate to
/faucet/utxo/{network}(e.g.,/faucet/utxo/btc3,/faucet/utxo/ltc) - Enter your cryptocurrency testnet address (Bitcoin or Litecoin)
- Click "Request Tokens"
- Receive testnet cryptocurrency at your address
- Access at
/sha256 - Interactive demonstration of blockchain concepts
- Mine blocks and explore hash functions
Transaction Graph (See more)
- Access at
/graph/{network} - Visualize cryptocurrency transaction flows
- Explore addresses and transaction relationships
- Upload static files via
/dappsfile browser - Host decentralized applications
- Manage hosted content
51% Attack Tool (See more)
- Access at
/reorgattack - Visual interface for 51% attack on LTC Testnet4 network
- Explore and control blockchain structure
- Test the impact of 51% attacks on the network
- Rent and point miners to your private blockchain (Default port: 63333)
βββ backend/ # Python Flask API
β βββ app/
β β βββ evm_faucet/ # Ethereum-like faucet logic
β β βββ utxo_faucet/ # UTXO-based faucet logic (Bitcoin, Litecoin)
β β βββ reorg_attack/ # 51% attack tool (LTC Testnet4)
β βββ main.py # Application entry point
β βββ requirements.txt # Python dependencies
βββ vite/ # React frontend
β βββ app/
β βββ src/
β β βββ components/ # Reusable UI components
β β βββ pages/ # Application pages
β βββ package.json # Node.js dependencies
βββ dapps-server/ # Static file hosting
βββ dapps-filebrowser/ # File management interface
βββ litecoind-public/ # Public Litecoin node data (Represents public blockchain)
βββ litecoind-private/ # Private Litecoin node data (Controlled by students)
βββ litecoind-dummy/ # Dummy Litecoin node data (Required for private node to work)
βββ docker-compose.yml # Container orchestration
GET /api/evm/networks- List supported EVM networksPOST /api/evm/{network}/request- Request testnet tokensGET /api/evm/{network}/faucet-balance- Check faucet balance
GET /api/utxo/networks- List supported UTXO networksPOST /api/utxo/{network}/request- Request testnet tokensGET /api/utxo/{network}/faucet-balance- Check faucet balance
For questions, issues, or contributions:
- Issues: Open a GitHub issue for bug reports
- Features: Submit feature requests via GitHub issues
- Education: This platform is designed for learning blockchain development