config

package
v2.2.0-mercury-20230602 Latest Latest
Warning

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

Go to latest
Published: Jun 2, 2023 License: MIT Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrEnvUnset = errors.New("env var unset")
)

nolint

View Source
var ErrInvalidChainType = fmt.Errorf("must be one of %s or omitted", strings.Join([]string{
	string(ChainArbitrum), string(ChainMetis), string(ChainOptimism), string(ChainXDai), string(ChainOptimismBedrock),
}, ", "))

Functions

func FriendlyBigInt

func FriendlyBigInt(n *big.Int) string

FriendlyBigInt returns a string printing the integer in both decimal and hexadecimal formats.

Types

type AppConfig added in v2.2.0

type AppConfig interface {
	AppID() uuid.UUID
	RootDir() string
	ShutdownGracePeriod() time.Duration

	Validate() error
	ValidateDB() error
	LogConfiguration(log LogfFn)
	SetLogLevel(lvl zapcore.Level) error
	SetLogSQL(logSQL bool)
	SetPasswords(keystore, vrf *string)

	AutoPprof
	DatabaseV1
	Ethereum
	Explorer
	FeatureFlags
	FluxMonitor
	Insecure
	JobPipeline
	Keeper
	Keystore
	Logging
	OCR1Config
	OCR2Config
	P2PNetworking
	P2PV1Networking
	P2PV2Networking
	Prometheus
	Pyroscope
	Secrets
	Sentry
	TelemetryIngress
	Web
	audit.Config

	Database() Database
}

type AutoPprof added in v2.2.0

type AutoPprof interface {
	AutoPprofBlockProfileRate() int
	AutoPprofCPUProfileRate() int
	AutoPprofGatherDuration() models.Duration
	AutoPprofGatherTraceDuration() models.Duration
	AutoPprofGoroutineThreshold() int
	AutoPprofMaxProfileSize() utils.FileSize
	AutoPprofMemProfileRate() int
	AutoPprofMemThreshold() utils.FileSize
	AutoPprofMutexProfileFraction() int
	AutoPprofPollInterval() models.Duration
	AutoPprofProfileRoot() string
}

type Backup added in v2.3.0

type Backup interface {
	Dir() string
	Frequency() time.Duration
	Mode() DatabaseBackupMode
	OnVersionUpgrade() bool
	URL() *url.URL
}

type ChainType

type ChainType string

ChainType denotes the chain or network to work with

const (
	ChainArbitrum        ChainType = "arbitrum"
	ChainMetis           ChainType = "metis"
	ChainOptimism        ChainType = "optimism"
	ChainOptimismBedrock ChainType = "optimismBedrock"
	ChainXDai            ChainType = "xdai"
)

nolint

func (ChainType) IsL2

func (c ChainType) IsL2() bool

IsL2 returns true if this chain is a Layer 2 chain. Notably:

  • the block numbers used for log searching are different from calling block.number
  • gas bumping is not supported, since there is no tx mempool

func (ChainType) IsValid

func (c ChainType) IsValid() bool

IsValid returns true if the ChainType value is known or empty.

type Database added in v2.2.0

type Database interface {
	Backup() Backup
	Listener() Listener
	Lock() Lock
	DatabaseDefaultQueryTimeout() time.Duration
	LogSQL() bool

	Dialect() dialects.DialectName
	DefaultIdleInTxSessionTimeout() time.Duration
	DefaultLockTimeout() time.Duration
	MigrateDatabase() bool
	MaxIdleConns() int
	MaxOpenConns() int
	URL() url.URL
}

type DatabaseBackupMode

type DatabaseBackupMode string
var (
	DatabaseBackupModeNone DatabaseBackupMode = "none"
	DatabaseBackupModeLite DatabaseBackupMode = "lite"
	DatabaseBackupModeFull DatabaseBackupMode = "full"
)

type DatabaseV1

type DatabaseV1 interface {
	DatabaseDefaultQueryTimeout() time.Duration
	LogSQL() bool
}

Note: this is a legacy interface. Any new fields should be added to the database interface defined below and accessed via cfg.Database().<FieldName>().

type Ethereum added in v2.2.0

type Ethereum interface {
	EthereumHTTPURL() *url.URL
	EthereumSecondaryURLs() []url.URL
	EthereumURL() string
	DefaultChainID() *big.Int
}

type Explorer added in v2.2.0

type Explorer interface {
	ExplorerAccessKey() string
	ExplorerSecret() string
	ExplorerURL() *url.URL
}

type FeatureFlags

type FeatureFlags interface {
	FeatureExternalInitiators() bool
	FeatureFeedsManager() bool
	FeatureOffchainReporting() bool
	FeatureOffchainReporting2() bool
	FeatureUICSAKeys() bool
	FeatureLogPoller() bool

	AutoPprofEnabled() bool
	EVMEnabled() bool
	EVMRPCEnabled() bool
	P2PEnabled() bool
	CosmosEnabled() bool
	SolanaEnabled() bool
	StarkNetEnabled() bool
}

FeatureFlags contains bools that toggle various features or chains TODO: document the new ones

type FluxMonitor added in v2.2.0

type FluxMonitor interface {
	FMDefaultTransactionQueueDepth() uint32
	FMSimulateTransactions() bool
}

type Insecure added in v2.2.0

type Insecure interface {
	DevWebServer() bool
	InsecureFastScrypt() bool
	OCRDevelopmentMode() bool
	DisableRateLimiting() bool
	InfiniteDepthQueries() bool
}

type JobPipeline added in v2.2.0

type JobPipeline interface {
	DefaultHTTPLimit() int64
	DefaultHTTPTimeout() models.Duration
	JobPipelineMaxRunDuration() time.Duration
	JobPipelineMaxSuccessfulRuns() uint64
	JobPipelineReaperInterval() time.Duration
	JobPipelineReaperThreshold() time.Duration
	JobPipelineResultWriteQueueDepth() uint64
}

type Keeper added in v2.2.0

type Keeper interface {
	KeeperDefaultTransactionQueueDepth() uint32
	KeeperGasPriceBufferPercent() uint16
	KeeperGasTipCapBufferPercent() uint16
	KeeperBaseFeeBufferPercent() uint16
	KeeperMaximumGracePeriod() int64
	KeeperRegistryCheckGasOverhead() uint32
	KeeperRegistryPerformGasOverhead() uint32
	KeeperRegistryMaxPerformDataSize() uint32
	KeeperRegistrySyncInterval() time.Duration
	KeeperRegistrySyncUpkeepQueueSize() uint32
	KeeperTurnLookBack() int64
}

type Keystore added in v2.2.0

type Keystore interface {
	KeystorePassword() string
}

type Listener added in v2.3.0

type Listener interface {
	MaxReconnectDuration() time.Duration
	MinReconnectInterval() time.Duration
	FallbackPollInterval() time.Duration
}

type Lock added in v2.3.0

type Lock interface {
	LockingMode() string
	LeaseDuration() time.Duration
	LeaseRefreshInterval() time.Duration
}

type LogfFn added in v2.1.0

type LogfFn func(string, ...any)

type Logging added in v2.2.0

type Logging interface {
	DefaultLogLevel() zapcore.Level
	LogFileDir() string
	LogLevel() zapcore.Level
	LogFileMaxSize() utils.FileSize
	LogFileMaxAge() int64
	LogFileMaxBackups() int64
	LogUnixTimestamps() bool
	JSONConsole() bool
}

type OCR1Config

type OCR1Config interface {
	// OCR1 config, can override in jobs, only ethereum.
	OCRBlockchainTimeout() time.Duration
	OCRContractPollInterval() time.Duration
	OCRContractSubscribeInterval() time.Duration
	OCRKeyBundleID() (string, error)
	OCRObservationTimeout() time.Duration
	OCRSimulateTransactions() bool
	OCRTransmitterAddress() (ethkey.EIP55Address, error) // OCR2 can support non-evm changes
	// OCR1 config, cannot override in jobs
	OCRTraceLogging() bool
	OCRDefaultTransactionQueueDepth() uint32
	OCRCaptureEATelemetry() bool
}

OCR1Config is a subset of global config relevant to OCR v1.

type OCR2Config

type OCR2Config interface {
	// OCR2 config, can override in jobs, all chains
	OCR2ContractConfirmations() uint16
	OCR2ContractTransmitterTransmitTimeout() time.Duration
	OCR2BlockchainTimeout() time.Duration
	OCR2DatabaseTimeout() time.Duration
	OCR2ContractPollInterval() time.Duration
	OCR2ContractSubscribeInterval() time.Duration
	OCR2KeyBundleID() (string, error)
	// OCR2 config, cannot override in jobs
	OCR2TraceLogging() bool
	OCR2CaptureEATelemetry() bool
	OCR2DefaultTransactionQueueDepth() uint32
	OCR2SimulateTransactions() bool
}

OCR2Config is a subset of global config relevant to OCR v2.

type P2PDeprecated

type P2PDeprecated interface {
	// contains filtered or unexported methods
}

type P2PNetworking

type P2PNetworking interface {
	P2PNetworkingStack() (n ocrnetworking.NetworkingStack)
	P2PNetworkingStackRaw() string
	P2PPeerID() p2pkey.PeerID
	P2PPeerIDRaw() string
	P2PIncomingMessageBufferSize() int
	P2POutgoingMessageBufferSize() int
}

P2PNetworking is a subset of global config relevant to p2p networking.

type P2PV1Networking

type P2PV1Networking interface {
	P2PAnnounceIP() net.IP
	P2PAnnouncePort() uint16
	P2PBootstrapPeers() ([]string, error)
	P2PDHTAnnouncementCounterUserPrefix() uint32
	P2PListenIP() net.IP
	P2PListenPort() uint16
	P2PListenPortRaw() string
	P2PNewStreamTimeout() time.Duration
	P2PBootstrapCheckInterval() time.Duration
	P2PDHTLookupInterval() int
	P2PPeerstoreWriteInterval() time.Duration
}

P2PV1Networking is a subset of global config relevant to p2p v1 networking.

type P2PV2Networking

type P2PV2Networking interface {
	P2PV2AnnounceAddresses() []string
	P2PV2Bootstrappers() (locators []ocrcommontypes.BootstrapperLocator)
	P2PV2BootstrappersRaw() []string
	P2PV2DeltaDial() models.Duration
	P2PV2DeltaReconcile() models.Duration
	P2PV2ListenAddresses() []string
}

P2PV2Networking is a subset of global config relevant to p2p v2 networking.

type Prometheus added in v2.2.0

type Prometheus interface {
	PrometheusAuthToken() string
}

type Pyroscope added in v2.2.0

type Pyroscope interface {
	PyroscopeAuthToken() string
	PyroscopeServerAddress() string
	PyroscopeEnvironment() string
}

type Secrets added in v2.2.0

type Secrets interface {
	MercuryCredentials(credName string) *ocr2models.MercuryCredentials
	ThresholdKeyShare() string
	VRFPassword() string
}

type Sentry added in v2.2.0

type Sentry interface {
	SentryDSN() string
	SentryDebug() bool
	SentryEnvironment() string
	SentryRelease() string
}

type TelemetryIngress added in v2.2.0

type TelemetryIngress interface {
	TelemetryIngressLogging() bool
	TelemetryIngressUniConn() bool
	TelemetryIngressServerPubKey() string
	TelemetryIngressURL() *url.URL
	TelemetryIngressBufferSize() uint
	TelemetryIngressMaxBatchSize() uint
	TelemetryIngressSendInterval() time.Duration
	TelemetryIngressSendTimeout() time.Duration
	TelemetryIngressUseBatchSend() bool
}

type Web added in v2.2.0

type Web interface {
	AllowOrigins() string
	AuthenticatedRateLimit() int64
	AuthenticatedRateLimitPeriod() models.Duration
	BridgeCacheTTL() time.Duration
	BridgeResponseURL() *url.URL
	CertFile() string
	HTTPServerWriteTimeout() time.Duration
	KeyFile() string
	Port() uint16
	RPID() string
	RPOrigin() string
	TLSCertPath() string
	TLSDir() string
	TLSHost() string
	TLSKeyPath() string
	TLSPort() uint16
	TLSRedirect() bool
	UnAuthenticatedRateLimit() int64
	UnAuthenticatedRateLimitPeriod() models.Duration
	ReaperExpiration() models.Duration
	SecureCookies() bool
	SessionOptions() sessions.Options
	SessionTimeout() models.Duration
}

Directories

Path Synopsis
v2
docs/cmd/generate
Docs prints core node documentation and/or a list of errors.
Docs prints core node documentation and/or a list of errors.

Jump to

Keyboard shortcuts

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