# Plot Range Evolution with Genesis Farming

How negative base ranges enable farming from blockchain genesis

Base Range (Initial, Immutable)
Effective Range (Tracks History)
Current History Size
Genesis Block (History = 0)
Farmer Offset Choice:
Current History Size: 1000
Base Range: [512 - 1024]
Effective Range: [512 - 1024]
Can Create Sectors: ✅ Yes

### Range Evolution Timeline

-1000
1000
3000
5000
7000
Base
Effective

### How Genesis Farming Works:

// Constants const GENESIS_OFFSET: u64 = 256; // Allows negative ranges // Calculate initial range with negative values fn calculate_initial_range(offset: u64) -> HistoryRange { let window_level = offset / 64; let window_base_size = 256 * (2_u64.pow(window_level)); let offset_in_window = offset % 64; // Subtract GENESIS_OFFSET to allow negative values let min_value = (window_base_size * offset_in_window / 64) as i64 - 256; let max_value = (window_base_size * (offset_in_window + 1) / 64) as i64 - 256; HistoryRange { min_history_size: min_value, // Can be negative! max_history_size: max_value, // Can be negative initially } } // Get effective range - ALWAYS extends to current history fn get_current_effective_range(plot: &PlotMetadata, current_history: u64) -> HistoryRange { let mut range = plot.base_range.clone(); // Key: effective max is always AT LEAST current history range.max_history_size = max(range.max_history_size, current_history as i64); range }
Key Principle: The effective range maximum ALWAYS extends to current history size.

- At genesis (history=0): Range [-256, -252] becomes [-256, 0]
- At history=100: Range [-256, -252] becomes [-256, 100]
- At history=1000: Range [512, 1024] becomes [512, 1000]
- At history=2000: Range [512, 1024] becomes [512, 2000]

This ensures all farmers can always create sectors using the latest blockchain history.