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)
1000
[512 - 1024]
[512 - 1024]
✅ 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. This ensures all farmers can always create sectors using the latest blockchain history.