Skip to main content

·2 mins·
Plot Range Evolution with Genesis Farming

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.
  • 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.