provideroptimizer

package
v0.14.1 Latest Latest
Warning

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

Go to latest
Published: Jun 22, 2023 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

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

Variables

This section is empty.

Functions

This section is empty.

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
}

type ProviderOptimizer

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

func NewProviderOptimizer

func NewProviderOptimizer(strategy Strategy, averageBlockTIme time.Duration, 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 uint64, 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

type Strategy

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

Jump to

Keyboard shortcuts

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