Prerequisites
Before you begin, ensure you have the following installed:- Node.js 18+ - JavaScript runtime
- Python 3.11+ - Backend runtime
- Redis - Caching and task queue
- MetaMask or Coinbase Wallet - For blockchain interactions
Installation
Firebase Setup
Proteus uses Firebase for email authentication:Create Firebase Project
- Go to Firebase Console
- Create a new project
- Note your project credentials
Enable Authentication
- Navigate to Authentication > Sign-in method
- Enable Email/Password
- Enable Email link (passwordless sign-in)
Configure Authorized Domains
Add your development domain (e.g.,
localhost) to the authorized domains list.Get Test ETH
To deploy contracts and interact with the BASE Sepolia testnet, you’ll need test ETH:- Visit the BASE Sepolia Faucet
- Request 0.1 ETH to your deployer wallet address
- Wait for the transaction to confirm (usually 1-2 minutes)
Compile Smart Contracts
Compile the Solidity smart contracts:Deploy Contracts
Deploy contracts to BASE Sepolia testnet:Verify Contracts
After deployment, verify your contracts on Basescan:Contract Addresses
The following contracts are already deployed on BASE Sepolia:| Contract | Address | Status |
|---|---|---|
| PredictionMarketV2 | 0x5174Da96BCA87c78591038DEe9DB1811288c9286 | Recommended |
| GenesisNFT | 0x1A5D4475881B93e876251303757E60E524286A24 | 60/100 minted |
| PredictionMarket (V1) | 0x667121e8f22570F2c521454D93D6A87e44488d93 | Deprecated |
Run the Application
Start Flask Backend
In a new terminal, activate your virtual environment and start the Flask server:The server will start at
http://localhost:5000Troubleshooting
Insufficient funds error
Insufficient funds error
Get more test ETH from the BASE Sepolia faucet.
Transaction failed
Transaction failed
- Check gas limits in
hardhat.config.js - Verify RPC endpoint is responding
- Ensure wallet has enough ETH
Firebase auth not working
Firebase auth not working
- Verify authorized domains include your URL
- Check API key restrictions in Google Cloud Console
- Confirm email/password authentication is enabled
Redis connection refused
Redis connection refused
Ensure Redis server is running:If it returns “Connection refused”, start Redis:
Next Steps
Run Tests
Learn how to run the 259+ test suite
Architecture
Understand the system design
Deploy
Deploy to Railway or mainnet
API Reference
Explore the API endpoints