Back to godoc.org

Package fluxmonitor

v0.9.2
Latest Go to latest

The latest major version is .

Published: Oct 15, 2020 | License: MIT | Module: github.com/smartcontractkit/chainlink

Index

Constants

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

Variables

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

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 contracts.LogNewRound, 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.

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(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 contracts.FluxAggregator,
	logBroadcaster eth.LogBroadcaster,
	initr models.Initiator,
	minJobPayment *assets.Link,
	runManager RunManager,
	fetcher Fetcher,
	flagsContract *contracts.Flags,
	readyForLogs func(),
) (*PollingDeviationChecker, error)

NewPollingDeviationChecker returns a new instance of PollingDeviationChecker.

func (*PollingDeviationChecker) HandleLog

func (p *PollingDeviationChecker) HandleLog(broadcast eth.LogBroadcast, err error)

func (*PollingDeviationChecker) JobID

func (p *PollingDeviationChecker) JobID() *models.ID

func (*PollingDeviationChecker) OnConnect

func (p *PollingDeviationChecker) OnConnect()

func (*PollingDeviationChecker) OnDisconnect

func (p *PollingDeviationChecker) OnDisconnect()

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.ID,
		initiator *models.Initiator,
		creationHeight *big.Int,
		runRequest *models.RunRequest,
	) (*models.JobRun, error)
}

type Service

type Service interface {
	AddJob(models.JobSpec) error
	RemoveJob(*models.ID)
	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 eth.LogBroadcaster,
) Service

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

Package Files

Documentation was rendered with GOOS=linux and GOARCH=amd64.

Jump to identifier

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to identifier