We need this implemented asap so protocol can keep running in case we loose many validators following end of validators subsidy vote.
Any other protocol updates should be postponed for when DAO is up and running.
How to ?
Repository 1: babylon-node-develop (4 weeks)
Purpose: Track uptime and provide metrics to engine
Key Changes:
-
Add uptime tracking infrastructure
-
Create uptime monitoring service
-
Expose metrics via Prometheus/API
-
Log violations
Files: ~12 files, ~1500-2000 lines
Repository 2: radixdlt-scrypto-develop (4 weeks)
Purpose: Filter validator set and jail underperforming validators
Key Changes:
-
Add uptime fields to ValidatorSubstate
-
Modify validator set computation (lines 1220-1231) to filter by uptime
-
Add min_validator_uptime_percentage config (default: 50%)
-
Implement automatic jailing logic
-
Add jailing events
Files: ~8 files, ~500-800 lines
Roadmap: 10 weeks (~2.5 months)
| Phase | Duration | Focus |
|---|---|---|
| Phase 1 | 2 weeks | Foundation - Uptime tracking |
| Phase 2 | 1 weeks | Monitoring - Detection & logging |
| Phase 3 | 2 weeks | Jailing Logic - Core implementation |
| Phase 4 | 1 weeks | Testing - Comprehensive test suite |
| Phase 5 | 1 weeks | Protocol Update Prep - Documentation |
| Phase 6 | 1 weeks | Testnet Deployment - Validation |
| Phase 7 | 2 weeks | Mainnet Deployment - Protocol update |
Critical Implementation Point
File: radix-engine/src/blueprints/consensus_manager/consensus_manager.rs (Lines 1220-1231)
Current: Selects validators by stake only
New: Filter by uptime threshold before selection
This is the critical change that enables automatic jailing.