provideroptimizer

package
v3.1.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 11, 2024 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	CacheMaxCost               = 20000 // each item cost would be 1
	CacheNumCounters           = 20000 // expect 2000 items
	INITIAL_DATA_STALENESS     = 24
	HALF_LIFE_TIME             = time.Hour
	MAX_HALF_TIME              = 3 * time.Hour
	PROBE_UPDATE_WEIGHT        = 0.25
	RELAY_UPDATE_WEIGHT        = 1
	DEFAULT_EXPLORATION_CHANCE = 0.1
	COST_EXPLORATION_CHANCE    = 0.01
	WANTED_PRECISION           = int64(8)
)

Variables

This section is empty.

Functions

func CumulativeProbabilityFunctionForPoissonDist

func CumulativeProbabilityFunctionForPoissonDist(k_events uint64, lambda float64) float64

Types

type ConcurrentBlockStore

type ConcurrentBlockStore struct {
	Lock  sync.Mutex
	Time  time.Time
	Block uint64
}

type ProviderData

type ProviderData struct {
	Availability score.ScoreStore // will be used to calculate the probability of error
	Latency      score.ScoreStore // will be used to calculate the latency score
	Sync         score.ScoreStore // will be used to calculate the sync score for spectypes.LATEST_BLOCK/spectypes.NOT_APPLICABLE requests
	SyncBlock    uint64           // will be used to calculate the probability of block error
	LatencyRaw   score.ScoreStore // will be used when reporting reputation to the node (Latency = LatencyRaw / baseLatency)
	SyncRaw      score.ScoreStore // will be used when reporting reputation to the node (Sync = SyncRaw / baseSync)
}

type ProviderOptimizer

type ProviderOptimizer struct {
	// contains filtered or unexported fields
}

func NewProviderOptimizer

func NewProviderOptimizer(strategy Strategy, averageBlockTIme, baseWorldLatency time.Duration, wantedNumProvidersInConcurrency uint) *ProviderOptimizer

func (*ProviderOptimizer) AppendProbeRelayData

func (po *ProviderOptimizer) AppendProbeRelayData(providerAddress string, latency time.Duration, success bool)

func (*ProviderOptimizer) AppendRelayData

func (po *ProviderOptimizer) AppendRelayData(providerAddress string, latency time.Duration, isHangingApi bool, cu, syncBlock uint64)

func (*ProviderOptimizer) AppendRelayFailure

func (po *ProviderOptimizer) AppendRelayFailure(providerAddress string)

func (*ProviderOptimizer) CalculateProbabilityOfBlockError

func (po *ProviderOptimizer) CalculateProbabilityOfBlockError(requestedBlock int64, providerData ProviderData) float64

func (*ProviderOptimizer) CalculateProbabilityOfTimeout

func (po *ProviderOptimizer) CalculateProbabilityOfTimeout(availabilityScore score.ScoreStore) float64

func (*ProviderOptimizer) ChooseProvider

func (po *ProviderOptimizer) ChooseProvider(allAddresses []string, ignoredProviders map[string]struct{}, cu uint64, requestedBlock int64, perturbationPercentage float64) (addresses []string)

returns a sub set of selected providers according to their scores, perturbation factor will be added to each score in order to randomly select providers that are not always on top

func (*ProviderOptimizer) GetExcellenceQoSReportForProvider

func (po *ProviderOptimizer) GetExcellenceQoSReportForProvider(providerAddress string) (qosReport *pairingtypes.QualityOfServiceReport, rawQosReport *pairingtypes.QualityOfServiceReport)

func (*ProviderOptimizer) Strategy

func (po *ProviderOptimizer) Strategy() Strategy

type Strategy

type Strategy int
const (
	STRATEGY_BALANCED Strategy = iota
	STRATEGY_LATENCY
	STRATEGY_SYNC_FRESHNESS
	STRATEGY_COST
	STRATEGY_PRIVACY
	STRATEGY_ACCURACY
	STRATEGY_DISTRIBUTED
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL