Documentation
¶
Index ¶
- Variables
- func DefaultValue(name string) (string, bool)
- func Name(field string) string
- func TryName(field string) string
- func ZeroValue(name string) interface{}
- type ConfigSchema
- type EnvVar
- func (e *EnvVar) Parse() (v interface{}, invalid string)
- func (e *EnvVar) ParseBool() (v bool, invalid string)
- func (e *EnvVar) ParseFrom(get func(string) string) (v interface{}, invalid string, err error)
- func (e *EnvVar) ParseLogLevel() (v zapcore.Level, invalid string)
- func (e *EnvVar) ParseString() (v string, invalid string)
Constants ¶
This section is empty.
Variables ¶
Functions ¶
func DefaultValue ¶
DefaultValue looks up the default value
Types ¶
type ConfigSchema ¶
type ConfigSchema struct {
// ESSENTIAL
DatabaseURL string `env:"DATABASE_URL"`
// General/misc
ChainType string `env:"CHAIN_TYPE"`
Dev bool `env:"CHAINLINK_DEV" default:"false"`
ExplorerAccessKey string `env:"EXPLORER_ACCESS_KEY"`
ExplorerSecret string `env:"EXPLORER_SECRET"`
ExplorerURL *url.URL `env:"EXPLORER_URL"`
FlagsContractAddress string `env:"FLAGS_CONTRACT_ADDRESS"` //nodoc
InsecureFastScrypt bool `env:"INSECURE_FAST_SCRYPT" default:"false"` //nodoc
ReaperExpiration models.Duration `env:"REAPER_EXPIRATION" default:"240h"` //nodoc
RootDir string `env:"ROOT" default:"~/.chainlink"`
TelemetryIngressLogging bool `env:"TELEMETRY_INGRESS_LOGGING" default:"false"`
TelemetryIngressServerPubKey string `env:"TELEMETRY_INGRESS_SERVER_PUB_KEY"`
TelemetryIngressURL *url.URL `env:"TELEMETRY_INGRESS_URL"`
TelemetryIngressBufferSize uint `env:"TELEMETRY_INGRESS_BUFFER_SIZE" default:"100"`
TelemetryIngressMaxBatchSize uint `env:"TELEMETRY_INGRESS_MAX_BATCH_SIZE" default:"50"`
TelemetryIngressSendInterval time.Duration `env:"TELEMETRY_INGRESS_SEND_INTERVAL" default:"500ms"`
TelemetryIngressUseBatchSend bool `env:"TELEMETRY_INGRESS_USE_BATCH_SEND" default:"true"`
ShutdownGracePeriod time.Duration `env:"SHUTDOWN_GRACE_PERIOD" default:"5s"`
// Database
DatabaseListenerMaxReconnectDuration time.Duration `env:"DATABASE_LISTENER_MAX_RECONNECT_DURATION" default:"10m"` //nodoc
DatabaseListenerMinReconnectInterval time.Duration `env:"DATABASE_LISTENER_MIN_RECONNECT_INTERVAL" default:"1m"` //nodoc
MigrateDatabase bool `env:"MIGRATE_DATABASE" default:"true"`
ORMMaxIdleConns int `env:"ORM_MAX_IDLE_CONNS" default:"10"`
ORMMaxOpenConns int `env:"ORM_MAX_OPEN_CONNS" default:"20"`
TriggerFallbackDBPollInterval time.Duration `env:"TRIGGER_FALLBACK_DB_POLL_INTERVAL" default:"30s"` //nodoc
// Database Global Lock
AdvisoryLockCheckInterval time.Duration `env:"ADVISORY_LOCK_CHECK_INTERVAL" default:"1s"`
AdvisoryLockID int64 `env:"ADVISORY_LOCK_ID" default:"1027321974924625846"`
DatabaseLockingMode string `env:"DATABASE_LOCKING_MODE" default:"advisorylock"`
LeaseLockDuration time.Duration `env:"LEASE_LOCK_DURATION" default:"10s"`
LeaseLockRefreshInterval time.Duration `env:"LEASE_LOCK_REFRESH_INTERVAL" default:"1s"`
// Database Autobackups
DatabaseBackupDir string `env:"DATABASE_BACKUP_DIR"`
DatabaseBackupFrequency time.Duration `env:"DATABASE_BACKUP_FREQUENCY" default:"1h"`
DatabaseBackupMode string `env:"DATABASE_BACKUP_MODE" default:"none"`
DatabaseBackupOnVersionUpgrade bool `env:"DATABASE_BACKUP_ON_VERSION_UPGRADE" default:"true"`
DatabaseBackupURL *url.URL `env:"DATABASE_BACKUP_URL"`
// Logging
JSONConsole bool `env:"JSON_CONSOLE" default:"false"`
LogFileDir string `env:"LOG_FILE_DIR"`
LogLevel zapcore.Level `env:"LOG_LEVEL"`
LogSQL bool `env:"LOG_SQL" default:"false"`
LogToDisk bool `env:"LOG_TO_DISK" default:"false"`
LogUnixTS bool `env:"LOG_UNIX_TS" default:"false"`
// Web Server
AllowOrigins string `env:"ALLOW_ORIGINS" default:"http://localhost:3000,http://localhost:6688"`
AuthenticatedRateLimit int64 `env:"AUTHENTICATED_RATE_LIMIT" default:"1000"`
AuthenticatedRateLimitPeriod time.Duration `env:"AUTHENTICATED_RATE_LIMIT_PERIOD" default:"1m"`
BridgeResponseURL url.URL `env:"BRIDGE_RESPONSE_URL"`
HTTPServerWriteTimeout time.Duration `env:"HTTP_SERVER_WRITE_TIMEOUT" default:"10s"`
Port uint16 `env:"CHAINLINK_PORT" default:"6688"`
SecureCookies bool `env:"SECURE_COOKIES" default:"true"`
SessionTimeout models.Duration `env:"SESSION_TIMEOUT" default:"15m"`
UnAuthenticatedRateLimit int64 `env:"UNAUTHENTICATED_RATE_LIMIT" default:"5"`
UnAuthenticatedRateLimitPeriod time.Duration `env:"UNAUTHENTICATED_RATE_LIMIT_PERIOD" default:"20s"`
// Web Server MFA
RPID string `env:"MFA_RPID"`
RPOrigin string `env:"MFA_RPORIGIN"`
// Web Server TLS
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"`
// Feeds manager
FeatureFeedsManager bool `env:"FEATURE_FEEDS_MANAGER" default:"false"` //nodoc
FeatureUICSAKeys bool `env:"FEATURE_UI_CSA_KEYS" default:"false"` //nodoc
// General chains/RPC
EVMEnabled bool `env:"EVM_ENABLED" default:"true"`
EVMRPCEnabled bool `env:"EVM_RPC_ENABLED" default:"true"`
SolanaEnabled bool `env:"SOLANA_ENABLED" default:"false"`
TerraEnabled bool `env:"TERRA_ENABLED" default:"false"`
// EVM/Ethereum
// Legacy Eth ENV vars
EthereumHTTPURL string `env:"ETH_HTTP_URL"`
EthereumSecondaryURL string `env:"ETH_SECONDARY_URL"` //nodoc
EthereumSecondaryURLs string `env:"ETH_SECONDARY_URLS"`
EthereumURL string `env:"ETH_URL"`
// Global
DefaultChainID *big.Int `env:"ETH_CHAIN_ID"`
// Per-chain overrides
BalanceMonitorEnabled bool `env:"BALANCE_MONITOR_ENABLED"`
BlockBackfillDepth uint64 `env:"BLOCK_BACKFILL_DEPTH" default:"10"`
BlockBackfillSkip bool `env:"BLOCK_BACKFILL_SKIP" default:"false"`
BlockEmissionIdleWarningThreshold time.Duration `env:"BLOCK_EMISSION_IDLE_WARNING_THRESHOLD"` //nodoc
EthTxReaperInterval time.Duration `env:"ETH_TX_REAPER_INTERVAL"`
EthTxReaperThreshold time.Duration `env:"ETH_TX_REAPER_THRESHOLD"`
EthTxResendAfterThreshold time.Duration `env:"ETH_TX_RESEND_AFTER_THRESHOLD"`
EvmFinalityDepth uint32 `env:"ETH_FINALITY_DEPTH"`
EvmHeadTrackerHistoryDepth uint `env:"ETH_HEAD_TRACKER_HISTORY_DEPTH"`
EvmHeadTrackerMaxBufferSize uint `env:"ETH_HEAD_TRACKER_MAX_BUFFER_SIZE"`
EvmHeadTrackerSamplingInterval time.Duration `env:"ETH_HEAD_TRACKER_SAMPLING_INTERVAL"`
EvmLogBackfillBatchSize uint32 `env:"ETH_LOG_BACKFILL_BATCH_SIZE"`
EvmRPCDefaultBatchSize uint32 `env:"ETH_RPC_DEFAULT_BATCH_SIZE"`
LinkContractAddress string `env:"LINK_CONTRACT_ADDRESS"`
MinIncomingConfirmations uint32 `env:"MIN_INCOMING_CONFIRMATIONS"`
MinRequiredOutgoingConfirmations uint64 `env:"MIN_OUTGOING_CONFIRMATIONS"`
MinimumContractPayment assets.Link `env:"MINIMUM_CONTRACT_PAYMENT_LINK_JUELS"`
// EVM Gas Controls
EvmEIP1559DynamicFees bool `env:"EVM_EIP1559_DYNAMIC_FEES"`
EvmGasBumpPercent uint16 `env:"ETH_GAS_BUMP_PERCENT"`
EvmGasBumpThreshold uint64 `env:"ETH_GAS_BUMP_THRESHOLD"`
EvmGasBumpWei *big.Int `env:"ETH_GAS_BUMP_WEI"`
EvmGasFeeCapDefault *big.Int `env:"EVM_GAS_FEE_CAP_DEFAULT"`
EvmGasLimitDefault uint64 `env:"ETH_GAS_LIMIT_DEFAULT"`
EvmGasLimitMultiplier float32 `env:"ETH_GAS_LIMIT_MULTIPLIER"`
EvmGasLimitTransfer uint64 `env:"ETH_GAS_LIMIT_TRANSFER"`
EvmGasPriceDefault *big.Int `env:"ETH_GAS_PRICE_DEFAULT"`
EvmGasTipCapDefault *big.Int `env:"EVM_GAS_TIP_CAP_DEFAULT"`
EvmGasTipCapMinimum *big.Int `env:"EVM_GAS_TIP_CAP_MINIMUM"`
EvmMaxGasPriceWei *big.Int `env:"ETH_MAX_GAS_PRICE_WEI"`
EvmMinGasPriceWei *big.Int `env:"ETH_MIN_GAS_PRICE_WEI"`
// Gas Estimation
GasEstimatorMode string `env:"GAS_ESTIMATOR_MODE"`
BlockHistoryEstimatorBatchSize uint32 `env:"BLOCK_HISTORY_ESTIMATOR_BATCH_SIZE"`
BlockHistoryEstimatorBlockDelay uint16 `env:"BLOCK_HISTORY_ESTIMATOR_BLOCK_DELAY"`
BlockHistoryEstimatorBlockHistorySize uint16 `env:"BLOCK_HISTORY_ESTIMATOR_BLOCK_HISTORY_SIZE"`
BlockHistoryEstimatorEIP1559FeeCapBufferBlocks uint16 `env:"BLOCK_HISTORY_ESTIMATOR_EIP1559_FEE_CAP_BUFFER_BLOCKS"`
BlockHistoryEstimatorTransactionPercentile uint16 `env:"BLOCK_HISTORY_ESTIMATOR_TRANSACTION_PERCENTILE"`
// BPTXM
EvmGasBumpTxDepth uint16 `env:"ETH_GAS_BUMP_TX_DEPTH"`
EvmMaxInFlightTransactions uint32 `env:"ETH_MAX_IN_FLIGHT_TRANSACTIONS"`
EvmMaxQueuedTransactions uint64 `env:"ETH_MAX_QUEUED_TRANSACTIONS"`
EvmNonceAutoSync bool `env:"ETH_NONCE_AUTO_SYNC"`
// Job Pipeline and tasks
DefaultHTTPAllowUnrestrictedNetworkAccess bool `env:"DEFAULT_HTTP_ALLOW_UNRESTRICTED_NETWORK_ACCESS" default:"false"`
DefaultHTTPLimit int64 `env:"DEFAULT_HTTP_LIMIT" default:"32768"`
DefaultHTTPTimeout models.Duration `env:"DEFAULT_HTTP_TIMEOUT" default:"15s"`
FeatureExternalInitiators bool `env:"FEATURE_EXTERNAL_INITIATORS" default:"false"`
JobPipelineMaxRunDuration time.Duration `env:"JOB_PIPELINE_MAX_RUN_DURATION" default:"10m"`
JobPipelineReaperInterval time.Duration `env:"JOB_PIPELINE_REAPER_INTERVAL" default:"1h"`
JobPipelineReaperThreshold time.Duration `env:"JOB_PIPELINE_REAPER_THRESHOLD" default:"24h"`
JobPipelineResultWriteQueueDepth uint64 `env:"JOB_PIPELINE_RESULT_WRITE_QUEUE_DEPTH" default:"100"`
// Flux Monitor
FMDefaultTransactionQueueDepth uint32 `env:"FM_DEFAULT_TRANSACTION_QUEUE_DEPTH" default:"1"` //nodoc
FMSimulateTransactions bool `env:"FM_SIMULATE_TRANSACTIONS" default:"false"`
// OCR V2
FeatureOffchainReporting2 bool `env:"FEATURE_OFFCHAIN_REPORTING2" default:"false"` //nodoc
// Global defaults
OCR2ContractConfirmations uint `env:"OCR2_CONTRACT_CONFIRMATIONS" default:"3"` //nodoc
OCR2BlockchainTimeout time.Duration `env:"OCR2_BLOCKCHAIN_TIMEOUT" default:"20s"` //nodoc
OCR2ContractPollInterval time.Duration `env:"OCR2_CONTRACT_POLL_INTERVAL" default:"1m"` //nodoc
OCR2ContractSubscribeInterval time.Duration `env:"OCR2_CONTRACT_SUBSCRIBE_INTERVAL" default:"2m"` //nodoc
OCR2ContractTransmitterTransmitTimeout time.Duration `env:"OCR2_CONTRACT_TRANSMITTER_TRANSMIT_TIMEOUT" default:"10s"` //nodoc
OCR2DatabaseTimeout time.Duration `env:"OCR2_DATABASE_TIMEOUT" default:"10s"` //nodoc
OCR2KeyBundleID string `env:"OCR2_KEY_BUNDLE_ID"` //nodoc
OCR2MonitoringEndpoint string `env:"OCR2_MONITORING_ENDPOINT"` //nodoc
// OCR V1
FeatureOffchainReporting bool `env:"FEATURE_OFFCHAIN_REPORTING" default:"false"`
// Per-chain defaults
OCRContractConfirmations uint `env:"OCR_CONTRACT_CONFIRMATIONS"` //nodoc
OCRContractTransmitterTransmitTimeout time.Duration `env:"OCR_CONTRACT_TRANSMITTER_TRANSMIT_TIMEOUT"` //nodoc
OCRDatabaseTimeout time.Duration `env:"OCR_DATABASE_TIMEOUT"` //nodoc
OCRObservationGracePeriod time.Duration `env:"OCR_OBSERVATION_GRACE_PERIOD"` //nodoc
// Global defaults
OCRObservationTimeout time.Duration `env:"OCR_OBSERVATION_TIMEOUT" default:"5s"` //nodoc
OCRBlockchainTimeout time.Duration `env:"OCR_BLOCKCHAIN_TIMEOUT" default:"20s"` //nodoc
OCRContractPollInterval time.Duration `env:"OCR_CONTRACT_POLL_INTERVAL" default:"1m"` //nodoc
OCRContractSubscribeInterval time.Duration `env:"OCR_CONTRACT_SUBSCRIBE_INTERVAL" default:"2m"` //nodoc
OCRDefaultTransactionQueueDepth uint32 `env:"OCR_DEFAULT_TRANSACTION_QUEUE_DEPTH" default:"1"` //nodoc
// Optional
OCRKeyBundleID string `env:"OCR_KEY_BUNDLE_ID"`
OCRMonitoringEndpoint string `env:"OCR_MONITORING_ENDPOINT"`
OCRSimulateTransactions bool `env:"OCR_SIMULATE_TRANSACTIONS" default:"false"`
OCRTraceLogging bool `env:"OCR_TRACE_LOGGING" default:"false"` //nodoc
OCRTransmitterAddress string `env:"OCR_TRANSMITTER_ADDRESS"`
// P2P Networking
// V1 and V2
P2PNetworkingStack ocrnetworking.NetworkingStack `env:"P2P_NETWORKING_STACK" default:"V1"`
P2PIncomingMessageBufferSize int `env:"P2P_INCOMING_MESSAGE_BUFFER_SIZE" default:"10"` //nodoc
P2POutgoingMessageBufferSize int `env:"P2P_OUTGOING_MESSAGE_BUFFER_SIZE" default:"10"` //nodoc
// V1 Only
P2PAnnounceIP net.IP `env:"P2P_ANNOUNCE_IP"`
P2PAnnouncePort uint16 `env:"P2P_ANNOUNCE_PORT"`
P2PBootstrapCheckInterval time.Duration `env:"P2P_BOOTSTRAP_CHECK_INTERVAL" default:"20s"` //nodoc
P2PBootstrapPeers []string `env:"P2P_BOOTSTRAP_PEERS"`
P2PDHTAnnouncementCounterUserPrefix uint32 `env:"P2P_DHT_ANNOUNCEMENT_COUNTER_USER_PREFIX" default:"0"` //nodoc
P2PDHTLookupInterval int `env:"P2P_DHT_LOOKUP_INTERVAL" default:"10"` //nodoc
P2PListenIP net.IP `env:"P2P_LISTEN_IP" default:"0.0.0.0"`
P2PListenPort uint16 `env:"P2P_LISTEN_PORT"`
P2PNewStreamTimeout time.Duration `env:"P2P_NEW_STREAM_TIMEOUT" default:"10s"`
P2PPeerID p2pkey.PeerID `env:"P2P_PEER_ID"`
P2PPeerstoreWriteInterval time.Duration `env:"P2P_PEERSTORE_WRITE_INTERVAL" default:"5m"` //nodoc
// V2 Only
P2PV2AnnounceAddresses []string `env:"P2PV2_ANNOUNCE_ADDRESSES"`
P2PV2Bootstrappers []string `env:"P2PV2_BOOTSTRAPPERS"`
P2PV2DeltaDial models.Duration `env:"P2PV2_DELTA_DIAL" default:"15s"` //nodoc
P2PV2DeltaReconcile models.Duration `env:"P2PV2_DELTA_RECONCILE" default:"1m"` //nodoc
P2PV2ListenAddresses []string `env:"P2PV2_LISTEN_ADDRESSES"`
// DEPRECATED
OCROutgoingMessageBufferSize int `env:"OCR_OUTGOING_MESSAGE_BUFFER_SIZE" default:"10"` //nodoc
OCRIncomingMessageBufferSize int `env:"OCR_INCOMING_MESSAGE_BUFFER_SIZE" default:"10"` //nodoc
OCRDHTLookupInterval int `env:"OCR_DHT_LOOKUP_INTERVAL" default:"10"` //nodoc
OCRBootstrapCheckInterval time.Duration `env:"OCR_BOOTSTRAP_CHECK_INTERVAL" default:"20s"` //nodoc
OCRNewStreamTimeout time.Duration `env:"OCR_NEW_STREAM_TIMEOUT" default:"10s"` //nodoc
// Keeper
KeeperCheckUpkeepGasPriceFeatureEnabled bool `env:"KEEPER_CHECK_UPKEEP_GAS_PRICE_FEATURE_ENABLED" default:"false"` //nodoc
KeeperDefaultTransactionQueueDepth uint32 `env:"KEEPER_DEFAULT_TRANSACTION_QUEUE_DEPTH" default:"1"` //nodoc
KeeperGasPriceBufferPercent uint32 `env:"KEEPER_GAS_PRICE_BUFFER_PERCENT" default:"20"`
KeeperGasTipCapBufferPercent uint32 `env:"KEEPER_GAS_TIP_CAP_BUFFER_PERCENT" default:"20"`
KeeperMaximumGracePeriod int64 `env:"KEEPER_MAXIMUM_GRACE_PERIOD" default:"100"`
KeeperRegistryCheckGasOverhead uint64 `env:"KEEPER_REGISTRY_CHECK_GAS_OVERHEAD" default:"200000"`
KeeperRegistryPerformGasOverhead uint64 `env:"KEEPER_REGISTRY_PERFORM_GAS_OVERHEAD" default:"150000"`
KeeperRegistrySyncInterval time.Duration `env:"KEEPER_REGISTRY_SYNC_INTERVAL" default:"30m"`
KeeperRegistrySyncUpkeepQueueSize uint32 `env:"KEEPER_REGISTRY_SYNC_UPKEEP_QUEUE_SIZE" default:"10"`
// CLI client
AdminCredentialsFile string `env:"ADMIN_CREDENTIALS_FILE" default:"$ROOT/apicredentials"`
ClientNodeURL string `env:"CLIENT_NODE_URL" default:"http://localhost:6688"`
InsecureSkipVerify bool `env:"INSECURE_SKIP_VERIFY" default:"false"`
// Debugging
AutoPprofEnabled bool `env:"AUTO_PPROF_ENABLED" default:"false"` //nodoc
AutoPprofProfileRoot string `env:"AUTO_PPROF_PROFILE_ROOT"` //nodoc (defaults to $CHAINLINK_ROOT)
AutoPprofPollInterval models.Duration `env:"AUTO_PPROF_POLL_INTERVAL" default:"10s"` //nodoc
AutoPprofGatherDuration models.Duration `env:"AUTO_PPROF_GATHER_DURATION" default:"10s"` //nodoc
AutoPprofGatherTraceDuration models.Duration `env:"AUTO_PPROF_GATHER_TRACE_DURATION" default:"5s"` //nodoc
AutoPprofMaxProfileSize utils.FileSize `env:"AUTO_PPROF_MAX_PROFILE_SIZE" default:"100mb"` //nodoc
AutoPprofCPUProfileRate int `env:"AUTO_PPROF_CPU_PROFILE_RATE" default:"1"` //nodoc
AutoPprofMemProfileRate int `env:"AUTO_PPROF_MEM_PROFILE_RATE" default:"1"` //nodoc
AutoPprofBlockProfileRate int `env:"AUTO_PPROF_BLOCK_PROFILE_RATE" default:"1"` //nodoc
AutoPprofMutexProfileFraction int `env:"AUTO_PPROF_MUTEX_PROFILE_FRACTION" default:"1"` //nodoc
AutoPprofMemThreshold utils.FileSize `env:"AUTO_PPROF_MEM_THRESHOLD" default:"4gb"` //nodoc
AutoPprofGoroutineThreshold int `env:"AUTO_PPROF_GOROUTINE_THRESHOLD" default:"5000"` //nodoc
}
ConfigSchema records the schema of configuration at the type level
type EnvVar ¶
type EnvVar struct {
// contains filtered or unexported fields
}
EnvVar is an environment variable which
func New ¶
New creates a new EnvVar for the given name and parse func. name must match the ConfigSchema field.
func (*EnvVar) Parse ¶
Parse attempts to parse the value returned from the environment, falling back to the default value when empty or invalid.
func (*EnvVar) ParseFrom ¶
ParseFrom attempts to parse the value returned from calling get with the env var name, falling back to the default value when empty or invalid.
func (*EnvVar) ParseLogLevel ¶
ParseLogLevel parses an env var's log level
func (*EnvVar) ParseString ¶
ParseString parses string
Click to show internal directories.
Click to hide internal directories.