Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
289 changes: 289 additions & 0 deletions todo_now.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,289 @@
# BitCell RC1 Readiness Audit

**Generated**: 2025-12-01
**Status**: Pre-RC1 Critical Path Analysis

This document identifies all unimplemented, stubbed, or critical features required for Release Candidate 1.

---

## 🔴 CRITICAL (Blocking RC1)

### 1. Zero-Knowledge Proofs (ZKP)
**Status**: Mocked/Not Implemented
**Files**: `crates/bitcell-zkp/src/*.rs`

- [ ] **Groth16Proof**: Currently returns mock 192-byte proof data
- Location: `bitcell-zkp/src/lib.rs:49`
- `verify()` only checks if data is non-empty (line 65)
- No actual circuit constraints implemented

- [ ] **BattleCircuit**: Stub implementation
- Location: `bitcell-zkp/src/battle_circuit.rs:45`
- `generate_proof()` returns `Groth16Proof::mock()`
- No CA evolution verification

- [ ] **StateCircuit**: Stub implementation
- Location: `bitcell-zkp/src/state_circuit.rs:41`
- `generate_proof()` returns `Groth16Proof::mock()`
- No Merkle tree verification

**Impact**: Battles and state transitions are NOT cryptographically verified

---

### 2. Verifiable Random Function (VRF)
**Status**: Not Implemented
**Files**: `crates/bitcell-node/src/blockchain.rs`

- [ ] **VRF Output & Proof Generation**
- Location: `blockchain.rs:139`
- Currently: `vrf_output: [0u8; 32]` (hardcoded zeros)
- Comment: `// TODO: Implement VRF`

**Impact**: Block proposer selection is deterministic, not random

---

### 3. Transaction Processing
**Status**: Partially Mocked
**Files**: `crates/bitcell-node/src/rpc.rs`, `crates/bitcell-wallet-gui/src/main.rs`

- [ ] **Transaction Building** (Wallet GUI)
- Location: `wallet-gui/src/main.rs:393`
- Currently: `format!("mock_tx:{}:{}:{}", ...)` (string format)
- Comment: `// TODO: Build real tx`

- [ ] **Raw Transaction Decoding** (RPC)
- Location: `bitcell-node/src/rpc.rs:193`
- Currently returns mock hash
- Comment: `// TODO: Decode transaction, validate, and add to mempool`

- [ ] **Balance Fetching** (RPC)
- Location: `bitcell-node/src/rpc.rs:161`
- Returns hardcoded "0x0"
- Comment: `// TODO: Parse address and fetch balance from state`

**Impact**: Transactions cannot be created, sent, or processed

---

### 4. Network Transport Layer
**Status**: libp2p Integration Incomplete
**Files**: `crates/bitcell-network/src/transport.rs`

- [ ] **Gossipsub Broadcasting**
- Locations: Lines 50, 56, 62, 68
- All broadcast methods: `// TODO: Implement with libp2p gossipsub`
- Methods affected:
- `broadcast_block()`
- `broadcast_transaction()`
- `broadcast_commitment()`
- `broadcast_reveal()`

**Current Implementation**: Custom TCP-based P2P (functional but not production-grade)

**Impact**: Network may not scale; gossip protocol needed for decentralization

---

## 🟡 HIGH PRIORITY (Should Have for RC1)

### 5. State Persistence
**Status**: In-Memory Only
**Files**: `crates/bitcell-state/src/storage.rs`

- [ ] **Production Storage Backend**
- Location: `storage.rs:166`
- Comment: `# TODO: Production Implementation`
- Current: In-memory HashMap
- Need: RocksDB or similar persistent storage

**Impact**: Data lost on restart; not production-ready

---

### 6. Admin Dashboard Metrics
**Status**: Mock Data
**Files**: `crates/bitcell-admin/src/api/metrics.rs`

- [ ] **Real-Time Metrics Collection**
- `uptime`: Line 96 - `// TODO: Track actual node start times`
- `average_block_time`: Line 106 - `// TODO: Calculate from actual block times`
- `messages_sent/received`: Lines 113-114 - `// TODO: Add to node metrics`
- `average_trust_score`: Line 119 - `// TODO: Add trust scores`
- `total_slashing_events`: Line 120 - `// TODO: Add slashing events`
- `cpu_usage`: Line 124 - `// TODO: System metrics (sysinfo crate)`
- `memory_usage_mb`: Line 125 - `// TODO: System metrics`
- `disk_usage_mb`: Line 126 - `// TODO: System metrics`

**Impact**: Admin panel shows fake data; unusable for monitoring

---

### 7. Block Explorer Data
**Status**: Mock/Incomplete
**Files**: `crates/bitcell-admin/src/api/blocks.rs`

- [ ] **Real Block Data Fetching**
- Location: `blocks.rs:86`
- Comment: `// For now, we'll return mock data`
- `get_blocks()`: Line 110 - Mock block list generation
- `get_block_by_hash()`: Line 140 - Returns mock data

**Impact**: Block explorer not functional

---

### 8. Wallet Integration
**Status**: Partial
**Files**: `crates/bitcell-admin/src/api/wallet.rs`

- [ ] **Real RPC Transaction Submission**
- Location: `wallet.rs:105`
- Comment: `// For now, we'll just mock the RPC call`

**Impact**: Admin wallet cannot send real transactions

---

## 🟢 MEDIUM PRIORITY (Nice to Have)

### 9. Node Identity Exposure
**Status**: Placeholder
**Files**: `crates/bitcell-node/src/rpc.rs`

- [ ] **Node ID in getNodeInfo**
- Location: `rpc.rs:202`
- Currently: `"node_id": "TODO_NODE_ID"`
- Comment: `// TODO: Expose node ID from NetworkManager`

- [ ] **Additional Network Metrics**
- Location: `rpc.rs:222`
- Comment: `// TODO: Add more metrics`

---

### 10. Reputation System
**Status**: Not Exposed
**Files**: `crates/bitcell-node/src/rpc.rs`

- [ ] **Get Reputation RPC**
- Location: `rpc.rs:609`
- Comment: `// TODO: Expose reputation from TournamentManager`

- [ ] **Miner Stats**
- Location: `rpc.rs:628`
- Returns: `"miner": "TODO"`

---

### 11. Auto-Miner Status
**Status**: Hardcoded
**Files**: `crates/bitcell-node/src/rpc.rs`

- [ ] **Auto-Miner Status Check**
- Location: `rpc.rs:676`
- Returns: `"auto_miner": false`
- Comment: `// TODO: Check auto miner status`

---

### 12. Data Directory Usage
**Status**: Not Used
**Files**: `crates/bitcell-node/src/main.rs`

- [ ] **Utilize --data-dir Flag**
- Location: `main.rs:95`
- Comment: `// TODO: Use data_dir`
- Currently ignored

---

### 13. Hex Parsing Utils
**Status**: Ad-hoc Implementation
**Files**: `crates/bitcell-node/src/rpc.rs`

- [ ] **Proper Hex Parsing Library**
- Locations: Lines 302, 398
- Comment: `// TODO: Use proper hex parsing util`
- Current: Manual string slicing

---

## ⚠️ CODE QUALITY ISSUES

### Panic Calls (Should be Results)
1. `bitcell-ca/src/grid.rs:165` - `panic!("target_size must be between 1 and {}", GRID_SIZE)`
2. `bitcell-state/src/bonds.rs:73` - `panic!("Expected unbonding status")`

**Action**: Replace with proper error handling using `Result<T, Error>`

---

## 📊 Summary Statistics

- **Total TODO comments**: 33
- **Mock implementations**: 18
- **Panic calls**: 2
- **Critical blockers**: 4
- **High priority**: 8
- **Medium priority**: 6

---

## 🎯 Recommended RC1 Completion Order

### Phase 1: Core Functionality (Week 1-2)
1. **Transaction System** - Enable real tx creation/processing
2. **State Persistence** - Implement RocksDB backend
3. **Balance Queries** - Connect RPC to state manager

### Phase 2: Security & Verification (Week 2-3)
4. **VRF Implementation** - For random block proposer selection
5. **ZKP Circuits** - At minimum, basic battle verification
6. **Network Hardening** - Complete libp2p integration

### Phase 3: Observability (Week 3-4)
7. **Metrics Collection** - Real-time system/network metrics
8. **Block Explorer** - Connect to actual blockchain data
9. **Error Handling** - Replace panic! with Result

### Phase 4: Polish (Week 4)
10. Reputation system exposure
11. Auto-miner status tracking
12. Hex parsing utilities
13. Data directory integration

---

## ✅ What's Already Working

- ✅ Block reward halving mechanism
- ✅ Economic constants centralization
- ✅ Keypair CLI management
- ✅ Battle visualization (CA simulation)
- ✅ Tournament orchestration (sans ZKP)
- ✅ TCP-based P2P networking (functional)
- ✅ RPC server infrastructure
- ✅ Wallet GUI (sans tx submission)
- ✅ Admin dashboard UI (needs real data)

---

## 🚦 RC1 Go/No-Go Checklist

- [ ] Transactions can be created, signed, and broadcast
- [ ] Balances update correctly after transactions
- [ ] State persists across node restarts
- [ ] VRF provides randomness for block proposers
- [ ] ZK proofs verify battle outcomes (even if simplified)
- [ ] Network gossip propagates blocks/transactions
- [ ] Metrics dashboard shows real node data
- [ ] No panic! calls in production code paths
- [ ] Block explorer displays actual chain data
- [ ] Integration tests pass for end-to-end flows

---

**Next Steps**: Prioritize Phase 1 items. Transaction system is the most critical user-facing feature.