fluxmonitor

package
v0.0.2 Latest Latest
Warning

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

Go to latest
Published: Mar 12, 2021 License: ISC Imports: 36 Imported by: 0

Documentation

Index

Constants

View Source
const (
	PriorityFlagChangedLog   uint = 0
	PriorityNewRoundLog      uint = 1
	PriorityAnswerUpdatedLog uint = 2
)
View Source
const MinFundedRounds int64 = 3

Variables

View Source
var (
	ErrNotEligible   = errors.New("not eligible to submit")
	ErrUnderfunded   = errors.New("aggregator is underfunded")
	ErrPaymentTooLow = errors.New("round payment amount < minimum contract payment")
)

Functions

func ExtractFeedURLs

func ExtractFeedURLs(feeds models.Feeds, orm *orm.ORM) ([]*url.URL, error)

ExtractFeedURLs extracts a list of url.URLs from the feeds parameter of the initiator params

func GetBridgeURLFromName

func GetBridgeURLFromName(name string, orm *orm.ORM) (*url.URL, error)

GetBridgeURLFromName looks up a bridge in the DB by name, then extracts the url

func MakeIdleTimer

func MakeIdleTimer(log flux_aggregator_wrapper.FluxAggregatorNewRound, idleThreshold models.Duration, clock utils.AfterNower) <-chan time.Time

MakeIdleTimer checks the log timestamp and calculates the idle time from that.

This function makes the assumption that the local system time is relatively accurate (to within a second or so) and all participating nodes agree on that.

If system time is not accurate (compared to the cluster) then you should expect poor behaviour here.

func OutsideDeviation

func OutsideDeviation(curAnswer, nextAnswer decimal.Decimal, thresholds DeviationThresholds) bool

OutsideDeviation checks whether the next price is outside the threshold. If both thresholds are zero (default value), always returns true.

Types

type DeviationChecker

type DeviationChecker interface {
	Start()
	Stop()
}

DeviationChecker encapsulate methods needed to initialize and check prices for price deviations.

type DeviationCheckerFactory

type DeviationCheckerFactory interface {
	New(models.Initiator, *assets.Link, RunManager, *orm.ORM, models.Duration) (DeviationChecker, error)
}

DeviationCheckerFactory holds the New method needed to create a new instance of a DeviationChecker.

type DeviationThresholds

type DeviationThresholds struct {
	Rel float64 // Relative change required, i.e. |new-old|/|old| >= Rel
	Abs float64 // Absolute change required, i.e. |new-old| >= Abs
}

DeviationThresholds carries parameters used by the threshold-trigger logic

type Fetcher

type Fetcher interface {
	Fetch(context.Context, map[string]interface{}) (decimal.Decimal, error)
}

Fetcher is the interface encapsulating all functionality needed to retrieve a price.

type PollingDeviationChecker

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

PollingDeviationChecker polls external price adapters via HTTP to check for price swings.

func NewPollingDeviationChecker

func NewPollingDeviationChecker(
	store *store.Store,
	fluxAggregator flux_aggregator_wrapper.FluxAggregatorInterface,
	logBroadcaster log.Broadcaster,
	initr models.Initiator,
	minJobPayment *assets.Link,
	runManager RunManager,
	fetcher Fetcher,
	flagsContract *contracts.Flags,
	readyForLogs func(),
	minSubmission, maxSubmission *big.Int,
) (*PollingDeviationChecker, error)

NewPollingDeviationChecker returns a new instance of PollingDeviationChecker.

func (*PollingDeviationChecker) HandleLog

func (p *PollingDeviationChecker) HandleLog(broadcast log.Broadcast, err error)

func (*PollingDeviationChecker) IsV2Job

func (p *PollingDeviationChecker) IsV2Job() bool

func (*PollingDeviationChecker) JobID

func (*PollingDeviationChecker) JobIDV2

func (p *PollingDeviationChecker) JobIDV2() int32

func (*PollingDeviationChecker) OnConnect

func (p *PollingDeviationChecker) OnConnect()

func (*PollingDeviationChecker) OnDisconnect

func (p *PollingDeviationChecker) OnDisconnect()

func (*PollingDeviationChecker) SetOracleAddress

func (p *PollingDeviationChecker) SetOracleAddress() error

func (*PollingDeviationChecker) Start

func (p *PollingDeviationChecker) Start()

Start begins the CSP consumer in a single goroutine to poll the price adapters and listen to NewRound events.

func (*PollingDeviationChecker) Stop

func (p *PollingDeviationChecker) Stop()

Stop stops this instance from polling, cleaning up resources.

type RunManager

type RunManager interface {
	Create(
		jobSpecID models.JobID,
		initiator *models.Initiator,
		creationHeight *big.Int,
		runRequest *models.RunRequest,
	) (*models.JobRun, error)
}

type Service

type Service interface {
	AddJob(models.JobSpec) error
	RemoveJob(models.JobID)
	Start() error
	Stop()
}

Service is the interface encapsulating all functionality needed to listen to price deviations and new round requests.

func New

func New(
	store *store.Store,
	runManager RunManager,
	logBroadcaster log.Broadcaster,
) Service

New creates a service that manages a collection of DeviationCheckers, one per initiator of type InitiatorFluxMonitor for added jobs.

Jump to

Keyboard shortcuts

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