# Proof-of-Contribution Consensus

## OnionCoin's Revolutionary Consensus Mechanism

Unlike traditional Proof-of-Work (wasteful) or Proof-of-Stake (plutocratic), OnionCoin introduces **Proof-of-Contribution**: a hybrid system that rewards **actual network contribution**, not just capital or electricity.

## Core Philosophy

> "OnionCoin rewards WORK, not just WEALTH"

A validator with 10 ONC who actively relays traffic can be more competitive than a whale with 10,000 ONC doing nothing.

## Contribution Components

### 1. Stake (40% weight)

**Purpose**: Economic security, skin in the game

**Calculation**: Logarithmic scale to prevent whale dominance

```
stake_score = log10(stake_amount) / log10(max_stake)
              × tier_multiplier
```

**Why logarithmic?**
- 10 ONC → 100 ONC = 0.1 score increase
- 100 ONC → 1,000 ONC = 0.1 score increase
- 1,000 ONC → 10,000 ONC = 0.1 score increase

**Result**: Diminishing returns on large stakes

**Tiers**:
- Micro (10 ONC): 1.0x multiplier
- Light (100 ONC): 1.1x multiplier
- Standard (1,000 ONC): 1.2x multiplier
- Power (10,000 ONC): 1.3x multiplier

### 2. Tor Relay Work (30% weight) ⭐ UNIQUE!

**Purpose**: Reward validators who relay OnionCoin traffic through Tor

**This is OnionCoin's killer feature!** No other cryptocurrency rewards Tor relay work.

**Calculation**:
```
base_score = GB_relayed / 100 (capped at 0.8)
quality_multiplier = (1 - failure_rate) × latency_factor
diversity_bonus =
  - 0.0 for < 50 circuits
  - 0.1 for 50-100 circuits
  - 0.2 for 100+ circuits

relay_score = (base_score × quality_multiplier) + diversity_bonus
```

**Proof-of-Relay**:
Validators submit hourly proofs containing:
- Bytes relayed
- Packets relayed
- Unique circuits served
- Average latency
- Cryptographic proof (hash chain)

**Rewards**:
- 1 ONC per GB relayed (base)
- Up to 1.2x bonus for high circuit diversity
- Quality penalty for high latency/failures

**Example**:
```
Validator relays 50 GB with:
- 150 unique circuits (high diversity)
- 500ms avg latency (good)
- 99% success rate (excellent)

Reward: 50 GB × 1 ONC/GB × 1.2 = 60 ONC
```

### 3. Bandwidth (15% weight)

**Purpose**: Encourage high-bandwidth nodes

**Calculation**:
```
bandwidth_score = avg_bandwidth / max_bandwidth
                  (10 Mbps = 1.0 score)
```

**Measurement**:
- Total bytes sent/received per measurement period
- Rolling average over 24 hours
- Peak bandwidth tracking

### 4. Uptime (10% weight)

**Purpose**: Reward reliability

**Calculation**:
```
uptime_score = (uptime_percentage / 100)
               × disconnection_penalty
               × streak_bonus
```

**Bonuses/Penalties**:
- 99%+ uptime: 1.2x bonus
- 95-99% uptime: 1.1x bonus
- \>5 disconnects/day: 0.5x penalty
- 7+ day streak: 1.2x bonus
- 24+ hour streak: 1.1x bonus

### 5. Storage (5% weight)

**Purpose**: Encourage full nodes with blockchain storage

**Calculation**:
```
storage_score = GB_provided / 100
                (100 GB = 1.0 score)
```

## Total Score Calculation

```rust
total_score =
  stake_score      × 0.40 +
  relay_score      × 0.30 +
  bandwidth_score  × 0.15 +
  uptime_score     × 0.10 +
  storage_score    × 0.05
```

Result: Score between 0.0 and 1.0

## Validator Selection

### Algorithm: Verifiable Random Function (VRF)

Selection is **weighted random** based on contribution score:

```
1. Calculate each validator's contribution score
2. Generate deterministic random seed from:
   - Previous block hash
   - Current block height
3. Weighted random selection using VRF
4. Higher score = higher probability
```

**Example**:
```
Validator A: 0.8 score → 40% selection probability
Validator B: 0.6 score → 30% selection probability
Validator C: 0.4 score → 20% selection probability
Validator D: 0.2 score → 10% selection probability
```

### Fairness Properties

✅ **Deterministic**: Same inputs → same validator selected
✅ **Unpredictable**: Cannot predict future selections
✅ **Fair**: Probability proportional to contribution
✅ **Verifiable**: Anyone can verify selection was correct

## Genesis Mining (Fair Launch)

### Phase 1: 6 Months Genesis Period

**Goal**: Fair initial distribution with NO pre-mine

**How it works**:
1. Anyone runs a Tor relay for OnionCoin
2. Record relay activity (bytes, uptime)
3. After 6 months, distribute 1,000,000 ONC proportionally

