node of the decentralized oracle network, bridging on and off-chain computation
v2/keys/evm
and v2/keys/eth
routes to return 400 and 404 status codes where appropriate. Previously 500s were returned when requested resources were not found or client requests could not be parsed.allowHigherAmounts
.node start
or node validate
:AllowSimplePasswords=true
Order
(range from 1 to 100) to EVM.Nodes
that is used for the PriorityLevel
node selector and also as a tie-breaker for HighestHead
and TotalDifficulty
. Order
levels are considered in ascending order. If not defined it will default to Order = 100
(last level).PriorityLevel
for EVM, it is a tiered round-robin in ascending order of theOrder
field. Example:[EVM.NodePool]
SelectionMode = 'PriorityLevel'
[[EVM.Nodes]]
Name = '...'
WSURL = '...'
HTTPURL = '...'
Order = 5
The config keys WebServer.StartTimeout
and WebServer.HTTPMaxSize
. These keys respectively set a timeout for the node server to
start and set the max request size for HTTP requests. Previously these attributes were set by
JobPipeline.DefaultHTTPLimit
/JobPipeline.DefaultHTTPTimeout
. To migrate to these new fields, set their values to be identical to
JobPipeline.DefaultHTTPLimit
/JobPipeline.DefaultHTTPTimeout
.
Low latency oracle jobs now support in-protocol block range guarantees. This is necessary in order to produce reports with block number ranges that do not overlap. It can now be guaranteed at the protocol level, so we can use local state instead of relying on an unreliable round-trip to the Mercury server.
New settings Evm.GasEstimator.LimitJobType.OCR2
, OCR2.DefaultTransactionQueueDepth
, OCR2.SimulateTransactions
for OCR2
jobs. These replace the settings Evm.GasEstimator.LimitJobType.OCR
, OCR.DefaultTransactionQueueDepth
, and OCR.SimulateTransactions
for OCR2.
Add new config parameter to OCR and OCR2 named TraceLogging
that enables trace logging of OCR and OCR2 jobs, previously this behavior was controlled from the P2P.TraceLogging
parameter. To maintain the same behavior set OCR.TraceLogging
and OCR2.TraceLogging
to the same value P2P.TraceLogging
was set.
Add two new config parameters WebServer.ListenIP
and WebServer.TLS.ListenIP
which allows binding Chainlink HTTP/HTTPS servers to a particular IP. The default is '0.0.0.0' which listens to all IP addresses (same behavior as before). Set to '127.0.0.1' to only allow connections from the local machine (this can be handy for local development).
Add several new metrics for mercury feeds, related to WSRPC connections:
mercury_transmit_timeout_count
mercury_dial_count
mercury_dial_success_count
mercury_dial_error_count
mercury_connection_reset_count
Node operators may wish to add alerting based around these metrics.
nodes xxx list
command that caused results to not be displayed correctlynode
subcommands.Evm.GasEstimator.LimitJobType.OCR
, OCR.DefaultTransactionQueueDepth
, and OCR.SimulateTransactions
settings so they
apply only to OCR. Previously these settings would apply to OCR2 as well as OCR. You must use the OCR2 equivalents added above if you
want your settings to apply to OCR2.CL_SOLANA_CMD
and CL_MEDIAN_CMD
. See plugins/README.md.LogBackfillBatchSize = 1000
RPCDefaultBatchSize = 250
GasEstimator.BatchSize = 25
CL_DEV
is now ignored on production builds.evm-chain-id
alias for evmChainID
in commands: chainlink blocks replay
, chainlink forwarders track
, chainlink keys ... chain
old-password
alias for oldpassword
in commands: chainlink keys ... import
new-password
alias for newpassword
in commands: chainlink keys ... export
new-role
alias for newrole
in commands: admin users chrole
set-next-nonce
alias for setNextNonce
in commands: chainlink keys ... chain
chainlink node
command rather than being global flags.chainlink config validate
to chainlink node validate
.chainlink node {status,profile}
to chainlink admin {status,profile}
.CL_CONFIG
always processed as the last configuration, with the effect of being the final override
of any values provided via configuration files.FeatureFeedsManager
/FEATURE_FEEDS_MANAGER
is now true by default.mailbox_load_percent
for percent of "Mailbox
" capacity used.JobPipeline.MaxSuccessfulRuns
caps the total number of
saved completed runs per job. This is done in response to the pipeline_runs
table potentially becoming large, which can cause performance degradation.
The default is set to 10,000. You can set it to 0 to disable run saving
entirely. NOTE: This can only be configured via TOML and not with an
environment variable.feeds_job_proposal_count
to track counts of job proposals partitioned by proposal status.minConfirmations
parameter on the ethtx
task.KEEPER_TURN_FLAG_ENABLED
as all networks/nodes have switched this to true
now. The variable should be completely removed my NOPs.Keeper.UpkeepCheckGasPriceEnabled
config (KEEPER_CHECK_UPKEEP_GAS_PRICE_FEATURE_ENABLED
in old env var configuration) as this feature is deprecated now. The variable should be completely removed by NOPs.config dump
subcommand was fixed to dump the correct config data.
P2P.V1.Enabled
config logic incorrectly matched V2, by only setting explicit true values so that otherwise the default is used. The V1.Enabled
default value is actually true already, and is now updated to only set explicit false values.[EVM.Transactions]
config fields MaxQueued
& MaxInFlight
will now correctly match ETH_MAX_QUEUED_TRANSACTIONS
& ETH_MAX_IN_FLIGHT_TRANSACTIONS
.EVM.NodePool.SelectionMode
TotalDifficulty
to use the node with the greatest total difficulty.bridge_latency_seconds
bridge_errors_total
bridge_cache_hits_total
bridge_cache_errors_total
EVM.NodePool.SyncThreshold
to ensure that live nodes do not lag too far behind.SyncThreshold = 5 # Default
SyncThreshold controls how far a node may lag behind the best node before being marked out-of-sync. Depending on
SelectionMode
, this represents a difference in the number of blocks (HighestHead
,RoundRobin
), or total difficulty (TotalDifficulty
).Set to 0 to disable this check.
Chainlink now supports static configuration via TOML files as an alternative to the existing combination of environment variables and persisted database configurations.
This is currently experimental, but in the future (with v2.0.0
), it will become mandatory as the only supported configuration method. Avoid using TOML for configuration unless running on a test network for this release.
TOML configuration can be enabled by simply using the new -config <filename>
flag or CL_CONFIG
environment variable.
Multiple files can be used (-c configA.toml -c configB.toml
), and will be applied in order with duplicated fields overriding any earlier values.
Existing nodes can automatically generate their equivalent TOML configuration via the config dump
subcommand.
Secrets must be configured manually and passed via -secrets <filename>
or equivalent environment variables.
Format details: CONFIG.md • SECRETS.md
Note: You cannot mix legacy environment variables with TOML configuration. Leaving any legacy env vars set will fail validation and prevent boot.
Dump your current configuration as TOML.
chainlink config dump > config.toml
Inspect your full effective configuration, and ensure it is valid. This includes defaults.
chainlink --config config.toml --secrets secrets.toml config validate
Run the node.
chainlink -c config.toml -s secrets.toml node start
When set to d
units of time, this variable enables using cached bridge responses that are at most d
units old. Caching is disabled by default.
Example BridgeCacheTTL=10s
, BridgeCacheTTL=1m
NODE_NO_NEW_HEADS_THRESHOLD=0
no longer requires NODE_SELECTION_MODE=RoundRobin
.When set, this environment variable configures and enables an optional HTTP logger which is used specifically to send audit log events. Audit logs events are emitted when specific actions are performed by any of the users through the node's API. The value of this variable should be a full URL. Log items will be sent via POST
There are audit log implemented for the following events:
A full list of audit log enum types can be found in the source within the audit
package (audit_types.go
).
The following AUDIT_LOGGER_*
environment variables below configure this optional audit log HTTP forwarder.
An optional list of HTTP headers to be added for every optional audit log event. If the above AUDIT_LOGGER_FORWARD_TO_URL
is set, audit log events will be POSTed to that URL, and will include headers specified in this environment variable. One example use case is auth for example: AUDIT_LOGGER_HEADERS="Authorization||{{token}}"
.
Header keys and values are delimited on ||, and multiple headers can be added with a forward slash delimiter ('\'). An example of multiple key value pairs:
AUDIT_LOGGER_HEADERS="Authorization||{{token}}\Some-Other-Header||{{token2}}"
When the audit log HTTP forwarder is enabled, if there is a value set for this optional environment variable then the POST body will be wrapped in a dictionary in a field specified by the value of set variable. This is to help enable specific logging service integrations that may require the event JSON in a special shape. For example: AUDIT_LOGGER_JSON_WRAPPER_KEY=event
will create the POST body:
{
"event": {
"eventID": EVENT_ID_ENUM,
"data": ...
}
}
This feature only applies on EVM chains when using BlockHistoryEstimator (the most common case).
Chainlink will now try to automatically detect if there is a transaction propagation/connectivity issue and prevent bumping in these cases. This can help avoid the situation where RPC nodes are not propagating transactions for some reason (e.g. go-ethereum bug, networking issue etc) and Chainlink responds in a suboptimal way by bumping transactions to a very high price in an effort to get them mined. This can lead to unnecessary expense when the connectivity issue is resolved and the transactions are finally propagated into the mempool.
This feature is enabled by default with fairly conservative settings: if a transaction has been priced above the 90th percentile of the past 12 blocks, but still wants to bump due to not being mined, a connectivity/propagation issue is assumed and all further bumping will be prevented for this transaction. In this situation, Chainlink will start firing the block_history_estimator_connectivity_failure_count
prometheus counter and logging at critical level until the transaction is mined.
The default settings should work fine for most users. For advanced users, the values can be tweaked by changing BLOCK_HISTORY_ESTIMATOR_CHECK_INCLUSION_BLOCKS
and BLOCK_HISTORY_ESTIMATOR_CHECK_INCLUSION_PERCENTILE
.
To disable connectivity checking completely, set BLOCK_HISTORY_ESTIMATOR_CHECK_INCLUSION_BLOCKS=0
.
The default maximum gas price on most networks is now effectively unlimited.
ETH_MAX_GAS_PRICE_WEI
.EVMChainID field will be auto-added with default chain id to job specs of newly created OCR jobs, if not explicitly included.
length
and lessthan
tasks (pipeline).gasUnlimited
parameter to ethcall
task./keys
page in Operator UI now exposes several admin commands, namely: