keeper

package
v1.12.0-clf-20230217 Latest Latest
Warning

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

Go to latest
Published: Feb 17, 2023 License: MIT Imports: 43 Imported by: 3

Documentation

Index

Constants

View Source
const (
	ZeroPrefix   = "0x"
	UpkeepPrefix = "UPx"
)
View Source
const ActiveUpkeepIDBatchSize int64 = 10000

Variables

View Source
var (
	ErrContractCallFailure = errors.New("failure in calling contract")
)

Functions

func CalcPositioningConstant added in v0.10.5

func CalcPositioningConstant(upkeepID *utils.Big, registryAddress ethkey.EIP55Address) (int32, error)

CalcPositioningConstant calculates a positioning constant. The positioning constant is fixed because upkeepID and registryAddress are immutable

func LeastSignificant32 added in v1.7.0

func LeastSignificant32(num *big.Int) uint64

LeastSignificant32 returns the least significant 32 bits of the input as a big int

func ParseUpkeepId added in v1.7.0

func ParseUpkeepId(upkeepIdStr string) (*big.Int, bool)

ParseUpkeepId parses the upkeep id input string to a big int pointer. It can handle the following 4 formats: 1. decimal format like 123471239047239047243709... 2. hex format like AbC13D354eFF... 3. 0x-prefixed hex like 0xAbC13D354eFF... 4. Upkeep-prefixed hex like UPxAbC13D354eFF...

func ValidatedKeeperSpec

func ValidatedKeeperSpec(tomlString string) (job.Job, error)

ValidatedKeeperSpec analyses the tomlString passed as parameter and returns a newly-created Job if there are no validation errors inside the toml.

Types

type Config added in v0.10.11

type Config interface {
	EvmEIP1559DynamicFees() bool
	KeySpecificMaxGasPriceWei(addr common.Address) *assets.Wei
	KeeperDefaultTransactionQueueDepth() uint32
	KeeperGasPriceBufferPercent() uint16
	KeeperGasTipCapBufferPercent() uint16
	KeeperBaseFeeBufferPercent() uint16
	KeeperMaximumGracePeriod() int64
	KeeperRegistryCheckGasOverhead() uint32
	KeeperRegistryPerformGasOverhead() uint32
	KeeperRegistryMaxPerformDataSize() uint32
	KeeperRegistrySyncInterval() time.Duration
	KeeperRegistrySyncUpkeepQueueSize() uint32
	KeeperTurnLookBack() int64
	pg.QConfig
}

type Delegate

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

func NewDelegate

func NewDelegate(
	db *sqlx.DB,
	jrm job.ORM,
	pr pipeline.Runner,
	logger logger.Logger,
	chainSet evm.ChainSet,
	mailMon *utils.MailboxMonitor,
) *Delegate

NewDelegate is the constructor of Delegate

func (*Delegate) AfterJobCreated added in v0.10.11

func (d *Delegate) AfterJobCreated(spec job.Job)

func (*Delegate) BeforeJobCreated added in v1.11.0

func (d *Delegate) BeforeJobCreated(spec job.Job)

func (*Delegate) BeforeJobDeleted added in v0.10.11

func (d *Delegate) BeforeJobDeleted(spec job.Job)

func (*Delegate) JobType

func (d *Delegate) JobType() job.Type

JobType returns job type

func (*Delegate) ServicesForSpec

func (d *Delegate) ServicesForSpec(spec job.Job) (services []job.ServiceCtx, err error)

ServicesForSpec satisfies the job.Delegate interface.

type KeeperIndexMap added in v1.4.0

type KeeperIndexMap map[ethkey.EIP55Address]int32

func (*KeeperIndexMap) Scan added in v1.4.0

func (k *KeeperIndexMap) Scan(val interface{}) error

func (*KeeperIndexMap) Value added in v1.4.0

func (k *KeeperIndexMap) Value() (driver.Value, error)

type ORM

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

ORM implements ORM layer using PostgreSQL

func NewORM

func NewORM(db *sqlx.DB, lggr logger.Logger, config Config, strategy txmgr.TxStrategy) ORM

NewORM is the constructor of postgresORM

func (ORM) AllUpkeepIDsForRegistry added in v1.5.0

func (korm ORM) AllUpkeepIDsForRegistry(regID int64) (upkeeps []utils.Big, err error)

func (ORM) BatchDeleteUpkeepsForJob added in v0.10.4

func (korm ORM) BatchDeleteUpkeepsForJob(jobID int32, upkeepIDs []utils.Big) (int64, error)

BatchDeleteUpkeepsForJob deletes all upkeeps by the given IDs for the job with the given ID

func (ORM) EligibleUpkeepsForRegistry added in v0.10.8

func (korm ORM) EligibleUpkeepsForRegistry(registryAddress ethkey.EIP55Address, blockNumber int64, gracePeriod int64, binaryHash string) (upkeeps []UpkeepRegistration, err error)

EligibleUpkeepsForRegistry fetches eligible upkeeps for processing The query checks the following conditions - checks the registry address is correct and the registry has some keepers associated -- is it my turn AND my keeper was not the last perform for this upkeep OR my keeper was the last before BUT it is past the grace period -- OR is it my buddy's turn AND they were the last keeper to do the perform for this upkeep DEV: note we cast upkeep_id and binaryHash as 32 bits, even though both are 256 bit numbers when performing XOR. This is enough information to distribute the upkeeps over the keepers so long as num keepers < 4294967296

func (ORM) Q added in v1.1.0

func (korm ORM) Q() pg.Q

func (ORM) Registries

func (korm ORM) Registries() ([]Registry, error)

Registries returns all registries

func (ORM) RegistryByContractAddress added in v1.4.0

func (korm ORM) RegistryByContractAddress(registryAddress ethkey.EIP55Address) (Registry, error)

RegistryByContractAddress returns a single registry based on provided address

func (ORM) RegistryForJob added in v0.10.4

func (korm ORM) RegistryForJob(jobID int32) (Registry, error)

RegistryForJob returns a specific registry for a job with the given ID

func (ORM) SetLastRunInfoForUpkeepOnJob added in v1.4.0

func (korm ORM) SetLastRunInfoForUpkeepOnJob(jobID int32, upkeepID *utils.Big, height int64, fromAddress ethkey.EIP55Address, qopts ...pg.QOpt) (int64, error)

SetLastRunInfoForUpkeepOnJob sets the last run block height and the associated keeper index only if the new block height is greater than the previous.

func (ORM) UpdateUpkeepLastKeeperIndex added in v1.5.0

func (korm ORM) UpdateUpkeepLastKeeperIndex(jobID int32, upkeepID *utils.Big, fromAddress ethkey.EIP55Address) error

UpdateUpkeepLastKeeperIndex updates the last keeper index for an upkeep

func (ORM) UpsertRegistry

func (korm ORM) UpsertRegistry(registry *Registry) error

UpsertRegistry upserts registry by the given input

func (ORM) UpsertUpkeep

func (korm ORM) UpsertUpkeep(registration *UpkeepRegistration) error

UpsertUpkeep upserts upkeep by the given input

type Registry

type Registry struct {
	ID                int64
	BlockCountPerTurn int32
	CheckGas          uint32
	ContractAddress   ethkey.EIP55Address
	FromAddress       ethkey.EIP55Address
	JobID             int32
	KeeperIndex       int32
	NumKeepers        int32
	KeeperIndexMap    KeeperIndexMap
}

type RegistryConfig added in v1.5.0

type RegistryConfig struct {
	BlockCountPerTurn int32
	CheckGas          uint32
	KeeperAddresses   []common.Address
}

type RegistryGasChecker added in v1.8.0

type RegistryGasChecker interface {
	KeeperRegistryCheckGasOverhead() uint32
	KeeperRegistryPerformGasOverhead() uint32
	KeeperRegistryMaxPerformDataSize() uint32
}

type RegistrySynchronizer

type RegistrySynchronizer struct {
	utils.StartStopOnce
	// contains filtered or unexported fields
}

func NewRegistrySynchronizer

func NewRegistrySynchronizer(opts RegistrySynchronizerOptions) *RegistrySynchronizer

NewRegistrySynchronizer is the constructor of RegistrySynchronizer

func (*RegistrySynchronizer) Close

func (rs *RegistrySynchronizer) Close() error

func (*RegistrySynchronizer) HandleLog added in v0.10.4

func (rs *RegistrySynchronizer) HandleLog(broadcast log.Broadcast)

func (*RegistrySynchronizer) JobID added in v0.10.4

func (rs *RegistrySynchronizer) JobID() int32

func (*RegistrySynchronizer) Start

Start starts RegistrySynchronizer.

type RegistrySynchronizerOptions added in v1.1.0

type RegistrySynchronizerOptions struct {
	Job                      job.Job
	RegistryWrapper          RegistryWrapper
	ORM                      ORM
	JRM                      job.ORM
	LogBroadcaster           log.Broadcaster
	MailMon                  *utils.MailboxMonitor
	SyncInterval             time.Duration
	MinIncomingConfirmations uint32
	Logger                   logger.Logger
	SyncUpkeepQueueSize      uint32
	EffectiveKeeperAddress   common.Address
}

type RegistryVersion added in v1.5.0

type RegistryVersion int32
const (
	RegistryVersion_1_0 RegistryVersion = iota
	RegistryVersion_1_1
	RegistryVersion_1_2
	RegistryVersion_1_3
	RegistryVersion_2_0
)

func (RegistryVersion) String added in v1.8.0

func (rv RegistryVersion) String() string

type RegistryWrapper added in v1.5.0

type RegistryWrapper struct {
	Address ethkey.EIP55Address
	Version RegistryVersion
	// contains filtered or unexported fields
}

RegistryWrapper implements a layer on top of different versions of registry wrappers to provide a unified layer to rest of the codebase

func NewRegistryWrapper added in v1.5.0

func NewRegistryWrapper(address ethkey.EIP55Address, evmClient evmclient.Client) (*RegistryWrapper, error)

func (*RegistryWrapper) AddFunds added in v1.5.0

func (rw *RegistryWrapper) AddFunds(opts *bind.TransactOpts, id *big.Int, amount *big.Int) (*types.Transaction, error)

func (*RegistryWrapper) CancelUpkeep added in v1.5.0

func (rw *RegistryWrapper) CancelUpkeep(opts *bind.TransactOpts, id *big.Int) (*types.Transaction, error)

func (*RegistryWrapper) GetActiveUpkeepIDs added in v1.5.0

func (rw *RegistryWrapper) GetActiveUpkeepIDs(opts *bind.CallOpts) ([]*big.Int, error)

func (*RegistryWrapper) GetCancelledUpkeepIDFromLog added in v1.5.0

func (rw *RegistryWrapper) GetCancelledUpkeepIDFromLog(broadcast log.Broadcast) (*big.Int, error)

func (*RegistryWrapper) GetConfig added in v1.5.0

func (rw *RegistryWrapper) GetConfig(opts *bind.CallOpts) (*RegistryConfig, error)

func (*RegistryWrapper) GetIDFromGasLimitSetLog added in v1.5.0

func (rw *RegistryWrapper) GetIDFromGasLimitSetLog(broadcast log.Broadcast) (*big.Int, error)

func (*RegistryWrapper) GetLogListenerOpts added in v1.5.0

func (rw *RegistryWrapper) GetLogListenerOpts(minIncomingConfirmations uint32, upkeepPerformedFilter [][]log.Topic) (*log.ListenerOpts, error)

func (*RegistryWrapper) GetUpkeep added in v1.5.0

func (rw *RegistryWrapper) GetUpkeep(opts *bind.CallOpts, id *big.Int) (*UpkeepConfig, error)

func (*RegistryWrapper) GetUpkeepIdFromMigratedLog added in v1.5.0

func (rw *RegistryWrapper) GetUpkeepIdFromMigratedLog(broadcast log.Broadcast) (*big.Int, error)

func (*RegistryWrapper) GetUpkeepIdFromReceivedLog added in v1.5.0

func (rw *RegistryWrapper) GetUpkeepIdFromReceivedLog(broadcast log.Broadcast) (*big.Int, error)

func (*RegistryWrapper) GetUpkeepIdFromRegistrationLog added in v1.5.0

func (rw *RegistryWrapper) GetUpkeepIdFromRegistrationLog(broadcast log.Broadcast) (*big.Int, error)

func (*RegistryWrapper) GetUpkeepIdFromUpkeepPausedLog added in v1.9.0

func (rw *RegistryWrapper) GetUpkeepIdFromUpkeepPausedLog(broadcast log.Broadcast) (*big.Int, error)

func (*RegistryWrapper) GetUpkeepIdFromUpkeepUnpausedLog added in v1.9.0

func (rw *RegistryWrapper) GetUpkeepIdFromUpkeepUnpausedLog(broadcast log.Broadcast) (*big.Int, error)

func (*RegistryWrapper) ParseUpkeepCheckDataUpdatedLog added in v1.9.0

func (rw *RegistryWrapper) ParseUpkeepCheckDataUpdatedLog(broadcast log.Broadcast) (*UpkeepCheckDataUpdatedLog, error)

func (*RegistryWrapper) ParseUpkeepPerformedLog added in v1.5.0

func (rw *RegistryWrapper) ParseUpkeepPerformedLog(broadcast log.Broadcast) (*UpkeepPerformedLog, error)

func (*RegistryWrapper) PerformUpkeep added in v1.5.0

func (rw *RegistryWrapper) PerformUpkeep(opts *bind.TransactOpts, id *big.Int, performData []byte) (*types.Transaction, error)

func (*RegistryWrapper) RegisterUpkeep added in v1.5.0

func (rw *RegistryWrapper) RegisterUpkeep(opts *bind.TransactOpts, target common.Address, gasLimit uint32, admin common.Address, checkData []byte) (*types.Transaction, error)

func (*RegistryWrapper) SetKeepers added in v1.5.0

func (rw *RegistryWrapper) SetKeepers(opts *bind.TransactOpts, keepers []common.Address, payees []common.Address) (*types.Transaction, error)

type UpkeepCheckDataUpdatedLog added in v1.9.0

type UpkeepCheckDataUpdatedLog struct {
	UpkeepID     *big.Int
	NewCheckData []byte
}

type UpkeepConfig added in v1.5.0

type UpkeepConfig struct {
	ExecuteGas uint32
	CheckData  []byte
	LastKeeper common.Address
}

type UpkeepExecuter added in v0.10.6

type UpkeepExecuter struct {
	utils.StartStopOnce
	// contains filtered or unexported fields
}

UpkeepExecuter implements the logic to communicate with KeeperRegistry

func NewUpkeepExecuter added in v0.10.6

func NewUpkeepExecuter(
	job job.Job,
	orm ORM,
	pr pipeline.Runner,
	ethClient evmclient.Client,
	headBroadcaster httypes.HeadBroadcaster,
	gasEstimator gas.Estimator,
	logger logger.Logger,
	config Config,
	effectiveKeeperAddress common.Address,
) *UpkeepExecuter

NewUpkeepExecuter is the constructor of UpkeepExecuter

func (*UpkeepExecuter) Close added in v0.10.6

func (ex *UpkeepExecuter) Close() error

Close stops and closes upkeep executer

func (*UpkeepExecuter) OnNewLongestChain added in v0.10.6

func (ex *UpkeepExecuter) OnNewLongestChain(_ context.Context, head *evmtypes.Head)

OnNewLongestChain handles the given head of a new longest chain

func (*UpkeepExecuter) Start added in v0.10.6

func (ex *UpkeepExecuter) Start(context.Context) error

Start starts the upkeep executer logic

type UpkeepIdentifier added in v1.8.0

type UpkeepIdentifier utils.Big

func NewUpkeepIdentifier added in v1.8.0

func NewUpkeepIdentifier(i *utils.Big) *UpkeepIdentifier

func (UpkeepIdentifier) String added in v1.8.0

func (ui UpkeepIdentifier) String() string

String produces a hex encoded value, zero padded, prefixed with UpkeepPrefix

type UpkeepPerformedLog added in v1.5.0

type UpkeepPerformedLog struct {
	UpkeepID   *big.Int
	FromKeeper common.Address
}

type UpkeepRegistration

type UpkeepRegistration struct {
	ID                  int32
	CheckData           []byte
	ExecuteGas          uint32
	LastRunBlockHeight  int64
	RegistryID          int64
	Registry            Registry
	UpkeepID            *utils.Big
	LastKeeperIndex     null.Int64
	PositioningConstant int32
}

func (UpkeepRegistration) PrettyID added in v1.5.0

func (upkeep UpkeepRegistration) PrettyID() string

Jump to

Keyboard shortcuts

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