Releases: smartcontractkit/chainlink
v2.18.0
Added
- LogPoller MaxLogsKept feature: recency count-based instead of time based log retention
- Solana: compute unit limit configuration and transaction instruction
- Prometheus metrics exposing health of telemetry client
- Support Zircuit fraud transactions detection and zk overflow detection
Updated
- Make websocket URL WSURL for EVM.Nodes optional, and apply logic so that:
If WS URL was not provided, SubscribeFilterLogs should fail with an explicit error
If WS URL was not provided LogBroadcaster should be disabled
- Implemented new chain agnostic MultiNode design along with the corresponding EVM implementation. MultiNode picks the “best” RPC based on one of the configurable criteria: priority defined in the config, highest latest block, or round-robin within the same priority level (or using other configurable selection algorithms).
Fixed
- Fix BHE PriceMax bug
v2.17.0
Added
- Add a new config option EVM.NodePool.NewHeadsPollInterval (0 by default indicate disabled), which is an interval for polling new block periodically using http client rather than subscribe to ws feed.
- Adding feature flag for LogBroadcaster called LogBroadcasterEnabled, which is true by default to support backwards compatibility. Adding LogBroadcasterEnabled allows certain chains to completely disable the LogBroadcaster feature, which is an old feature (getting replaced by logPoller) that only few products are using it: OCR1 Median, OCR2 Median when ChainReader is disabled, pre-OCR2 Keeper, Flux Monitor, Direct RequestOCR1 Median
- Added gas limit estimation feature to EVM gas estimators. Introduced a new config EVM.GasEstimator.EstimateLimit to toggle this feature.
- Full Open Telemetry support, configurable via Telemetry
- Add Zircuit Configs
Updated
-
Changed
TelemetryIngress.UniConn
default to false in config.UniConn
toggles which ws connection style is used. -
Productionize transmitter for LLO. Note that some minor changes to prometheus metrics will occur in the transition to LLO. Since feed IDs no longer apply, the metrics for transmissions change as follows:
"mercury_transmit_*" []string{"feedID", ...},
Will change to:
"llo_mercury_transmit_*" []string{"donID", ...},
v2.16.0
Added
- Error handling when arbitrum sequencer is not accessible
- Error handle for gnosis chiado for seen tx
- Gas limit estimation feature to EVM gas estimators. Introduced a new config
EVM.GasEstimator.EstimateLimit
to toggle this feature - Report new heads as a telemetry to OTI
- Optimism Stack L1 Oracle to add support for Mantle
- Allow workflows to run without external registry configured
- Astar TerminallyUnderpriced error mapping
- Custom client error messages for Mantle to capture InsufficientEth and Fatal errors
- New health check that ensures RPC provides new finalized heads at least every
NoNewFinalizedHeadsThreshold
Updated
- Sync feeds-manager wsrpc proto
- Add DB syncing for registry syncer
- Polygon configs to match PIP-35
- Simplify how token and gas prices are stored in the database - user upsert instead of insert/delete flow
v2.15.0
Added
-
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
Updated
- Dequeue minimum guaranteed upkeeps as a priority
- Rename the InBackupHealthReport to StartUpHealthReport and enable it for DB migrations as well. This will enable health report to be available during long start-up tasks (db backups and migrations).
- VRFV2Plus coordinator and wrapper split contracts between L1 and L2 chains
- Fix: Set LatestFinalizedBlock for finalized blocks saved by logpoller
v2.14.0
Added
- Added Aptos Keystore to Core. This includes Aptos Key which uses ED25519, Keystore, Relevant tests
- zkSync L1 GasPrice calculation
Updated
- Refactored the BlockHistoryEstimator check to prevent excessively bumping transactions. Check no longer waits for CheckInclusionBlocks to pass before assessing an attempt.
- Fixed a bug that would use the oldest blocks in the cached history instead of the latest to perform gas estimations.
- Updated L1 gas price calculations for Optimism Ecotone and Fjord upgrades
- Fixed local finality violation caused by an RPC lagging behind on latest finalized block.
- Fixed unreachable code bug which could result in stuck txns
DB Update
- CCIP capability specs migration
v2.13.0
Breaking Change
- Remove the
xdai
ChainType
config option. Moving forward, onlygnosis
can be used.
Added
- Added a mechanism to validate forwarders for OCR2 and fallback to EOA if necessary
- Added an auto-purge feature to the EVM TXM that identifies terminally stuck transactions either through a chain specific method or heurisitic then purges them to unblock the nonce. Included 4 new toml configs under Transactions.AutoPurge to configure this new feature: Enabled, Threshold, MinAttempts, and DetectionApiUrl.
- Add option to include GasPriceSubunits pipeline to include gasPriceSubunits in median ocr2 transmission (only to be used with Starknet chain for now)
- Added config option HeadTracker.FinalityTagBypass to force HeadTracker to track blocks up to FinalityDepth even if FinalityTagsEnabled = true. This option is a temporary measure to address high CPU usage on chains with extremely large actual finality depth (gap between the current head and the latest finalized block).
- Added config option HeadTracker.MaxAllowedFinalityDepth maximum gap between current head to the latest finalized block that HeadTracker considers healthy.
Updated
- Fixed CPU usage issues caused by inefficiencies in HeadTracker.
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.
- Fixed metric description on mercury_transmit_queue_load
DB Update
- Improve handling of postgres connection settings and driver versions
v2.12.0
Added
-
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
Updated
- core/chains/evm/logpoller: Stricter finality checks in LogPoller, to be more robust during rpc failover events
- Reducing the scope of 0233 migration to include only 5th word index which is required for CCIP
- Fixed CPU usage issues caused by inefficiencies in HeadTracker. 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.
- Validate support for postgresql-client 16, and update docker image's bundled postgresql-client from 15 to 16.
Upcoming change in 2.13.0
- The
xdai
ChainType
has been renamed tognosis
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.
v2.11.0
Added
- Added a tx simulation feature to the chain client to enable testing for zk out-of-counter (OOC) errors
- Add the
pool_rpc_node_highest_finalized_block
metric that tracks the highest finalized block seen per RPC. IfFinalityTagEnabled = 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.
Updated
- Moved
JuelsPerFeeCoinCacheDuration
under theJuelsPerFeeCoinCache
struct in config. RenameJuelsPerFeeCoinCacheDuration
to updateInterval. AddstalenessAlertThreshold
toJuelsPerFeeCoinCache
config. TheStalenessAlertThreshold
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. - Updated config for Polygon zkEVM chains.
- HeadTracker now respects the
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. - Change LimitTransfer gasLimit type from uint32 to uint64
Upcoming change in v2.13.0
- The
xdai
ChainType
has been renamed tognosis
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.
v2.10.0
Added
- Gas bumping logic to the
SuggestedPriceEstimator
. The bumping mechanism for this estimator refetches the price from the RPC and adds a buffer on top using the greater ofBumpPercent
andBumpMin
. - Added a new configuration field named
NodeIsSyncingEnabled
forEVM.NodePool
that will check on every reconnection to an RPC if it's syncing and should not be transitioned toAlive
state. Disabled by default. - Add preliminary support for "llo" job type (Data Streams V1)
- Add
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. - Add Juels Fee Per Coin data source caching for OCR2 Feeds. Cache is time based and is turned on by default with default cache refresh of 5 minutes. Cache can be configured through pluginconfig using "juelsPerFeeCoinCacheDuration" and "juelsPerFeeCoinCacheDisabled" tags. Duration tag accepts values between "30s" and "20m" with default of "0s" that is overridden on cache startup to 5 minutes.
- Add rebalancer support for feeds manager ocr2 plugins.
Fixed
P2P.V2
is required in configuration when eitherOCR
orOCR2
are enabled. The node will fail to boot ifP2P.V2
is not enabled.- Removed unnecessary gas price warnings in gas estimators when EIP-1559 mode is enabled.
Changed
- Minimum required version of Postgres is now >= 12. Postgres 11 was EOL'd in November 2023. Added a new version check that will prevent Chainlink from running on EOL'd Postgres. If you are running Postgres <= 11 you should upgrade to the latest version. The check can be forcibly overridden by setting SKIP_PG_VERSION_CHECK=true.
- Updated the
LimitDefault
andLimitMax
configs types touint64