This project combines federated learning and blockchain technology to create a decentralized system for predicting startup success. Using machine learning models trained on distributed data, we help investors and entrepreneurs make more informed decisions about startup investments while maintaining data privacy and model integrity.
The system consists of three main components:
- A federated learning framework for distributed model training
- A blockchain-based model registry for tracking model updates
- A machine learning pipeline for startup success prediction
- Distributed training across multiple clients while keeping data private
- Configurable training rounds and minimum client requirements
- Model aggregation on a central server
- Real-time training monitoring via dashboard
- Smart contract-based model update tracking
- Immutable record of model versions and performance metrics
- Verification of model provenance and training history
- Convolutional Neural Network (CNN)
- Random Forest Classifier (RFC)
The training data is sourced from Kaggle and includes:
- Startup funding history
- Company location and industry
- Team size and composition
- Operating status and outcomes
Each client maintains their own private dataset while contributing to the global model.
# Create and activate virtual environment
python -m venv .venv
source .venv/bin/activate # On Windows use: .venv\Scripts\activate
# Install Python dependencies
pip install -r requirements.txt
# Install Foundry (if not already installed)
curl -L https://foundry.paradigm.xyz | bash
foundryup
# Navigate to model registry directory
cd model-registry
# Install Foundry dependencies
forge install
# Build contracts
forge build
# Deploy contract (in a new terminal)
forge script script/ModelUpdateRegistry.s.sol:ModelUpdateRegistryScript --rpc-url localhost --broadcast
# Copy environment template
cp .env.sample .env
# Edit .env with your values:
# PRIVATE_KEY=your_private_key
# CONTRACT_ADDRESS=deployed_contract_address
# RPC_URL=http://localhost:8545
# Terminal 1: Start local blockchain
anvil
# Terminal 2: Start FL server
python main.py server
# Terminal 3: Start dashboard
streamlit run dashboard.py
# Terminal 4+: Start clients (run in separate terminals)
python main.py client0
python main.py client1
python main.py client2
- Dashboard: http://localhost:8501
- Blockchain RPC: http://localhost:8545
- FL Server: http://localhost:8080
For development, you can use the provided start script:
# Make script executable
chmod +x start.sh
# Run all components
./start.sh
Ctrl+c
- Initial model training and data collection was done by @sahil-sahil
- The dataset was sourced from Kaggle
- The model was trained using Flower and [Foundry]