Documentation
¶
Index ¶
- Constants
- type AdaptiveDifficultyCalculator
- func (c *AdaptiveDifficultyCalculator) CalculateNextDifficulty(currentDifficulty uint64, blocks []interfaces.Block) (uint64, error)
- func (c *AdaptiveDifficultyCalculator) EstimateNextDifficulty(currentDifficulty uint64, blocks []interfaces.Block) uint64
- func (c *AdaptiveDifficultyCalculator) GetAlgorithmName() string
- func (c *AdaptiveDifficultyCalculator) GetMaxDifficulty() uint64
- func (c *AdaptiveDifficultyCalculator) GetMinDifficulty() uint64
- func (c *AdaptiveDifficultyCalculator) GetTargetBlockTime() time.Duration
- func (c *AdaptiveDifficultyCalculator) SetEmergencyAdjustment(enabled bool)
- func (c *AdaptiveDifficultyCalculator) SetEmergencyThreshold(threshold float64)
- func (c *AdaptiveDifficultyCalculator) ValidateDifficulty(difficulty uint64) error
- type AdjustableDifficultyCalculator
- func (c *AdjustableDifficultyCalculator) CalculateNextDifficulty(currentDifficulty uint64, blocks []interfaces.Block) (uint64, error)
- func (c *AdjustableDifficultyCalculator) EstimateNextDifficulty(currentDifficulty uint64, blocks []interfaces.Block) uint64
- func (c *AdjustableDifficultyCalculator) GetAlgorithmName() string
- func (c *AdjustableDifficultyCalculator) GetMaxDifficulty() uint64
- func (c *AdjustableDifficultyCalculator) GetMinDifficulty() uint64
- func (c *AdjustableDifficultyCalculator) GetTargetBlockTime() time.Duration
- func (c *AdjustableDifficultyCalculator) ValidateDifficulty(difficulty uint64) error
- type BitcoinStyleCalculator
- func (c *BitcoinStyleCalculator) CalculateNextDifficulty(currentDifficulty uint64, blocks []interfaces.Block) (uint64, error)
- func (c *BitcoinStyleCalculator) EstimateNextDifficulty(currentDifficulty uint64, blocks []interfaces.Block) uint64
- func (c *BitcoinStyleCalculator) GetAlgorithmName() string
- func (c *BitcoinStyleCalculator) GetMaxDifficulty() uint64
- func (c *BitcoinStyleCalculator) GetMinDifficulty() uint64
- func (c *BitcoinStyleCalculator) GetTargetBlockTime() time.Duration
- func (c *BitcoinStyleCalculator) ValidateDifficulty(difficulty uint64) error
- type DifficultyStats
- type FixedDifficultyCalculator
- func (c *FixedDifficultyCalculator) CalculateNextDifficulty(currentDifficulty uint64, blocks []interfaces.Block) (uint64, error)
- func (c *FixedDifficultyCalculator) EstimateNextDifficulty(currentDifficulty uint64, blocks []interfaces.Block) uint64
- func (c *FixedDifficultyCalculator) GetAlgorithmName() string
- func (c *FixedDifficultyCalculator) GetMaxDifficulty() uint64
- func (c *FixedDifficultyCalculator) GetMinDifficulty() uint64
- func (c *FixedDifficultyCalculator) GetTargetBlockTime() time.Duration
- func (c *FixedDifficultyCalculator) ValidateDifficulty(difficulty uint64) error
- type Validator
- func (v *Validator) EstimateDifficulty(currentDifficulty uint64, blocks []interfaces.Block) uint64
- func (v *Validator) GetDifficultyStats(currentDifficulty uint64, blocks []interfaces.Block) (*DifficultyStats, error)
- func (v *Validator) GetExpectedDifficulty(currentDifficulty uint64, blocks []interfaces.Block) (uint64, error)
- func (v *Validator) ValidateBlockDifficulty(block interfaces.Block, previousBlocks []interfaces.Block) error
- func (v *Validator) ValidateDifficultyRange(difficulty uint64) error
- func (v *Validator) ValidateDifficultyTransition(oldDifficulty, newDifficulty uint64, blocks []interfaces.Block) error
Constants ¶
const ( // AlgorithmFixed represents a fixed difficulty calculator AlgorithmFixed = "fixed" // AlgorithmAdjustable represents an adjustable difficulty calculator AlgorithmAdjustable = "adjustable" // AlgorithmBitcoin represents a Bitcoin-style difficulty calculator AlgorithmBitcoin = "bitcoin" // AlgorithmAdaptive represents an adaptive difficulty calculator AlgorithmAdaptive = "adaptive" )
Algorithm name constants
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AdaptiveDifficultyCalculator ¶
type AdaptiveDifficultyCalculator struct {
// contains filtered or unexported fields
}
AdaptiveDifficultyCalculator implements a more responsive difficulty adjustment that can handle sudden large changes in hashing power (e.g., quantum computing breakthrough)
func NewAdaptiveDifficultyCalculator ¶
func NewAdaptiveDifficultyCalculator(config *interfaces.DifficultyAdjustmentConfig) *AdaptiveDifficultyCalculator
NewAdaptiveDifficultyCalculator creates an adaptive difficulty calculator. This calculator can respond to extreme hashing power changes better than Bitcoin's algorithm, but at the cost of potential instability.
func (*AdaptiveDifficultyCalculator) CalculateNextDifficulty ¶
func (c *AdaptiveDifficultyCalculator) CalculateNextDifficulty(currentDifficulty uint64, blocks []interfaces.Block) (uint64, error)
CalculateNextDifficulty calculates difficulty with emergency adjustments
func (*AdaptiveDifficultyCalculator) EstimateNextDifficulty ¶
func (c *AdaptiveDifficultyCalculator) EstimateNextDifficulty(currentDifficulty uint64, blocks []interfaces.Block) uint64
EstimateNextDifficulty provides an estimate
func (*AdaptiveDifficultyCalculator) GetAlgorithmName ¶
func (c *AdaptiveDifficultyCalculator) GetAlgorithmName() string
GetAlgorithmName returns the algorithm name
func (*AdaptiveDifficultyCalculator) GetMaxDifficulty ¶
func (c *AdaptiveDifficultyCalculator) GetMaxDifficulty() uint64
GetMaxDifficulty returns the maximum difficulty
func (*AdaptiveDifficultyCalculator) GetMinDifficulty ¶
func (c *AdaptiveDifficultyCalculator) GetMinDifficulty() uint64
GetMinDifficulty returns the minimum difficulty
func (*AdaptiveDifficultyCalculator) GetTargetBlockTime ¶
func (c *AdaptiveDifficultyCalculator) GetTargetBlockTime() time.Duration
GetTargetBlockTime returns the target block time
func (*AdaptiveDifficultyCalculator) SetEmergencyAdjustment ¶
func (c *AdaptiveDifficultyCalculator) SetEmergencyAdjustment(enabled bool)
SetEmergencyAdjustment enables or disables emergency adjustments
func (*AdaptiveDifficultyCalculator) SetEmergencyThreshold ¶
func (c *AdaptiveDifficultyCalculator) SetEmergencyThreshold(threshold float64)
SetEmergencyThreshold sets the threshold for triggering emergency adjustments
func (*AdaptiveDifficultyCalculator) ValidateDifficulty ¶
func (c *AdaptiveDifficultyCalculator) ValidateDifficulty(difficulty uint64) error
ValidateDifficulty checks if difficulty is within bounds
type AdjustableDifficultyCalculator ¶
type AdjustableDifficultyCalculator struct {
// contains filtered or unexported fields
}
AdjustableDifficultyCalculator implements difficulty adjustment based on block times
func NewAdjustableDifficultyCalculator ¶
func NewAdjustableDifficultyCalculator(config *interfaces.DifficultyAdjustmentConfig) *AdjustableDifficultyCalculator
NewAdjustableDifficultyCalculator creates a new adjustable difficulty calculator
func (*AdjustableDifficultyCalculator) CalculateNextDifficulty ¶
func (c *AdjustableDifficultyCalculator) CalculateNextDifficulty(currentDifficulty uint64, blocks []interfaces.Block) (uint64, error)
CalculateNextDifficulty calculates difficulty based on recent block times
func (*AdjustableDifficultyCalculator) EstimateNextDifficulty ¶
func (c *AdjustableDifficultyCalculator) EstimateNextDifficulty(currentDifficulty uint64, blocks []interfaces.Block) uint64
EstimateNextDifficulty provides an estimate without validation
func (*AdjustableDifficultyCalculator) GetAlgorithmName ¶
func (c *AdjustableDifficultyCalculator) GetAlgorithmName() string
GetAlgorithmName returns the algorithm name
func (*AdjustableDifficultyCalculator) GetMaxDifficulty ¶
func (c *AdjustableDifficultyCalculator) GetMaxDifficulty() uint64
GetMaxDifficulty returns the maximum difficulty
func (*AdjustableDifficultyCalculator) GetMinDifficulty ¶
func (c *AdjustableDifficultyCalculator) GetMinDifficulty() uint64
GetMinDifficulty returns the minimum difficulty
func (*AdjustableDifficultyCalculator) GetTargetBlockTime ¶
func (c *AdjustableDifficultyCalculator) GetTargetBlockTime() time.Duration
GetTargetBlockTime returns the target block time
func (*AdjustableDifficultyCalculator) ValidateDifficulty ¶
func (c *AdjustableDifficultyCalculator) ValidateDifficulty(difficulty uint64) error
ValidateDifficulty checks if difficulty is within bounds
type BitcoinStyleCalculator ¶
type BitcoinStyleCalculator struct {
// contains filtered or unexported fields
}
BitcoinStyleCalculator implements Bitcoin's difficulty adjustment algorithm
func NewBitcoinStyleCalculator ¶
func NewBitcoinStyleCalculator(minDifficulty, maxDifficulty uint64) *BitcoinStyleCalculator
NewBitcoinStyleCalculator creates a Bitcoin-style difficulty calculator Adjusts difficulty every 2016 blocks to target 10-minute block times
func (*BitcoinStyleCalculator) CalculateNextDifficulty ¶
func (c *BitcoinStyleCalculator) CalculateNextDifficulty(currentDifficulty uint64, blocks []interfaces.Block) (uint64, error)
CalculateNextDifficulty implements Bitcoin's difficulty adjustment
func (*BitcoinStyleCalculator) EstimateNextDifficulty ¶
func (c *BitcoinStyleCalculator) EstimateNextDifficulty(currentDifficulty uint64, blocks []interfaces.Block) uint64
EstimateNextDifficulty provides an estimate
func (*BitcoinStyleCalculator) GetAlgorithmName ¶
func (c *BitcoinStyleCalculator) GetAlgorithmName() string
GetAlgorithmName returns the algorithm name
func (*BitcoinStyleCalculator) GetMaxDifficulty ¶
func (c *BitcoinStyleCalculator) GetMaxDifficulty() uint64
GetMaxDifficulty returns the maximum difficulty
func (*BitcoinStyleCalculator) GetMinDifficulty ¶
func (c *BitcoinStyleCalculator) GetMinDifficulty() uint64
GetMinDifficulty returns the minimum difficulty
func (*BitcoinStyleCalculator) GetTargetBlockTime ¶
func (c *BitcoinStyleCalculator) GetTargetBlockTime() time.Duration
GetTargetBlockTime returns the target block time
func (*BitcoinStyleCalculator) ValidateDifficulty ¶
func (c *BitcoinStyleCalculator) ValidateDifficulty(difficulty uint64) error
ValidateDifficulty checks if difficulty is within bounds
type DifficultyStats ¶
type DifficultyStats struct {
CurrentDifficulty uint64
MinDifficulty uint64
MaxDifficulty uint64
NextDifficulty uint64
ChangeRatio float64
IsAdjustmentBlock bool
}
DifficultyStats provides statistics about difficulty
type FixedDifficultyCalculator ¶
type FixedDifficultyCalculator struct {
// contains filtered or unexported fields
}
FixedDifficultyCalculator implements a fixed difficulty that never changes
func NewFixedDifficultyCalculator ¶
func NewFixedDifficultyCalculator(difficulty uint64, targetBlockTime time.Duration) *FixedDifficultyCalculator
NewFixedDifficultyCalculator creates a new fixed difficulty calculator
func (*FixedDifficultyCalculator) CalculateNextDifficulty ¶
func (c *FixedDifficultyCalculator) CalculateNextDifficulty(currentDifficulty uint64, blocks []interfaces.Block) (uint64, error)
CalculateNextDifficulty returns the fixed difficulty value
func (*FixedDifficultyCalculator) EstimateNextDifficulty ¶
func (c *FixedDifficultyCalculator) EstimateNextDifficulty(currentDifficulty uint64, blocks []interfaces.Block) uint64
EstimateNextDifficulty returns the fixed difficulty
func (*FixedDifficultyCalculator) GetAlgorithmName ¶
func (c *FixedDifficultyCalculator) GetAlgorithmName() string
GetAlgorithmName returns the algorithm name
func (*FixedDifficultyCalculator) GetMaxDifficulty ¶
func (c *FixedDifficultyCalculator) GetMaxDifficulty() uint64
GetMaxDifficulty returns the fixed difficulty
func (*FixedDifficultyCalculator) GetMinDifficulty ¶
func (c *FixedDifficultyCalculator) GetMinDifficulty() uint64
GetMinDifficulty returns the fixed difficulty
func (*FixedDifficultyCalculator) GetTargetBlockTime ¶
func (c *FixedDifficultyCalculator) GetTargetBlockTime() time.Duration
GetTargetBlockTime returns the target block time
func (*FixedDifficultyCalculator) ValidateDifficulty ¶
func (c *FixedDifficultyCalculator) ValidateDifficulty(difficulty uint64) error
ValidateDifficulty checks if difficulty matches the fixed value
type Validator ¶
type Validator struct {
// contains filtered or unexported fields
}
Validator provides difficulty validation utilities
func NewValidator ¶
func NewValidator(calculator interfaces.DifficultyCalculator) *Validator
NewValidator creates a new difficulty validator
func (*Validator) EstimateDifficulty ¶
func (v *Validator) EstimateDifficulty(currentDifficulty uint64, blocks []interfaces.Block) uint64
EstimateDifficulty provides a difficulty estimate
func (*Validator) GetDifficultyStats ¶
func (v *Validator) GetDifficultyStats(currentDifficulty uint64, blocks []interfaces.Block) (*DifficultyStats, error)
GetDifficultyStats returns difficulty statistics
func (*Validator) GetExpectedDifficulty ¶
func (v *Validator) GetExpectedDifficulty(currentDifficulty uint64, blocks []interfaces.Block) (uint64, error)
GetExpectedDifficulty returns the expected difficulty for the next block
func (*Validator) ValidateBlockDifficulty ¶
func (v *Validator) ValidateBlockDifficulty(block interfaces.Block, previousBlocks []interfaces.Block) error
ValidateBlockDifficulty validates that a block's difficulty is correct
func (*Validator) ValidateDifficultyRange ¶
ValidateDifficultyRange checks if difficulty is within min/max bounds
func (*Validator) ValidateDifficultyTransition ¶
func (v *Validator) ValidateDifficultyTransition(oldDifficulty, newDifficulty uint64, blocks []interfaces.Block) error
ValidateDifficultyTransition validates a difficulty change is legitimate