node of the decentralized oracle network, bridging on and off-chain computation
OTHER License
Bot releases are hidden (Show)
Published by momentmaker 26 days ago
EVM.GasEstimator.EstimateLimit
to toggle this featureNoNewFinalizedHeadsThreshold
Published by chainchad about 2 months ago
Support for EIP-1559 transactions for Scroll
Protocol-level support for preventing bid/ask variant violations in mercury
Add “VerboseLogging” option to mercury. Off by default, can be enabled like so:
[Mercury]
VerboseLogging = true
Published by snehaagni 4 months ago
xdai
ChainType
config option. Moving forward, only gnosis
can be used.HeadTracker's support of finality tags caused a drastic increase in the number of tracked blocks on the Arbitrum chain (from 50 to 12,000), which has led to a 30% increase in CPU usage.
The fix improves the data structure for tracking blocks and makes lookup more efficient. BenchmarkHeadTracker_Backfill shows 40x time reduction.
Published by snehaagni 5 months ago
Added a mechanism to validate forwarders for OCR2 and fallback to EOA if necessary
Added a new CLI command, blocks find-lca,
which finds the latest block that is available in both the database and on the chain for the specified chain. Added a new CLI command, node remove-blocks,
which removes all blocks and logs greater than or equal to the specified block number.
Re-enable abandoned transaction tracker
Enable configurable client error regexes for error classification. New toml configuration options for [EVM.NodePool.Errors] to pass regexes on NonceTooLow, NonceTooHigh, ReplacementTransactionUnderpriced, LimitReached, TransactionAlreadyInMempool, TerminallyUnderpriced, InsufficientEth, TxFeeExceedsCap, L2FeeTooLow, L2FeeTooHigh, L2Full, TransactionAlreadyMined, Fatal, and ServiceUnavailable.
Validate user email before asking for a password in the chainlink CLI.
Add configurability to mercury transmitter
[Mercury.Transmitter]
TransmitQueueMaxSize = 10_000 # Default
TransmitTimeout = "5s" # Default
xdai
ChainType
has been renamed to gnosis
to match the chain's new name. The old value is still supported but has been deprecated and will be removed in v2.13.0.Published by snehaagni 6 months ago
pool_rpc_node_highest_finalized_block
metric that tracks the highest finalized block seen per RPC. If FinalityTagEnabled = true
, a positive NodePool.FinalizedBlockPollInterval is needed to collect the metric. If the finality tag is not enabled, the metric is populated with a calculated latest finalized block based on the latest head and finality depth.JuelsPerFeeCoinCacheDuration
under the JuelsPerFeeCoinCache
struct in config. Rename JuelsPerFeeCoinCacheDuration
to updateInterval. Add stalenessAlertThreshold
to JuelsPerFeeCoinCache
config. The StalenessAlertThreshold
config option has a default of 24 hours which means that it doesn't have to be set unless we want to override the duration after which a stale cache should start throwing errors.FinalityTagEnabled
config option. If the flag is enabled, HeadTracker backfills blocks up to the latest finalized block provided by the corresponding RPC call. To address potential misconfigurations, HistoryDepth
is now calculated from the latest finalized block instead of the head. Note that consumers like TXM and LogPoller do not fully use the Finality Tag yet.xdai
ChainType
has been renamed to gnosis
to match the chain's new name. The old value is still supported but has been deprecated and will be removed in v2.13.0.Published by snehaagni 6 months ago
SuggestedPriceEstimator
. The bumping mechanism for this estimator refetches the price from the RPC and adds a buffer on top using the greater of BumpPercent
and BumpMin
.NodeIsSyncingEnabled
for EVM.NodePool
that will check on every reconnection to an RPC if it's syncing and should not be transitioned to Alive
state. Disabled by default.LogPrunePageSize
parameter to the EVM configuration. This parameter controls the number of logs removed during prune phase in LogPoller. Default value is 0, which deletes all logs at once - exactly how it used to work, so it doesn't require any changes on the product's side.P2P.V2
is required in configuration when either OCR
or OCR2
are enabled. The node will fail to boot if P2P.V2
is not enabled.LimitDefault
and LimitMax
configs types to uint64
Published by snehaagni 8 months ago
eth_call
RPC requests are now sent with both input
and data
fields to increase compatibility with servers that recognize only one.0x3
(Blob) transactions in the gas calculations to estimate it more accurately.Published by snehaagni 8 months ago
chainlink health
CLI command and HTML /health
endpoint, to provide human-readable views of the underlying JSON health data.stream
to represent streamspecs. This job type is not yet used anywhere but will be required for Data Streams V1.CL_MEDIAN_ENV
, CL_SOLANA_ENV
, and CL_STARKNET_ENV
for setting environment variables in LOOP Plugins with an .env
file.
echo "Foo=Bar" >> median.env
echo "Baz=Val" >> median.env
CL_MEDIAN_ENV="median.env"
P2P.V1
is no longer supported and must not be set in TOML configuration in order to boot. Use P2P.V2
instead. If you are using both, V1
can simply be removed.TelemetryIngress.URL
and TelemetryIngress.ServerPubKey
from TOML configuration, these fields are replaced by [[TelemetryIngress.Endpoints]]
: [[TelemetryIngress.Endpoints]]
Network = '...' # e.g. EVM. Solana, Starknet, Cosmos
ChainID = '...' # e.g. 1, 5, devnet, mainnet-beta
URL = '...'
ServerPubKey = '...'
Published by snehaagni 9 months ago
Tracing
TOML configurations. The default for collecting traces is off - you must explicitly enable traces and setup a valid OpenTelemetry collector. Refer to .github/tracing/README.md
for more details.[WebServer].AuthenticationMethod
config option, when set to ldap
requires the new [WebServer.LDAP]
config section to be defined, see the reference docs/core.toml
.mercury_transmit_queue_delete_error_count
mercury_transmit_queue_insert_error_count
mercury_transmit_queue_push_error_count
[Mercury]
# Mercury.Cache controls settings for the price retrieval cache querying a mercury server
[Mercury.Cache]
# LatestReportTTL controls how "stale" we will allow a price to be e.g. if
# set to 1s, a new price will always be fetched if the last result was
# from 1 second ago or older.
#
# Another way of looking at it is such: the cache will _never_ return a
# price that was queried from now-LatestReportTTL or before.
#
# Setting to zero disables caching entirely.
LatestReportTTL = "1s" # Default
# MaxStaleAge is that maximum amount of time that a value can be stale
# before it is deleted from the cache (a form of garbage collection).
#
# This should generally be set to something much larger than
# LatestReportTTL. Setting to zero disables garbage collection.
MaxStaleAge = "1h" # Default
# LatestReportDeadline controls how long to wait for a response from the
# mercury server before retrying. Setting this to zero will wait indefinitely.
LatestReportDeadline = "5s" # Default
mercury_cache_fetch_failure_count
mercury_cache_hit_count
mercury_cache_wait_count
mercury_cache_miss_count
EVM.OCR
TOML config fields DeltaCOverride
and DeltaCJitterOverride
for overriding the config DeltaC.mercury_insufficient_blocks_count
mercury_zero_blocks_count
PromReporter
no longer directly reads txm related status from the db, and instead uses the txStore API.L2Suggested
mode is now called SuggestedPrice
evm_pool_rpc_node_states
→ multi_node_states
evm_pool_rpc_node_num_transitions_to_alive
→ pool_rpc_node_num_transitions_to_alive
evm_pool_rpc_node_num_transitions_to_in_sync
→ pool_rpc_node_num_transitions_to_in_sync
evm_pool_rpc_node_num_transitions_to_out_of_sync
→ pool_rpc_node_num_transitions_to_out_of_sync
evm_pool_rpc_node_num_transitions_to_unreachable
→ pool_rpc_node_num_transitions_to_unreachable
evm_pool_rpc_node_num_transitions_to_invalid_chain_id
→ pool_rpc_node_num_transitions_to_invalid_chain_id
evm_pool_rpc_node_num_transitions_to_unusable
→ pool_rpc_node_num_transitions_to_unusable
evm_pool_rpc_node_highest_seen_block
→ pool_rpc_node_highest_seen_block
evm_pool_rpc_node_num_seen_blocks
→ pool_rpc_node_num_seen_blocks
evm_pool_rpc_node_polls_total
→ pool_rpc_node_polls_total
evm_pool_rpc_node_polls_failed
→ pool_rpc_node_polls_failed
evm_pool_rpc_node_polls_success
→ pool_rpc_node_polls_success
Optimism2
as a supported gas estimator modeLinkContractAddress
to 0x779877A7B0D9E8603169DdbD7836e478b4624789
Starting in v2.9.0
:
TelemetryIngress.URL
and TelemetryIngress.ServerPubKey
will no longer be allowed. Any TOML configuration that sets this fields will prevent the node from booting. These fields will be replaced by [[TelemetryIngress.Endpoints]]
P2P.V1
will no longer be supported and must not be set in TOML configuration in order to boot. Use P2P.V2
instead. If you are using both, V1
can simply be removed.Published by snehaagni 10 months ago
P2P.V2
was not explicitly disabled. With this fix, NOPs will not have to make changes to their config.Published by snehaagni 11 months ago
Published by snehaagni 11 months ago
LeaseDuration
for EVM.NodePool
that will periodically check if internal subscriptions are connected to the "best" (as defined by the SelectionMode
) node and switch to it if necessary. Setting this value to 0s
will disable this feature.[[TelemetryIngress.Endpoints]]
Network = '...' # e.g. EVM. Solana, Starknet, Cosmos
ChainID = '...' # e.g. 1, 5, devnet, mainnet-beta
URL = '...'
ServerPubKey = '...'
These will eventually replace TelemetryIngress.URL
and TelemetryIngress.ServerPubKey
. Setting TelemetryIngress.URL
and TelemetryIngress.ServerPubKey
alongside [[TelemetryIngress.Endpoints]]
will prevent the node from booting. Only one way of configuring telemetry endpoints is supported.
Added bridge_name label to pipeline_tasks_total_finished
prometheus metric. This should make it easier to see directly what bridge was failing out from the CL NODE perspective.
LogPoller will now use finality tags to dynamically determine finality on evm chains if UseFinalityTags=true
, rather than the fixed FinalityDepth
specified in toml config
P2P.V1
is now disabled (Enabled = false
) by default. It must be explicitly enabled with true
to be used. However, it is deprecated and will be removed in the future.P2P.V2
is now enabled (Enabled = true
) by default.Starting in v2.9.0
:
TelemetryIngress.URL
and TelemetryIngress.ServerPubKey
will no longer be allowed. Any TOML configuration that sets this fields will prevent the node from booting. These fields will be replaced by [[TelemetryIngress.Endpoints]]
P2P.V1
will no longer be supported and must not be set in TOML configuration in order to boot. Use P2P.V2
instead. If you are using both, V1
can simply be removed.Published by snehaagni about 1 year ago
ConfigContractAddress
in the relay config TOML.Explorer
related keys from TOML configuration and env vars.All nodes will have to remove the following secret configurations:
Explorer.AccessKey
Explorer.Secret
All nodes will have to remove the following configuration field: ExplorerURL
[ERROR] Error in transaction, rolling back: session missing or expired, please login again pg/transaction.go:118
chainID
was disabled.chainlink txs evm create
returns a transaction hash for the attempted transaction in the CLI. Previously only the sender, recipient and unstarted
state were returned.evmChainId
is requested instead of id
or evm-chain-id
in CLI error verbatimhealth
metric and HTTP /health
endpointPublished by snehaagni about 1 year ago
node start
or node validate
:AllowSimplePasswords=true
Published by chainchad about 1 year ago
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
Published by chainchad about 1 year ago
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 theyPublished by chainchad over 1 year ago
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.Published by ajgrande924 over 1 year ago
chainlink db ...
validate TOML configuration and secrets before executing. This change of behavior will report errors if any Database-specific configuration is invalid.Published by ajgrande924 over 1 year ago
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}
.