Documentation ¶
Index ¶
- Constants
- Variables
- func Batch(chunkSize uint, cb func(offset, limit uint) (uint, error)) error
- func EnvVarName(field string) string
- type Config
- func (c Config) AllowOrigins() string
- func (c Config) BlockBackfillDepth() uint64
- func (c Config) BridgeResponseURL() *url.URL
- func (c Config) CertFile() string
- func (c Config) ChainID() *big.Int
- func (c Config) ClientNodeURL() string
- func (c Config) CreateProductionLogger() *zap.Logger
- func (c Config) DatabaseTimeout() models.Duration
- func (c Config) DatabaseURL() string
- func (c Config) DefaultHTTPLimit() int64
- func (c Config) DefaultHTTPTimeout() models.Duration
- func (c Config) DefaultMaxHTTPAttempts() uint
- func (c Config) Dev() bool
- func (c Config) EnableBulletproofTxManager() bool
- func (c Config) EnableExperimentalAdapters() bool
- func (c Config) EthFinalityDepth() uint
- func (c Config) EthGasBumpPercent() uint16
- func (c Config) EthGasBumpThreshold() uint64
- func (c Config) EthGasBumpWei() *big.Int
- func (c Config) EthGasLimitDefault() uint64
- func (c Config) EthGasPriceDefault() *big.Int
- func (c Config) EthHeadTrackerHistoryDepth() uint
- func (c Config) EthMaxGasPriceWei() *big.Int
- func (c Config) EthereumDisabled() bool
- func (c Config) EthereumURL() string
- func (c Config) ExplorerAccessKey() string
- func (c Config) ExplorerSecret() string
- func (c Config) ExplorerURL() *url.URL
- func (c Config) FeatureExternalInitiators() bool
- func (c Config) FeatureFluxMonitor() bool
- func (c Config) GasUpdaterBlockDelay() uint16
- func (c Config) GasUpdaterBlockHistorySize() uint16
- func (c Config) GasUpdaterEnabled() bool
- func (c Config) GasUpdaterTransactionPercentile() uint16
- func (c Config) GetAdvisoryLockIDConfiguredOrDefault() int64
- func (c Config) GetDatabaseDialectConfiguredOrDefault() DialectName
- func (c Config) JSONConsole() bool
- func (c Config) KeyFile() string
- func (c Config) KeysDir() string
- func (c Config) LinkContractAddress() string
- func (c Config) LogLevel() LogLevel
- func (c Config) LogSQLMigrations() bool
- func (c Config) LogSQLStatements() bool
- func (c Config) LogToDisk() bool
- func (c Config) MaxRPCCallsPerSecond() uint64
- func (c Config) MaximumServiceDuration() models.Duration
- func (c Config) MigrateDatabase() bool
- func (c Config) MinIncomingConfirmations() uint32
- func (c Config) MinRequiredOutgoingConfirmations() uint64
- func (c Config) MinimumContractPayment() *assets.Link
- func (c Config) MinimumRequestExpiration() uint64
- func (c Config) MinimumServiceDuration() models.Duration
- func (c Config) OracleContractAddress() *common.Address
- func (c Config) Port() uint16
- func (c Config) ReaperExpiration() models.Duration
- func (c Config) ReplayFromBlock() int64
- func (c Config) RootDir() string
- func (c Config) SecureCookies() bool
- func (c Config) SessionOptions() sessions.Options
- func (c Config) SessionSecret() ([]byte, error)
- func (c Config) SessionTimeout() models.Duration
- func (c Config) Set(name string, value interface{})
- func (c Config) SetEthGasPriceDefault(value *big.Int) error
- func (c *Config) SetRuntimeStore(orm *ORM)
- func (c Config) TLSCertPath() string
- func (c Config) TLSHost() string
- func (c Config) TLSKeyPath() string
- func (c Config) TLSPort() uint16
- func (c Config) TLSRedirect() bool
- func (c Config) TxAttemptLimit() uint16
- func (c *Config) Validate() error
- type ConfigReader
- type ConfigSchema
- type Connection
- type DialectName
- type LockingStrategy
- type LogLevel
- type ORM
- func (orm *ORM) AddTxAttempt(tx *models.Tx, newTxAttempt *models.Tx) (*models.TxAttempt, error)
- func (orm *ORM) AllSyncEvents(cb func(*models.SyncEvent) error) error
- func (orm *ORM) AnyJobWithType(taskTypeName string) (bool, error)
- func (orm *ORM) ArchiveJob(ID *models.ID) error
- func (orm *ORM) AuthorizedUserWithSession(sessionID string, sessionDuration time.Duration) (models.User, error)
- func (orm *ORM) BridgeTypes(offset int, limit int) ([]models.BridgeType, int, error)
- func (orm *ORM) BulkDeleteRuns(bulkQuery *models.BulkDeleteRunRequest) error
- func (orm *ORM) Chain(hash common.Hash, lookback uint) (models.Head, error)
- func (orm *ORM) ClearNonCurrentSessions(sessionID string) error
- func (orm *ORM) ClearSessions() error
- func (orm *ORM) ClobberDiskKeyStoreWithDBKeys(keysDir string) error
- func (orm *ORM) Close() error
- func (orm *ORM) CountOf(t interface{}) (int, error)
- func (orm *ORM) CreateBridgeType(bt *models.BridgeType) error
- func (orm *ORM) CreateExternalInitiator(externalInitiator *models.ExternalInitiator) error
- func (orm *ORM) CreateInitiator(initr *models.Initiator) error
- func (orm *ORM) CreateJob(job *models.JobSpec) error
- func (orm *ORM) CreateJobRun(run *models.JobRun) error
- func (orm *ORM) CreateLogConsumption(lc *models.LogConsumption) error
- func (orm *ORM) CreateServiceAgreement(sa *models.ServiceAgreement) error
- func (orm *ORM) CreateSession(sr models.SessionRequest) (string, error)
- func (orm *ORM) CreateTx(tx *models.Tx) (*models.Tx, error)
- func (orm *ORM) DeleteBridgeType(bt *models.BridgeType) error
- func (orm *ORM) DeleteEncryptedSecretVRFKey(k *vrfkey.EncryptedSecretKey) error
- func (orm *ORM) DeleteExternalInitiator(name string) error
- func (orm *ORM) DeleteFluxMonitorRoundsBackThrough(aggregator common.Address, roundID uint32) error
- func (orm *ORM) DeleteJobSpecError(ID int64) error
- func (orm *ORM) DeleteKey(address []byte) error
- func (orm *ORM) DeleteStaleSessions(before time.Time) error
- func (orm *ORM) DeleteTransaction(ethtx *models.Tx) error
- func (orm *ORM) DeleteUser() (models.User, error)
- func (orm *ORM) DeleteUserSession(sessionID string) error
- func (orm *ORM) FindAllTxsInNonceRange(beginningNonce uint, endingNonce uint) ([]models.Tx, error)
- func (orm *ORM) FindBridge(name models.TaskType) (models.BridgeType, error)
- func (orm *ORM) FindBridgesByNames(names []string) ([]models.BridgeType, error)
- func (orm *ORM) FindEncryptedSecretVRFKeys(where ...vrfkey.EncryptedSecretKey) (retrieved []*vrfkey.EncryptedSecretKey, err error)
- func (orm *ORM) FindEthTaskRunTxByTaskRunID(taskRunID uuid.UUID) (*models.EthTaskRunTx, error)
- func (orm *ORM) FindEthTxWithAttempts(etxID int64) (models.EthTx, error)
- func (orm *ORM) FindExternalInitiator(eia *auth.Token) (*models.ExternalInitiator, error)
- func (orm *ORM) FindExternalInitiatorByName(iname string) (models.ExternalInitiator, error)
- func (orm *ORM) FindInitiator(ID int64) (models.Initiator, error)
- func (orm *ORM) FindJob(id *models.ID) (models.JobSpec, error)
- func (orm *ORM) FindJobRun(id *models.ID) (models.JobRun, error)
- func (orm *ORM) FindJobSpecError(jobID *models.ID, description string) (*models.JobSpecError, error)
- func (orm *ORM) FindJobWithErrors(id *models.ID) (models.JobSpec, error)
- func (orm *ORM) FindLogConsumer(lc *models.LogConsumption) (models.JobSpec, error)
- func (orm *ORM) FindOrCreateFluxMonitorRoundStats(aggregator common.Address, roundID uint32) (models.FluxMonitorRoundStats, error)
- func (orm *ORM) FindServiceAgreement(id string) (models.ServiceAgreement, error)
- func (orm *ORM) FindTx(ID uint64) (*models.Tx, error)
- func (orm *ORM) FindTxAttempt(hash common.Hash) (*models.TxAttempt, error)
- func (orm *ORM) FindTxByAttempt(hash common.Hash) (*models.Tx, *models.TxAttempt, error)
- func (orm *ORM) FindTxsBySenderAndRecipient(sender, recipient common.Address, offset, limit uint) ([]models.Tx, error)
- func (orm *ORM) FindUser() (models.User, error)
- func (orm *ORM) FirstOrCreateEncryptedSecretVRFKey(k *vrfkey.EncryptedSecretKey) error
- func (orm *ORM) GetConfigValue(field string, value encoding.TextUnmarshaler) error
- func (orm *ORM) GetDefaultAddress() (common.Address, error)
- func (orm *ORM) GetLastNonce(address common.Address) (uint64, error)
- func (orm *ORM) GetRawDB() *gorm.DB
- func (orm *ORM) HasConsumedLog(rawLog models.RawLog, JobID *models.ID) (bool, error)
- func (orm *ORM) HeadByHash(hash common.Hash) (*models.Head, error)
- func (orm *ORM) IdempotentInsertEthTaskRunTx(taskRunID models.ID, fromAddress common.Address, toAddress common.Address, ...) error
- func (orm *ORM) IdempotentInsertHead(h models.Head) error
- func (orm *ORM) IncrFluxMonitorRoundSubmissions(aggregator common.Address, roundID uint32) error
- func (orm *ORM) JobRunsCountFor(jobSpecID *models.ID) (int, error)
- func (orm *ORM) JobRunsFor(jobSpecID *models.ID, limit ...int) ([]models.JobRun, error)
- func (orm *ORM) JobRunsSorted(sort SortType, offset int, limit int) ([]models.JobRun, int, error)
- func (orm *ORM) JobRunsSortedFor(id *models.ID, order SortType, offset int, limit int) ([]models.JobRun, int, error)
- func (orm *ORM) Jobs(cb func(*models.JobSpec) bool, initrTypes ...string) error
- func (orm *ORM) JobsSorted(sort SortType, offset int, limit int) ([]models.JobSpec, int, error)
- func (orm *ORM) KeyExists(address []byte) (bool, error)
- func (orm *ORM) Keys() ([]models.Key, error)
- func (orm *ORM) LastHead() (*models.Head, error)
- func (orm *ORM) LinkEarnedFor(spec *models.JobSpec) (*assets.Link, error)
- func (orm *ORM) LogConsumptionExists(lc *models.LogConsumption) (bool, error)
- func (orm *ORM) MarkRan(i *models.Initiator, ran bool) error
- func (orm *ORM) MarkTxSafe(tx *models.Tx, txAttempt *models.TxAttempt) error
- func (orm *ORM) MostRecentFluxMonitorRoundID(aggregator common.Address) (uint32, error)
- func (orm *ORM) MustEnsureAdvisoryLock()
- func (orm *ORM) PendingBridgeType(jr models.JobRun) (models.BridgeType, error)
- func (orm *ORM) RawDB(fn func(*gorm.DB) error) error
- func (orm *ORM) SaveJobRun(run *models.JobRun) error
- func (orm *ORM) SaveSession(session *models.Session) error
- func (orm *ORM) SaveTx(tx *models.Tx) error
- func (orm *ORM) SaveUser(user *models.User) error
- func (orm *ORM) Sessions(offset, limit int) ([]models.Session, error)
- func (orm *ORM) SetConfigValue(field string, value encoding.TextMarshaler) error
- func (orm *ORM) SetLogging(enabled bool)
- func (orm *ORM) Transaction(fc func(tx *gorm.DB) error) (err error)
- func (orm *ORM) Transactions(offset, limit int) ([]models.Tx, int, error)
- func (orm *ORM) TrimOldHeads(n uint) (err error)
- func (orm *ORM) TxAttempts(offset, limit int) ([]models.TxAttempt, int, error)
- func (orm *ORM) TxFrom(from common.Address) ([]models.Tx, error)
- func (orm *ORM) UnconfirmedTxAttempts() ([]models.TxAttempt, error)
- func (orm *ORM) Unscoped() *ORM
- func (orm *ORM) UnscopedJobRunsWithStatus(cb func(*models.JobRun), statuses ...models.RunStatus) error
- func (orm *ORM) UpdateBridgeType(bt *models.BridgeType, btr *models.BridgeTypeRequest) error
- func (orm *ORM) UpsertErrorFor(jobID *models.ID, description string)
- func (orm *ORM) UpsertKey(k models.Key) error
- type PostgresLockingStrategy
- type SecretGenerator
- type SortType
Constants ¶
const BatchSize = 100
BatchSize is the safe number of records to cache during Batch calls for SQLite without causing load problems. NOTE: Now we no longer support SQLite, perhaps this can be tuned?
Variables ¶
var ( // ErrorNotFound is returned when finding a single value fails. ErrorNotFound = gorm.ErrRecordNotFound // ErrNoAdvisoryLock is returned when an advisory lock can't be acquired. ErrNoAdvisoryLock = errors.New("can't acquire advisory lock") // ErrReleaseLockFailed is returned when releasing the advisory lock fails. ErrReleaseLockFailed = errors.New("advisory lock release failed") // ErrOptimisticUpdateConflict is returned when a record update failed // because another update occurred while the model was in memory and the // differences must be reconciled. ErrOptimisticUpdateConflict = errors.New("conflict while updating record") )
Functions ¶
func EnvVarName ¶ added in v0.6.6
EnvVarName gets the environment variable name for a config schema field
Types ¶
type Config ¶ added in v0.6.6
type Config struct { SecretGenerator SecretGenerator Dialect DialectName AdvisoryLockID int64 // contains filtered or unexported fields }
Config holds parameters used by the application which can be overridden by setting environment variables.
If you add an entry here which does not contain sensitive information, you should also update presenters.ConfigWhitelist and cmd_test.TestClient_RunNodeShowsEnv.
func NewConfig ¶ added in v0.6.6
func NewConfig() *Config
NewConfig returns the config with the environment variables set to their respective fields, or their defaults if environment variables are not set.
func (Config) AllowOrigins ¶ added in v0.6.6
AllowOrigins returns the CORS hosts used by the frontend.
func (Config) BlockBackfillDepth ¶ added in v0.8.5
BlockBackfillDepth specifies the number of blocks before the current HEAD that the log broadcaster will try to re-consume logs from
func (Config) BridgeResponseURL ¶ added in v0.6.6
BridgeResponseURL represents the URL for bridges to send a response to.
func (Config) CertFile ¶ added in v0.6.6
CertFile returns the path where the server certificate is kept
func (Config) ClientNodeURL ¶ added in v0.6.6
ClientNodeURL is the URL of the Ethereum node this Chainlink node should connect to.
func (Config) CreateProductionLogger ¶ added in v0.6.6
CreateProductionLogger returns a custom logger for the config's root directory and LogLevel, with pretty printing for stdout. If LOG_TO_DISK is false, the logger will only log to stdout.
func (Config) DatabaseTimeout ¶ added in v0.6.6
DatabaseTimeout represents how long to tolerate non response from the DB.
func (Config) DatabaseURL ¶ added in v0.6.6
DatabaseURL configures the URL for chainlink to connect to. This must be a properly formatted URL, with a valid scheme (postgres://)
func (Config) DefaultHTTPLimit ¶ added in v0.6.6
DefaultHTTPLimit defines the size limit for HTTP requests and responses
func (Config) DefaultHTTPTimeout ¶ added in v0.8.2
DefaultHTTPTimeout defines the default timeout for http requests
func (Config) DefaultMaxHTTPAttempts ¶ added in v0.8.2
DefaultMaxHTTPAttempts defines the limit for HTTP requests.
func (Config) EnableBulletproofTxManager ¶ added in v0.8.7
EnableBulletproofTxManager uses the new tx manager for ethtx tasks. Careful, toggling this on and off could cause transactions to become lost
func (Config) EnableExperimentalAdapters ¶ added in v0.8.2
EnableExperimentalAdapters enables support for experimental adapters
func (Config) EthFinalityDepth ¶ added in v0.8.7
EthFinalityDepth is the number of blocks after which an ethereum transaction is considered "final" BlocksConsideredFinal determines how deeply we look back to ensure that transactions are confirmed onto the longest chain There is not a large performance penalty to setting this relatively high (on the order of hundreds) It is practically limited by the number of heads we store in the database and should be less than this with a comfortable margin. If a transaction is mined in a block more than this many blocks ago, and is reorged out, we will NOT retransmit this transaction and undefined behaviour can occur including gaps in the nonce sequence that require manual intervention to fix. Therefore this number represents a number of blocks we consider large enough that no re-org this deep will ever feasibly happen.
func (Config) EthGasBumpPercent ¶ added in v0.8.2
EthGasBumpPercent is the minimum percentage by which gas is bumped on each transaction attempt Change with care since values below geth's default will fail with "underpriced replacement transaction"
func (Config) EthGasBumpThreshold ¶ added in v0.6.6
EthGasBumpThreshold is the number of blocks to wait for confirmations before bumping gas again
func (Config) EthGasBumpWei ¶ added in v0.6.6
EthGasBumpWei is the minimum fixed amount of wei by which gas is bumped on each transaction attempt
func (Config) EthGasLimitDefault ¶ added in v0.8.2
EthGasLimitDefault sets the default gas limit for outgoing transactions.
func (Config) EthGasPriceDefault ¶ added in v0.6.6
EthGasPriceDefault is the starting gas price for every transaction
func (Config) EthHeadTrackerHistoryDepth ¶ added in v0.8.7
EthHeadTrackerBlocksToKeep is the number of heads to keep in the `heads` database table. This number should be at least as large as `EthFinalityDepth`. There may be a small performance penalty to setting this to something very large (10,000+)
func (Config) EthMaxGasPriceWei ¶ added in v0.8.2
EthMaxGasPriceWei is the maximum amount in Wei that a transaction will be bumped to before abandoning it and marking it as errored.
func (Config) EthereumDisabled ¶ added in v0.8.3
EthereumDisabled shows whether Ethereum interactions are supported.
func (Config) EthereumURL ¶ added in v0.6.6
EthereumURL represents the URL of the Ethereum node to connect Chainlink to.
func (Config) ExplorerAccessKey ¶ added in v0.6.6
ExplorerAccessKey returns the access key for authenticating with explorer
func (Config) ExplorerSecret ¶ added in v0.6.6
ExplorerSecret returns the secret for authenticating with explorer
func (Config) ExplorerURL ¶ added in v0.6.6
ExplorerURL returns the websocket URL for this node to push stats to, or nil.
func (Config) FeatureExternalInitiators ¶ added in v0.8.2
FeatureExternalInitiators enables the External Initiator feature.
func (Config) FeatureFluxMonitor ¶ added in v0.8.2
FeatureFluxMonitor enables the Flux Monitor feature.
func (Config) GasUpdaterBlockDelay ¶ added in v0.8.2
GasUpdaterBlockDelay is the number of blocks that the gas updater trails behind head. E.g. if this is set to 3, and we receive block 10, gas updater will fetch block 7. CAUTION: You might be tempted to set this to 0 to use the latest possible block, but it is possible to receive a head BEFORE that block is actually available from the connected node via RPC. In this case you will get false "zero" blocks that are missing transactions.
func (Config) GasUpdaterBlockHistorySize ¶ added in v0.8.2
GasUpdaterBlockHistorySize is the number of past blocks to keep in memory to use as a basis for calculating a percentile gas price
func (Config) GasUpdaterEnabled ¶ added in v0.8.2
GasUpdaterEnabled turns on the automatic gas updater if set to true It is disabled by default
func (Config) GasUpdaterTransactionPercentile ¶ added in v0.8.2
GasUpdaterTransactionPercentile is the percentile gas price to choose. E.g. if the past transaction history contains four transactions with gas prices: [100, 200, 300, 400], picking 25 for this number will give a value of 200
func (Config) GetAdvisoryLockIDConfiguredOrDefault ¶ added in v0.8.4
func (Config) GetDatabaseDialectConfiguredOrDefault ¶ added in v0.8.4
func (c Config) GetDatabaseDialectConfiguredOrDefault() DialectName
func (Config) JSONConsole ¶ added in v0.6.6
JSONConsole enables the JSON console.
func (Config) KeysDir ¶ added in v0.6.6
KeysDir returns the path of the keys directory (used for keystore files).
func (Config) LinkContractAddress ¶ added in v0.6.6
LinkContractAddress represents the address
func (Config) LogLevel ¶ added in v0.6.6
LogLevel represents the maximum level of log messages to output.
func (Config) LogSQLMigrations ¶ added in v0.6.6
LogSQLMigrations tells chainlink to log all SQL migrations made using the default logger
func (Config) LogSQLStatements ¶ added in v0.6.6
LogSQLStatements tells chainlink to log all SQL statements made using the default logger
func (Config) MaxRPCCallsPerSecond ¶ added in v0.6.6
MaxRPCCallsPerSecond returns the rate at which RPC calls can be fired
func (Config) MaximumServiceDuration ¶ added in v0.6.6
MaximumServiceDuration is the maximum time that a service agreement can run from after the time it is created. Default 1 year = 365 * 24h = 8760h
func (Config) MigrateDatabase ¶ added in v0.8.4
MigrateDatabase determines whether the database will be automatically migrated on application startup if set to true
func (Config) MinIncomingConfirmations ¶ added in v0.6.6
MinIncomingConfirmations represents the minimum number of block confirmations that need to be recorded since a job run started before a task can proceed.
func (Config) MinRequiredOutgoingConfirmations ¶ added in v0.8.8
MinRequiredOutgoingConfirmations represents the default minimum number of block confirmations that need to be recorded on an outgoing ethtx task before the run can move onto the next task. This can be overridden on a per-task basis by setting the `MinRequiredOutgoingConfirmations` parameter.
func (Config) MinimumContractPayment ¶ added in v0.6.6
MinimumContractPayment represents the minimum amount of LINK that must be supplied for a contract to be considered.
func (Config) MinimumRequestExpiration ¶ added in v0.6.6
MinimumRequestExpiration is the minimum allowed request expiration for a Service Agreement.
func (Config) MinimumServiceDuration ¶ added in v0.6.6
MinimumServiceDuration is the shortest duration from now that a service is allowed to run.
func (Config) OracleContractAddress ¶ added in v0.6.6
OracleContractAddress represents the deployed Oracle contract's address.
func (Config) Port ¶ added in v0.6.6
Port represents the port Chainlink should listen on for client requests.
func (Config) ReaperExpiration ¶ added in v0.6.6
ReaperExpiration represents
func (Config) ReplayFromBlock ¶ added in v0.6.10
func (Config) RootDir ¶ added in v0.6.6
RootDir represents the location on the file system where Chainlink should keep its files.
func (Config) SecureCookies ¶ added in v0.6.6
SecureCookies allows toggling of the secure cookies HTTP flag
func (Config) SessionOptions ¶ added in v0.6.6
SessionOptions returns the sesssions.Options struct used to configure the session store.
func (Config) SessionSecret ¶ added in v0.6.6
SessionSecret returns a sequence of bytes to be used as a private key for session signing or encryption.
func (Config) SessionTimeout ¶ added in v0.6.6
SessionTimeout is the maximum duration that a user session can persist without any activity.
func (Config) SetEthGasPriceDefault ¶ added in v0.6.6
SetEthGasPriceDefault saves a runtime value for the default gas price for transactions
func (*Config) SetRuntimeStore ¶ added in v0.6.6
SetRuntimeStore tells the configuration system to use a store for retrieving configuration variables that can be configured at runtime.
func (Config) TLSCertPath ¶ added in v0.6.6
TLSCertPath represents the file system location of the TLS certificate Chainlink should use for HTTPS.
func (Config) TLSHost ¶ added in v0.6.6
TLSHost represents the hostname to use for TLS clients. This should match the TLS certificate.
func (Config) TLSKeyPath ¶ added in v0.6.6
TLSKeyPath represents the file system location of the TLS key Chainlink should use for HTTPS.
func (Config) TLSPort ¶ added in v0.6.6
TLSPort represents the port Chainlink should listen on for encrypted client requests.
func (Config) TLSRedirect ¶ added in v0.6.6
TLSRedirect forces TLS redirect for unencrypted connections
func (Config) TxAttemptLimit ¶ added in v0.6.6
TxAttemptLimit is the maximum number of transaction attempts (gas bumps) that will occur before giving a transaction up as errored NOTE: That initial transactions are retried forever until they succeed
type ConfigReader ¶ added in v0.6.6
type ConfigReader interface { AllowOrigins() string BlockBackfillDepth() uint64 BridgeResponseURL() *url.URL ChainID() *big.Int ClientNodeURL() string DatabaseTimeout() models.Duration DatabaseURL() string DefaultMaxHTTPAttempts() uint DefaultHTTPLimit() int64 DefaultHTTPTimeout() models.Duration Dev() bool FeatureExternalInitiators() bool FeatureFluxMonitor() bool MaximumServiceDuration() models.Duration MinimumServiceDuration() models.Duration EnableExperimentalAdapters() bool EnableBulletproofTxManager() bool EthGasBumpPercent() uint16 EthGasBumpThreshold() uint64 EthGasBumpWei() *big.Int EthGasLimitDefault() uint64 EthGasPriceDefault() *big.Int EthMaxGasPriceWei() *big.Int EthFinalityDepth() uint EthHeadTrackerHistoryDepth() uint SetEthGasPriceDefault(value *big.Int) error EthereumURL() string GasUpdaterBlockDelay() uint16 GasUpdaterBlockHistorySize() uint16 GasUpdaterTransactionPercentile() uint16 JSONConsole() bool LinkContractAddress() string ExplorerURL() *url.URL ExplorerAccessKey() string ExplorerSecret() string OracleContractAddress() *common.Address LogLevel() LogLevel LogToDisk() bool LogSQLStatements() bool MinIncomingConfirmations() uint32 MinRequiredOutgoingConfirmations() uint64 MinimumContractPayment() *assets.Link MinimumRequestExpiration() uint64 MigrateDatabase() bool Port() uint16 ReaperExpiration() models.Duration RootDir() string SecureCookies() bool SessionTimeout() models.Duration TLSCertPath() string TLSHost() string TLSKeyPath() string TLSPort() uint16 TLSRedirect() bool TxAttemptLimit() uint16 KeysDir() string KeyFile() string CertFile() string CreateProductionLogger() *zap.Logger SessionSecret() ([]byte, error) SessionOptions() sessions.Options // contains filtered or unexported methods }
ConfigReader represents just the read side of the config
type ConfigSchema ¶ added in v0.6.6
type ConfigSchema struct { AllowOrigins string `env:"ALLOW_ORIGINS" default:"http://localhost:3000,http://localhost:6688"` BlockBackfillDepth string `env:"BLOCK_BACKFILL_DEPTH" default:"10"` BridgeResponseURL url.URL `env:"BRIDGE_RESPONSE_URL"` ChainID big.Int `env:"ETH_CHAIN_ID" default:"1"` ClientNodeURL string `env:"CLIENT_NODE_URL" default:"http://localhost:6688"` DatabaseTimeout models.Duration `env:"DATABASE_TIMEOUT" default:"500ms"` DatabaseURL string `env:"DATABASE_URL"` DefaultHTTPLimit int64 `env:"DEFAULT_HTTP_LIMIT" default:"32768"` DefaultHTTPTimeout models.Duration `env:"DEFAULT_HTTP_TIMEOUT" default:"15s"` Dev bool `env:"CHAINLINK_DEV" default:"false"` EnableExperimentalAdapters bool `env:"ENABLE_EXPERIMENTAL_ADAPTERS" default:"false"` EnableBulletproofTxManager bool `env:"ENABLE_BULLETPROOF_TX_MANAGER" default:"false"` FeatureExternalInitiators bool `env:"FEATURE_EXTERNAL_INITIATORS" default:"false"` FeatureFluxMonitor bool `env:"FEATURE_FLUX_MONITOR" default:"false"` MaximumServiceDuration models.Duration `env:"MAXIMUM_SERVICE_DURATION" default:"8760h" ` MinimumServiceDuration models.Duration `env:"MINIMUM_SERVICE_DURATION" default:"0s" ` EthGasBumpThreshold uint64 `env:"ETH_GAS_BUMP_THRESHOLD" default:"3" ` EthGasBumpWei big.Int `env:"ETH_GAS_BUMP_WEI" default:"5000000000"` EthGasBumpPercent uint16 `env:"ETH_GAS_BUMP_PERCENT" default:"20"` EthGasLimitDefault uint64 `env:"ETH_GAS_LIMIT_DEFAULT" default:"500000"` EthGasPriceDefault big.Int `env:"ETH_GAS_PRICE_DEFAULT" default:"20000000000"` EthMaxGasPriceWei uint64 `env:"ETH_MAX_GAS_PRICE_WEI" default:"500000000000"` EthFinalityDepth uint `env:"ETH_FINALITY_DEPTH" default:"50"` EthHeadTrackerHistoryDepth uint `env:"ETH_HEAD_TRACKER_HISTORY_DEPTH" default:"100"` EthereumURL string `env:"ETH_URL" default:"ws://localhost:8546"` EthereumDisabled bool `env:"ETH_DISABLED" default:"false"` GasUpdaterBlockDelay uint16 `env:"GAS_UPDATER_BLOCK_DELAY" default:"3"` GasUpdaterBlockHistorySize uint16 `env:"GAS_UPDATER_BLOCK_HISTORY_SIZE" default:"24"` GasUpdaterTransactionPercentile uint16 `env:"GAS_UPDATER_TRANSACTION_PERCENTILE" default:"60"` GasUpdaterEnabled bool `env:"GAS_UPDATER_ENABLED" default:"false"` JSONConsole bool `env:"JSON_CONSOLE" default:"false"` LinkContractAddress string `env:"LINK_CONTRACT_ADDRESS" default:"0x514910771AF9Ca656af840dff83E8264EcF986CA"` ExplorerURL *url.URL `env:"EXPLORER_URL"` ExplorerAccessKey string `env:"EXPLORER_ACCESS_KEY"` ExplorerSecret string `env:"EXPLORER_SECRET"` LogLevel LogLevel `env:"LOG_LEVEL" default:"info"` LogToDisk bool `env:"LOG_TO_DISK" default:"true"` LogSQLStatements bool `env:"LOG_SQL" default:"false"` LogSQLMigrations bool `env:"LOG_SQL_MIGRATIONS" default:"true"` DefaultMaxHTTPAttempts uint `env:"MAX_HTTP_ATTEMPTS" default:"5"` MigrateDatabase bool `env:"MIGRATE_DATABASE" default:"true"` MinIncomingConfirmations uint32 `env:"MIN_INCOMING_CONFIRMATIONS" default:"3"` MinRequiredOutgoingConfirmations uint64 `env:"MIN_OUTGOING_CONFIRMATIONS" default:"12"` MinimumContractPayment assets.Link `env:"MINIMUM_CONTRACT_PAYMENT" default:"1000000000000000000"` MinimumRequestExpiration uint64 `env:"MINIMUM_REQUEST_EXPIRATION" default:"300"` MaxRPCCallsPerSecond uint64 `env:"MAX_RPC_CALLS_PER_SECOND" default:"500"` OracleContractAddress common.Address `env:"ORACLE_CONTRACT_ADDRESS"` Port uint16 `env:"CHAINLINK_PORT" default:"6688"` ReaperExpiration models.Duration `env:"REAPER_EXPIRATION" default:"240h"` ReplayFromBlock int64 `env:"REPLAY_FROM_BLOCK" default:"-1"` RootDir string `env:"ROOT" default:"~/.chainlink"` SecureCookies bool `env:"SECURE_COOKIES" default:"true"` SessionTimeout models.Duration `env:"SESSION_TIMEOUT" default:"15m"` TLSCertPath string `env:"TLS_CERT_PATH" ` TLSHost string `env:"CHAINLINK_TLS_HOST" ` TLSKeyPath string `env:"TLS_KEY_PATH" ` TLSPort uint16 `env:"CHAINLINK_TLS_PORT" default:"6689"` TLSRedirect bool `env:"CHAINLINK_TLS_REDIRECT" default:"false"` TxAttemptLimit uint16 `env:"CHAINLINK_TX_ATTEMPT_LIMIT" default:"10"` }
ConfigSchema records the schema of configuration at the type level
type Connection ¶ added in v0.8.5
type Connection struct {
// contains filtered or unexported fields
}
Connection manages all of the possible database connection setup and config.
func NewConnection ¶ added in v0.8.5
func NewConnection(dialect DialectName, uri string, advisoryLockID int64) (Connection, error)
NewConnection returns a Connection which holds all of the configuration necessary for managing the database connection.
type DialectName ¶
type DialectName string
DialectName is a compiler enforced type used that maps to gorm's dialect names.
const ( // DialectPostgres represents the postgres dialect. DialectPostgres DialectName = "postgres" // DialectTransactionWrappedPostgres is useful for tests. // When the connection is opened, it starts a transaction and all // operations performed on the DB will be within that transaction. // // HACK: This must be the string 'cloudsqlpostgres' because of an absolutely // horrible design in gorm. We need gorm to enable postgres-specific // features for the txdb driver, but it can only do that if the dialect is // called "postgres" or "cloudsqlpostgres". // // Since "postgres" is already taken, "cloudsqlpostgres" is our only // remaining option // // See: https://github.com/jinzhu/gorm/blob/master/dialect_postgres.go#L15 DialectTransactionWrappedPostgres DialectName = "cloudsqlpostgres" // DialectPostgresWithoutLock represents the postgres dialect but it does not // wait for a lock to connect. Intended to be used for read only access. DialectPostgresWithoutLock DialectName = "postgresWithoutLock" )
type LockingStrategy ¶
type LockingStrategy interface { Lock(timeout models.Duration) error Unlock(timeout models.Duration) error }
LockingStrategy employs the locking and unlocking of an underlying resource for exclusive access, usually a file or database.
func NewLockingStrategy ¶
func NewLockingStrategy(ct Connection) (LockingStrategy, error)
NewLockingStrategy returns the locking strategy for a particular dialect to ensure exlusive access to the orm.
func NewPostgresLockingStrategy ¶
func NewPostgresLockingStrategy(ct Connection) (LockingStrategy, error)
NewPostgresLockingStrategy returns a new instance of the PostgresLockingStrategy.
type ORM ¶
type ORM struct {
// contains filtered or unexported fields
}
ORM contains the database object used by Chainlink.
func NewORM ¶
func NewORM(uri string, timeout models.Duration, shutdownSignal gracefulpanic.Signal, dialect DialectName, advisoryLockID int64) (*ORM, error)
NewORM initializes a new database file at the configured uri.
func (*ORM) AddTxAttempt ¶
AddTxAttempt attaches a new attempt to a Tx, after the attempt has been sent to the chain
func (*ORM) AllSyncEvents ¶
AllSyncEvents returns all sync events
func (*ORM) AnyJobWithType ¶
AnyJobWithType returns true if there is at least one job associated with the type name specified and false otherwise
func (*ORM) ArchiveJob ¶
ArchiveJob soft deletes the job, job_runs and its initiator.
func (*ORM) AuthorizedUserWithSession ¶
func (orm *ORM) AuthorizedUserWithSession(sessionID string, sessionDuration time.Duration) (models.User, error)
AuthorizedUserWithSession will return the one API user if the Session ID exists and hasn't expired, and update session's LastUsed field.
func (*ORM) BridgeTypes ¶
BridgeTypes returns bridge types ordered by name filtered limited by the passed params.
func (*ORM) BulkDeleteRuns ¶
func (orm *ORM) BulkDeleteRuns(bulkQuery *models.BulkDeleteRunRequest) error
BulkDeleteRuns removes JobRuns and their related records: TaskRuns and RunResults.
RunResults and RunRequests are pointed at by JobRuns so we must use two CTEs to remove both parents in one hit.
TaskRuns are removed by ON DELETE CASCADE when the JobRuns and RunResults are deleted.
func (*ORM) Chain ¶ added in v0.8.5
Chain returns the chain of heads starting at hash and up to lookback parents Returns RecordNotFound if no head with the given hash exists
func (*ORM) ClearNonCurrentSessions ¶
ClearNonCurrentSessions removes all sessions but the id passed in.
func (*ORM) ClearSessions ¶
ClearSessions removes all sessions.
func (*ORM) ClobberDiskKeyStoreWithDBKeys ¶
ClobberDiskKeyStoreWithDBKeys writes all keys stored in the orm to the keys folder on disk, deleting anything there prior.
func (*ORM) CreateBridgeType ¶
func (orm *ORM) CreateBridgeType(bt *models.BridgeType) error
CreateBridgeType saves the bridge type.
func (*ORM) CreateExternalInitiator ¶
func (orm *ORM) CreateExternalInitiator(externalInitiator *models.ExternalInitiator) error
CreateExternalInitiator inserts a new external initiator
func (*ORM) CreateInitiator ¶
CreateInitiator saves the initiator.
func (*ORM) CreateJobRun ¶
CreateJobRun inserts a new JobRun
func (*ORM) CreateLogConsumption ¶ added in v0.8.3
func (orm *ORM) CreateLogConsumption(lc *models.LogConsumption) error
CreateLogConsumption creates a new LogConsumption record
func (*ORM) CreateServiceAgreement ¶
func (orm *ORM) CreateServiceAgreement(sa *models.ServiceAgreement) error
CreateServiceAgreement saves a Service Agreement, its JobSpec and its associations to the database.
func (*ORM) CreateSession ¶
func (orm *ORM) CreateSession(sr models.SessionRequest) (string, error)
CreateSession will check the password in the SessionRequest against the hashed API User password in the db.
func (*ORM) CreateTx ¶
CreateTx finds and overwrites a transaction by its surrogate key, if it exists, or creates it
func (*ORM) DeleteBridgeType ¶
func (orm *ORM) DeleteBridgeType(bt *models.BridgeType) error
DeleteBridgeType removes the bridge type
func (*ORM) DeleteEncryptedSecretVRFKey ¶ added in v0.8.2
func (orm *ORM) DeleteEncryptedSecretVRFKey(k *vrfkey.EncryptedSecretKey) error
DeleteEncryptedSecretKey deletes k from the encrypted keys table, or errors
func (*ORM) DeleteExternalInitiator ¶
DeleteExternalInitiator removes an external initiator
func (*ORM) DeleteFluxMonitorRoundsBackThrough ¶ added in v0.8.7
DeleteFluxMonitorRoundsBackThrough deletes all the RoundStat records for a given oracle address starting from the most recent round back through the given round
func (*ORM) DeleteJobSpecError ¶ added in v0.8.9
DeleteJobSpecError removes a JobSpecError
func (*ORM) DeleteKey ¶ added in v0.8.4
DeleteKey deletes a key whose address matches the supplied bytes.
func (*ORM) DeleteStaleSessions ¶
DeleteStaleSessions deletes all sessions before the passed time.
func (*ORM) DeleteTransaction ¶
DeleteTransaction deletes a transaction an all of its attempts.
func (*ORM) DeleteUser ¶
DeleteUser will delete the API User in the db.
func (*ORM) DeleteUserSession ¶
DeleteUserSession will erase the session ID for the sole API User.
func (*ORM) FindAllTxsInNonceRange ¶ added in v0.8.2
FindAllTxsInNonceRange returns an array of transactions matching the inclusive range between beginningNonce and endingNonce
func (*ORM) FindBridge ¶
FindBridge looks up a Bridge by its Name.
func (*ORM) FindBridgesByNames ¶ added in v0.8.2
func (orm *ORM) FindBridgesByNames(names []string) ([]models.BridgeType, error)
FindBridgesByNames finds multiple bridges by their names.
func (*ORM) FindEncryptedSecretVRFKeys ¶ added in v0.8.2
func (orm *ORM) FindEncryptedSecretVRFKeys(where ...vrfkey.EncryptedSecretKey) ( retrieved []*vrfkey.EncryptedSecretKey, err error)
FindEncryptedSecretKeys retrieves matches to where from the encrypted keys table, or errors
func (*ORM) FindEthTaskRunTxByTaskRunID ¶ added in v0.8.7
FindEthTaskRunTxByTaskRunID finds the EthTaskRunTx with its EthTxes and EthTxAttempts preloaded
func (*ORM) FindEthTxWithAttempts ¶ added in v0.8.7
FindEthTxWithAttempts finds the EthTx with its attempts and receipts preloaded
func (*ORM) FindExternalInitiator ¶
FindExternalInitiator finds an external initiator given an authentication request
func (*ORM) FindExternalInitiatorByName ¶ added in v0.6.6
func (orm *ORM) FindExternalInitiatorByName(iname string) (models.ExternalInitiator, error)
FindExternalInitiatorByName finds an external initiator given an authentication request
func (*ORM) FindInitiator ¶
FindInitiator returns the single initiator defined by the passed ID.
func (*ORM) FindJobRun ¶
FindJobRun looks up a JobRun by its ID.
func (*ORM) FindJobSpecError ¶ added in v0.8.9
func (orm *ORM) FindJobSpecError(jobID *models.ID, description string) (*models.JobSpecError, error)
FindJobSpecError looks for a JobSpecError record with the given jobID and description
func (*ORM) FindJobWithErrors ¶ added in v0.8.9
FindJobWithErrors looks up a Job by its ID and preloads JobSpecErrors.
func (*ORM) FindLogConsumer ¶ added in v0.8.3
FindLogConsumer finds the consuming job of a particular LogConsumption record
func (*ORM) FindOrCreateFluxMonitorRoundStats ¶ added in v0.8.7
func (orm *ORM) FindOrCreateFluxMonitorRoundStats(aggregator common.Address, roundID uint32) (models.FluxMonitorRoundStats, error)
FindOrCreateFluxMonitorRoundStats find the round stats record for agiven oracle on a given round, or creates it if no record exists
func (*ORM) FindServiceAgreement ¶
func (orm *ORM) FindServiceAgreement(id string) (models.ServiceAgreement, error)
FindServiceAgreement looks up a ServiceAgreement by its ID.
func (*ORM) FindTxAttempt ¶
FindTxAttempt returns an individual TxAttempt
func (*ORM) FindTxByAttempt ¶
FindTxByAttempt returns the specific transaction attempt with the hash.
func (*ORM) FindTxsBySenderAndRecipient ¶ added in v0.8.2
func (orm *ORM) FindTxsBySenderAndRecipient(sender, recipient common.Address, offset, limit uint) ([]models.Tx, error)
FindTxsBySenderAndRecipient returns an array of transactions sent by `sender` to `recipient`
func (*ORM) FirstOrCreateEncryptedSecretVRFKey ¶ added in v0.8.2
func (orm *ORM) FirstOrCreateEncryptedSecretVRFKey(k *vrfkey.EncryptedSecretKey) error
FirstOrCreateEncryptedSecretKey returns the first key found or creates a new one in the orm.
func (*ORM) GetConfigValue ¶ added in v0.6.6
func (orm *ORM) GetConfigValue(field string, value encoding.TextUnmarshaler) error
GetConfigValue returns the value for a named configuration entry
func (*ORM) GetDefaultAddress ¶ added in v0.8.7
GetDefaultAddress queries the database for the address of the primary default ethereum key
func (*ORM) GetLastNonce ¶
GetLastNonce retrieves the last known nonce in the database for an account
func (*ORM) HasConsumedLog ¶ added in v0.8.3
HasConsumedLog reports whether the given consumer had already consumed the given log
func (*ORM) HeadByHash ¶ added in v0.8.8
HeadByHash fetches the head with the given hash from the db, returns nil if none exists
func (*ORM) IdempotentInsertEthTaskRunTx ¶ added in v0.8.7
func (orm *ORM) IdempotentInsertEthTaskRunTx(taskRunID models.ID, fromAddress common.Address, toAddress common.Address, encodedPayload []byte, gasLimit uint64) error
IdempotentInsertEthTaskRunTx creates both eth_task_run_transaction and eth_tx in one hit It can be called multiple times without error as long as the outcome would have resulted in the same database state
func (*ORM) IdempotentInsertHead ¶ added in v0.8.5
IdempotentInsertHead inserts a head only if the hash is new. Will do nothing if hash exists already. No advisory lock required because this is thread safe.
func (*ORM) IncrFluxMonitorRoundSubmissions ¶ added in v0.8.6
IncrFluxMonitorRoundSubmissions trys to create a RoundStat record for the given oracle at the given round. If one already exists, it increments the num_submissions column.
func (*ORM) JobRunsCountFor ¶
JobRunsCountFor returns the current number of runs for the job
func (*ORM) JobRunsFor ¶
JobRunsFor fetches all JobRuns with a given Job ID, sorted by their created at time.
func (*ORM) JobRunsSorted ¶
JobRunsSorted returns job runs ordered and filtered by the passed params.
func (*ORM) JobRunsSortedFor ¶
func (orm *ORM) JobRunsSortedFor(id *models.ID, order SortType, offset int, limit int) ([]models.JobRun, int, error)
JobRunsSortedFor returns job runs for a specific job spec ordered and filtered by the passed params.
func (*ORM) JobsSorted ¶
JobsSorted returns many JobSpecs sorted by CreatedAt from the store adhering to the passed parameters.
func (*ORM) KeyExists ¶ added in v0.8.7
KeyExists returns true if a key exists in the database for this address
func (*ORM) LastHead ¶
LastHead returns the head with the highest number. In the case of ties (e.g. due to re-org) it returns the most recently seen head entry.
func (*ORM) LinkEarnedFor ¶ added in v0.6.6
LinkEarnedFor shows the total link earnings for a job
func (*ORM) LogConsumptionExists ¶ added in v0.8.3
func (orm *ORM) LogConsumptionExists(lc *models.LogConsumption) (bool, error)
LogConsumptionExists reports whether a given LogConsumption record already exists
func (*ORM) MarkTxSafe ¶
MarkTxSafe updates the database for the given transaction and attempt to show that the transaction has not just been confirmed, but has met the minimum number of outgoing confirmations to be deemed safely written on the blockchain.
func (*ORM) MostRecentFluxMonitorRoundID ¶ added in v0.8.7
MostRecentFluxMonitorRoundID finds roundID of the most recent round that the provided oracle address submitted to
func (*ORM) MustEnsureAdvisoryLock ¶ added in v0.8.2
func (orm *ORM) MustEnsureAdvisoryLock()
MustEnsureAdvisoryLock sends a shutdown signal to the ORM if it an advisory lock cannot be acquired.
func (*ORM) PendingBridgeType ¶
PendingBridgeType returns the bridge type of the current pending task, or error if not pending bridge.
func (*ORM) SaveJobRun ¶
SaveJobRun updates UpdatedAt for a JobRun and saves it
func (*ORM) SaveSession ¶
SaveSession saves the session.
func (*ORM) SetConfigValue ¶ added in v0.6.6
func (orm *ORM) SetConfigValue(field string, value encoding.TextMarshaler) error
SetConfigValue returns the value for a named configuration entry
func (*ORM) SetLogging ¶ added in v0.6.1
SetLogging turns on SQL statement logging
func (*ORM) Transaction ¶ added in v0.8.7
NOTE: Copied verbatim from gorm master Transaction start a transaction as a block, return error will rollback, otherwise to commit.
func (*ORM) Transactions ¶
Transactions returns all transactions limited by passed parameters.
func (*ORM) TrimOldHeads ¶ added in v0.8.5
TrimOldHeads deletes heads such that only the top N block numbers remain
func (*ORM) TxAttempts ¶
TxAttempts returns the last tx attempts sorted by sent at descending.
func (*ORM) UnconfirmedTxAttempts ¶ added in v0.6.10
UnconfirmedTxAttempts returns all TxAttempts for which the associated Tx is still unconfirmed.
func (*ORM) Unscoped ¶
Unscoped returns a new instance of this ORM that includes soft deleted items.
func (*ORM) UnscopedJobRunsWithStatus ¶
func (orm *ORM) UnscopedJobRunsWithStatus(cb func(*models.JobRun), statuses ...models.RunStatus) error
UnscopedJobRunsWithStatus passes all JobRuns to a callback, one by one, including those that were soft deleted.
func (*ORM) UpdateBridgeType ¶
func (orm *ORM) UpdateBridgeType(bt *models.BridgeType, btr *models.BridgeTypeRequest) error
UpdateBridgeType updates the bridge type.
func (*ORM) UpsertErrorFor ¶ added in v0.8.9
UpsertErrorFor upserts a JobSpecError record, incrementing the occurrences counter by 1 if the record is found
type PostgresLockingStrategy ¶
type PostgresLockingStrategy struct {
// contains filtered or unexported fields
}
PostgresLockingStrategy uses a postgres advisory lock to ensure exclusive access.
type SecretGenerator ¶ added in v0.6.6
SecretGenerator is the interface for objects that generate a secret used to sign or encrypt.