**Rewards**:
```
base_reward = (your_relay_bytes / total_relay_bytes) × 1,000,000 ONC
early_bonus = 2x for month 1, linear decay to 1x
uptime_bonus = up to 20% extra for 99%+ uptime

total_reward = base_reward × early_bonus × (1 + uptime_bonus)
```

**Requirements**:
- Minimum 1 GB relayed to qualify
- Must maintain uptime during measurement

**Why this is fair**:
- ❌ NO pre-mine (unlike Bitcoin)
- ❌ NO ICO (unlike Ethereum)
- ❌ NO founder allocation (unlike most alts)
- ✅ 100% earned through work
- ✅ Anyone can participate (just run Tor relay)
- ✅ Low barrier to entry (1 GB relay minimum)

### Phase 2: Regular PoC

After genesis period, transition to regular Proof-of-Contribution:
- Block rewards: 5 ONC/block
- Halving: Every 4 years
- Validators earn based on contribution score

## Economic Incentives

### For Small Validators (Micro/Light)

**Can compete by**:
- Running excellent Tor relay (30% weight!)
- High uptime (10% weight)
- Good bandwidth (15% weight)

**Example**:
```
Micro validator (10 ONC):
- Stake score: 0.1 (low)
- Relay score: 0.9 (high - relays 100 GB/day)
- Bandwidth: 0.8 (good connection)
- Uptime: 0.95 (rarely offline)
- Storage: 0.2 (20 GB)

Total: 0.1×0.4 + 0.9×0.3 + 0.8×0.15 + 0.95×0.1 + 0.2×0.05
     = 0.04 + 0.27 + 0.12 + 0.095 + 0.01
     = 0.535

This Micro validator is MORE competitive than a Power validator
(10,000 ONC) who does no relay work (score ~0.3)!
```

### For Large Validators (Power)

**Can maximize by**:
- Large stake (but diminishing returns)
- Running high-capacity relay
- Multiple geographically distributed nodes
- Professional infrastructure (99.99% uptime)

**Best strategy**: Combine capital with actual work

## Attack Resistance

### Sybil Attack

**Attack**: Create many low-stake validators

**Defense**:
- Minimum 10 ONC stake required
- Relay work must be genuine (verified through proofs)
- Bandwidth/uptime must be real (measured independently)
- Cost of running fake relays > rewards

### Whale Attack (51% stake)

**Attack**: Acquire 51% of all ONC to dominate

**Defense**:
- Stake is only 40% of score
- Logarithmic scaling reduces whale advantage
- Must also provide relay work (expensive!)
- Slashing for misbehavior

**Example**:
Whale with 50% of total stake gets:
- Stake score: ~0.85 (due to log scaling)
- Total score without work: 0.85 × 0.4 = 0.34
- Still needs relay/bandwidth/uptime to be competitive

### Lazy Validator Attack

**Attack**: Stake coins but provide no service

**Defense**:
- Low contribution score → rarely selected
- No block rewards → no ROI
- Other validators with lower stake but higher work out-compete
- Economic pressure to either work or unstake

## Comparison with Other Consensus Mechanisms

| Feature | Bitcoin PoW | Ethereum PoS | OnionCoin PoC |
|---------|-------------|--------------|----------------|
| Energy consumption | ❌ Very high | ✅ Low | ✅ Very low |
| Minimum requirement | $$$ ASIC | 32 ETH (~$50k) | 10 ONC (~$1?) |
| Hardware | Industrial | Standard PC | Raspberry Pi |
| Centralization risk | Mining pools | Whale validators | ✅ Distributed (work matters) |
| Environmental impact | ❌ Terrible | ✅ Good | ✅ Excellent |
| Fair launch | ✅ Yes | ❌ Pre-mine | ✅ Genesis mining |
| **Rewards network work** | ❌ No | ❌ No | ✅ **YES!** |

## Technical Implementation

See `/consensus` module for implementation:

- `validator.rs`: Validator tiers and registry
- `proof_of_contribution.rs`: Score calculation
- `relay_proof.rs`: Proof-of-Relay system ⭐
- `metrics.rs`: Bandwidth, uptime, storage tracking
- `selection.rs`: VRF-based validator selection
- `genesis.rs`: Fair launch genesis mining

## Future Research

Potential improvements:
- ZK-SNARKs for relay proofs (privacy + efficiency)
- Adaptive weight adjustment based on network needs
- Dynamic tier thresholds
- Cross-shard relay rewards (if sharding implemented)

## Conclusion

OnionCoin's Proof-of-Contribution is **the first consensus mechanism** to:

1. ✅ Reward Tor relay work
2. ✅ Make small validators competitive
3. ✅ Combine security with network utility
4. ✅ Be truly accessible (Raspberry Pi can validate!)
5. ✅ Prevent plutocracy through logarithmic stake scaling

**This is not just another PoS fork. This is genuinely novel.**

---

Run the demo:
```bash
cargo run --example consensus_demo
```
