#---------------------------# # Global # #---------------------------# # RootDir # - RootDir is the Chainlink node's root directory. # - This is the default directory for logging, database backups, cookies, and other misc Chainlink node files. # - Chainlink nodes will always ensure this directory has 700 permissions because it might contain sensitive data. # # - Default is set to '/.chainlink' RootDir = '/chainlink' #---------------------------# # Feature # #---------------------------# [Feature] # FeedsManager # - FeedsManager enables the experimental feeds manager service. # # - Default is set to false FeedsManager = true # UICSAKeys # - UICSAKeys enables CSA Keys in the UI. # # - Default is set to false UICSAKeys = true #---------------------------# # Log # #---------------------------# [Log] # Level # - Level determines both what is printed on the screen and what is written to the log file. # # - The available levels are: # - "debug": Useful for forensic debugging of issues. # - "info": High-level informational messages. (default) # - "warn": A mild error occurred that might require non-urgent action. # Check these warnings semi-regularly to see if any of them require attention. # These warnings usually happen due to factors outside of the control of the node operator. # - Examples: Unexpected responses from a remote API or misleading networking errors. # - "error": An unexpected error occurred during the regular operation of a well-maintained node. # Node operators might need to take action to remedy this error. Check these regularly to see if any of them require attention. # - Examples: Use of deprecated configuration options or incorrectly configured settings that cause a job to fail. # - "crit": A critical error occurred. The node might be unable to function. # Node operators should take immediate action to fix these errors. # - Examples: The node could not boot because a network socket could not be opened or the database became inaccessible. # - "panic": An exceptional error occurred that could not be handled. # If the node is unresponsive, node operators should try to restart their nodes and notify the Chainlink team of a potential bug. # - "fatal": The node encountered an unrecoverable problem and had to exit. # # - Default is 'info' Level = 'info' #---------------------------# # Log File # #---------------------------# [Log.File] # MaxSize # - MaxSize determines the log file's max size in megabytes before file rotation. # - Having this not set will disable logging to disk. # - If your disk doesn't have enough disk space, the logging will pause and the application will log errors until space is available again. # # - Values must have suffixes with a unit like: 5120mb (5,120 megabytes). If no unit suffix is provided, the value defaults to b (bytes). The list of valid unit suffixes are: # - b (bytes) # - kb (kilobytes) # - mb (megabytes) # - gb (gigabytes) # - tb (terabytes) # # - Default is '5120mb' MaxSize = '5120mb' #---------------------------# # Web Server # #---------------------------# [WebServer] # AllowOrigins # - AllowOrigins controls the URLs Chainlink nodes emit in the Allow-Origins header of its API responses. # - The setting can be a comma-separated list with no spaces. You might experience CORS issues if this is not set correctly. # # - You should set this to the external URL that you use to access the Chainlink UI. # # - You can set AllowOrigins = '*' to allow the UI to work from any URL, but it is recommended for security reasons to make it explicit instead. # # - Default is 'http://localhost:3000,http://localhost:6688' AllowOrigins = '*' #---------------------------# # Web Server TLS # #---------------------------# # - The TLS settings apply only if you want to enable TLS security on your Chainlink node. [WebServer.TLS] # CertPath # - CertPath is the location of the TLS certificate file. # # - Example: CertPath = '~/.cl/certs' CertPath = '/chainlink/tls/server.crt' # KeyPath # - KeyPath is the location of the TLS private key file. # # - Example: KeyPath = '/home/$USER/.chainlink/tls/server.key' KeyPath = '/chainlink/tls/server.key' #---------------------------# # Job Pipeline # #---------------------------# [JobPipeline] #---------------------------# # Job Pipeline HTTP Request # #---------------------------# [JobPipeline.HTTPRequest] # DefaultTimeout # - DefaultTimeout defines the default timeout for HTTP requests made by http and bridge adapters. # # - Default is '15s' DefaultTimeout = '6s' #---------------------------# # OCR # #---------------------------# # - This section applies only if you are running off-chain reporting jobs. [OCR] # Enabled # - Enabled enables OCR jobs. # # - Default is false Enabled = true # KeyBundleID # - KeyBundleID is the default key bundle ID to use for OCR jobs. If you have an OCR job that does not explicitly specify a key bundle ID, it will fall back to this value. # # - Example: KeyBundleID = 'acdd42797a8b921b2910497badc5000600000000000000000000000000000000' KeyBundleID = '' # TransmitterAddress # - TransmitterAddress is the default sending address to use for OCR. # - If you have an OCR job that does not explicitly specify a transmitter address, it will fall back to this value. # # - Example: TransmitterAddress = '0xa0788FC17B1dEe36f057c42B6F373A34B014687e' TransmitterAddress = '' #---------------------------# # P2P # #---------------------------# # - P2P supports multiple networking stack versions. You may configure [P2P.V1], [P2P.V2], or both to run simultaneously. # - If both are configured, then for each link with another peer, V2 networking will be preferred. # - If V2 does not work, the link will automatically fall back to V1. # - If V2 starts working again later, it will automatically be preferred again. # - This is useful for migrating networks without downtime. # - Note that the two networking stacks must not be configured to bind to the same IP/port. # # - All nodes in the OCR network should share the same networking stack. [P2P] # PeerID # - PeerID is the default peer ID to use for OCR jobs. If unspecified, uses the first available peer ID. # # - Example: PeerID = '12D3KooWMoejJznyDuEk5aX6GvbjaG12UzeornPCBNzMRqdwrFJw' PeerID = '' #---------------------------# # P2P v1 # #---------------------------# [P2P.V1] # Enabled # - Enabled enables P2P V1. # # Default is true Enabled = false #---------------------------# # P2P v2 # #---------------------------# [P2P.V2] # Enabled # - Enabled enables P2P V2. Note: V1.Enabled is true by default, so it must be set false in order to run V2 only. # # - Default is false Enabled = true # AnnounceAddresses # - AnnounceAddresses is the addresses the peer will advertise on the network in host:port form as accepted by net.Dial. # - The addresses should be reachable by peers of interest. # # - Example: AnnounceAddresses = ['1.2.3.4:9999', '[a52d:0:a88:1274::abcd]:1337'] AnnounceAddresses = [':'] # DefaultBootstrappers # - DefaultBootstrappers is the default bootstrapper peers for libocr's v2 networking stack. # # - Example: DefaultBootstrappers = ['$P2P_PEER_ID@1.2.3.4:9999', '$P2P_PEER_ID@example.com:1234'] DefaultBootstrappers = ['','',''] # ListenAddresses # - ListenAddresses is the addresses the peer will listen to on the network in host:port form as accepted by net.Listen(), # but the host and port must be fully specified and cannot be empty. You can specify 0.0.0.0 (IPv4) or :: (IPv6) to listen on all interfaces, but that is not recommended. # # - Example: ListenAddresses = ['1.2.3.4:9999', '[a52d:0:a88:1274::abcd]:1337'] ListenAddresses = ['0.0.0.0:'] #---------------------------# # EVM # #---------------------------# # - EVM defaults depend on ChainID: [[EVM]] # ChainID # - ChainID is the EVM chain ID. # - Mandatory. # # - Example: ChainID = '1' ChainID = '42220' # Enabled # - Enabled enables this chain. # # - Default is true Enabled = true # FinalityDepth # - FinalityDepth is the number of blocks after which an ethereum transaction is considered "final". # - Note that the default is automatically set based on chain ID so it should not be necessary to change this under normal operation. # - 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. # # - Special cases: FinalityDepth=0 would imply that transactions can be final even before they were mined into a block. # - This is not supported. FinalityDepth=1 implies that transactions are final after we see them in one block. # # - Examples: # # - Transaction sending: A transaction is sent at block height 42 # - FinalityDepth is set to 5 A re-org occurs at height 44 starting at block 41, # transaction is marked for rebroadcast A re-org occurs at height 46 starting at block 41, # transaction is marked for rebroadcast A re-org occurs at height 47 starting at block 41, # transaction is NOT marked for rebroadcast # # - Default is 50 FinalityDepth = 1 # LinkContractAddress # - LinkContractAddress is the canonical ERC-677 LINK token contract address on the given chain. Note that this is usually autodetected from chain ID. # # - Example: LinkContractAddress = '0x538aAaB4ea120b2bC2fe5D296852D948F07D849e' LinkContractAddress = '0x0000000000000000000000000000000000000000' # LogPollInterval # - ADVANCED: Do not change this setting unless you know what you are doing. # - LogPollInterval works in conjunction with Feature.LogPoller. Controls how frequently the log poller polls for logs. Defaults to the block production rate. # # - Default is '15s' LogPollInterval = '5s' # MinContractPayment # - MinContractPayment is the minimum payment in LINK required to execute a direct request job. This can be overridden on a per-job basis. # # - Default is '10000000000000 juels' MinContractPayment = '0.1 link' # MinIncomingConfirmations # - MinIncomingConfirmations is the minimum required confirmations before a log event will be consumed. # # - Default is 3 MinIncomingConfirmations = 1 # NoNewHeadsThreshold # - NoNewHeadsThreshold controls how long to wait after receiving no new heads before NodePool marks rpc endpoints as out-of-sync, and HeadTracker logs warnings. # # - Set to zero to disable out-of-sync checking. # # - Default is '3m' NoNewHeadsThreshold = '1m' #---------------------------# # EVM Gas Estimator # #---------------------------# [EVM.GasEstimator] # EIP1559DynamicFees # - EIP1559DynamicFees torces EIP-1559 transaction mode. # - Enabling EIP-1559 mode can help reduce gas costs on chains that support it. # - This is supported only on official Ethereum mainnet and testnets. # - It is not recommended to enable this setting on Polygon because the EIP-1559 fee market appears to be broken on all Polygon chains # and EIP-1559 transactions are less likely to be included than legacy transactions. # # - Technical details # - Chainlink nodes include experimental support for submitting transactions using type 0x2 (EIP-1559) envelope. # # -EIP-1559 mode is enabled by default on the Ethereum Mainnet, but can be enabled on a per-chain basis or globally. # # - This might help to save gas on spikes. Chainlink nodes should react faster on the upleg and avoid overpaying on the downleg. # - It might also be possible to set EVM.GasEstimator.BlockHistory.BatchSize to a smaller value such as 12 or even 6 # because tip cap should be a more consistent indicator of inclusion time than total gas price. # - This would make Chainlink nodes more responsive and should reduce response time variance. Some experimentation is required to find optimum settings. # # - Set with caution, if you set this on a chain that does not actually support EIP-1559 your node will be broken. # # - In EIP-1559 mode, the total price for the transaction is the minimum of base fee + tip cap and fee cap. More information can be found on the official EIP. # # - Chainlink's implementation of EIP-1559 works as follows: # # - If you are using FixedPriceEstimator: # - With gas bumping disabled, it will submit all transactions with feecap=PriceMax and tipcap=GasTipCapDefault # - With gas bumping enabled, it will submit all transactions initially with feecap=GasFeeCapDefault and tipcap=GasTipCapDefault. # # - If you are using BlockHistoryEstimator (default for most chains): # - With gas bumping disabled, it will submit all transactions with feecap=PriceMax and tipcap= # - With gas bumping enabled (default for most chains) it will submit all transactions initially with # feecap = ( current block base fee * (1.125 ^ N) + tipcap ) # where N is configurable by setting EVM.GasEstimator.BlockHistory.EIP1559FeeCapBufferBlocks but defaults to gas bump threshold+1 # and tipcap= # # - Bumping works as follows: # - Increase tipcap by max(tipcap * (1 + GasBumpPercent), tipcap + GasBumpWei) # - Increase feecap by max(feecap * (1 + GasBumpPercent), feecap + GasBumpWei) # # - A quick note on terminology - Chainlink nodes use the same terms used internally by go-ethereum source code to describe various prices. # - This is not the same as the externally used terms. For reference: # - Base Fee Per Gas = BaseFeePerGas # - Max Fee Per Gas = FeeCap # - Max Priority Fee Per Gas = TipCap # # - In EIP-1559 mode, the following changes occur to how configuration works: # - All new transactions will be sent as type 0x2 transactions specifying a TipCap and FeeCap. # Be aware that existing pending legacy transactions will continue to be gas bumped in legacy mode. # - BlockHistoryEstimator will apply its calculations (gas percentile etc) to the TipCap and this value will be used for new transactions (GasPrice will be ignored) # - FixedPriceEstimator will use GasTipCapDefault instead of GasPriceDefault for the tip cap # - FixedPriceEstimator will use GasFeeCapDefault instaed of GasPriceDefault for the fee cap # - PriceMin is ignored for new transactions and GasTipCapMinimum is used instead (default 0) # - PriceMax still represents that absolute upper limit that Chainlink will ever spend (total) on a single tx # - Keeper.GasTipCapBufferPercent is ignored in EIP-1559 mode and Keeper.GasTipCapBufferPercent is used instead # # - Default is false EIP1559DynamicFees = true #---------------------------# # EVM Gas Est Blockhistory # #---------------------------# # - These settings allow you to configure how your node calculates gas prices when using the block history estimator. # - In most cases, leaving these values at their defaults should give good results. [EVM.GasEstimator.BlockHistory] # BlockHistorySize # - BlockHistorySize controls the number of past blocks to keep in memory to use as a basis for calculating a percentile gas price. # # - Default is 8 BlockHistorySize = 12 #---------------------------# # EVM Head Tracker # #---------------------------# # - The head tracker continually listens for new heads from the chain. # # - In addition to these settings, it log warnings if EVM.NoNewHeadsThreshold is exceeded without any new blocks being emitted. [EVM.HeadTracker] # HistoryDepth # - HistoryDepth tracks the top N block numbers to keep in the heads database table. # - Note that this can easily result in MORE than N records since in the case of re-orgs we keep multiple heads for a particular block height. # - This number should be at least as large as FinalityDepth. There may be a small performance penalty to setting this to something very large (10,000+) # # - Default is 100 HistoryDepth = 50 #---------------------------# # EVM OCR # #---------------------------# [EVM.OCR] # ContractConfirmations # - ContractConfirmations sets OCR.ContractConfirmations for this EVM chain. # # - Default is 4 ContractConfirmations = 1 #---------------------------# # EVM Nodes # #---------------------------# [[EVM.Nodes]] # Name # - Name is a unique (per-chain) identifier for this node. # # - Example: Name = 'Ethereum_Mainnet_00' Name = 'Celo_Mainnet_00' # WSURL # - WSURL is the WS(S) endpoint for this node. Required for primary nodes. # # - Example: WSURL = 'wss://web.socket/test' WSURL = 'wss://' # HTTPURL # - HTTPURL is the HTTP(S) endpoint for this node. Required for all nodes. # # - Example: HTTPURL = 'https://foo.web' HTTPURL = 'https://' # SendOnly # - SendOnly limits usage to sending transaction broadcasts only. # - With this enabled, only HTTPURL is required, and WSURL is not used. # # Default is false SendOnly = false