Skip to content

Releases: smartcontractkit/chainlink

v2.28.0

12 Sep 19:19
v2.28.0
6289ad5

Choose a tag to compare

Minor Changes
#19086 0b1cc20 - #changed LLO's observations now run in a loop, so their cache is always warm.

#18936 fafbccc - #added WF Registry Syncer V2 retrieves workflow artifacts from workflow storage service

#18274 99ead59 - #change Add keystore service to standardcapabilities, refactor integration_tests/framework to use a p2p key in the test node

#18974 b1b9ede - #changed added embedded struct in Keystore impls for forward compatibility

#18463 85f86fa - #changed Add Channel Definition Opts to LLO capability_trigger report type to enable Stream Multiplication

#18564 31711ce - #updated Make LLO capability_trigger report type Opts optional

#18917 3e53bfa - #changed: add workflowKey to StandardCapabilities keystore

#18634 df8ed63 - Added Bridge Status Reporter Service that polls external adapter status endpoints and emits telemetry events for operational monitoring #nops #added

#19097 5f40e5f - #updated FTF Tokenpool constructor & changeset update

#18171 1500214 - Updated Solana ChainWriter to use on-chain account derivation for CCIP execute transactions #internal

#18606 8651528 - #added ability for NOPs to provide a Job Distributor Display Name via config

#19132 9383bea - #bugfix fix nil pointer for gaslimit

#19130 b63d9a3 - #internal Refactor system tests

#18512 88ad7e4 - #changed bump chainlink-common to remove llo aggregator 1e18 scaling

#18430 16d82c9 - gateway handler for http action

#18724 f8042cf - #added support for v0.1.1 version of solana token pool contracts

#19006 4d21fba - #internal: Add read contract/balances validation to the CREv1 system-tests

#18531 6048fb5 - add functionality to enable big blocks for Hyperliquid #added

#18983 e9f31a6 - #internal bump chainlink-tron/relayer

#18998 b558db1 - #internal bump chainlink-solana

#18233 76674d7 - Added Solana ChainReader configs to support reading CCTP events #internal

#18511 c7da80c - Bump Solana Token Pool Contracts

#18309 4d103d2 - #internal Replaced CRE devspace invocation with crib-sdk

Patch Changes
#18613 0acb254 - Add prometheus duplicates for feeds_* metrics without the feeds_* prefix:

job_proposal_requests
workflow_requests
workflow_approvals
workflow_rejections
job_proposal_count
#18870 dc659a0 - #bugfix Use correct data id in secure mint aggregator

#19035 de07b1f - #bugfix chainid collisions across families

#18918 fbca9f6 - #bugfix Temporarily disable Don2Don connection optimization

#18622 658f74e - #internal adding evm capability to local cre

#19067 6a0bcba - #updated wire up LogStreamingEnabled beholder config option

#18792 148ed4c - #updated chain selectors

#18760 45e24d6 - #internal Re-enable Vault smoke test

#18947 145b6ee - #updated chip-ingress client

#18543 6212b61 - bumps chainlink-solana and chainlink-common with relayer interface patch #internal

#18524 fc50377 - #bugfix Fixes nethermind client compat tests

#19117 2674c36 - #fix Workflow Registry Syncer v2 cleans up orphaned pending events

#18478 fd46f19 - #internal Bump chainlink-common version

#18745 d8e76b5 - Added empty block height validation to telemetry reporter #internal

#19034 95bbd90 - #added Deployment and decimal report config Changesets for Solana DataFeeds Cache

#19101 a2d2917 - #added SharedPeer for Don2Don based on PeerGroupFactory

#19145 42fa92d - Add CSAKey handling in HeartbeatConfig and logging for key retrieval #internal

#19094 a27d893 - #updated beholder domain data-feeds

#18514 9af582e - #internal Implement fetching encryption keys for all Workflow Nodes in the SecretsFetcher

#19152 b464a4a - #updated Use seqNr as timestam...

Read more

v2.27.0

21 Aug 14:08
v2.27.0
19f0305

Choose a tag to compare

Release Notes

Added

  • #18274 Keystore service support in standard capabilities delegate
  • #18463 Channel definition options for LLO capability_trigger to enable stream multiplication
  • #18564 Optional parameters in LLO capability_trigger channel definitions
  • #18634 Bridge Status Reporter service
  • #18171 Solana ChainWriter config update for new account derivation
  • #18606 Display name support for NOPs
  • #18430 Gateway handler for HTTP actions
  • #18724 Solana contracts v0.1.1 changesets
  • #18233 Solana ChainReader config to read CCTP events
  • #18511 Updated Solana Token Pool contracts
  • #18309 Crib SDK integration replacing Devspace CRIB setup

Changed

  • #18543 Updated relayer implementation and bumped chainlink-common
  • #18478 Updated common-chainlink package version
  • #18792 Bumped Chain Selectors to v1.0.65
  • #18831 Further Chain Selector updates
  • #18473 Bumped chainlink-ccip version

Fixed

  • #18613 Metrics: duplicate feed metrics now emitted without the feeds_ prefix (job_proposal_requests, workflow_requests, workflow_approvals, workflow_rejections, job_proposal_count)
  • #18622 Added EVM capability support for local environments
  • #18524 Fixed Nethermind client compatibility tests
  • #18745 Fixed telemetry reporter for empty Solana block height
  • #18760 Re-enabled Vault smoke test
  • #18514 Enabled DON-to-DON flow for Vault service GetSecrets() method
  • #18420 Gateway Node now proxies user requests correctly to Vault Node
  • #18549 Added configuration for local fetcher
  • #18578 Fix for a critical “heart attack” issue (service crash under load)
  • #18393 Wired up OCR instance for [PRIV-78]

v2.26.0

28 Jul 21:55
v2.26.0
fd6445c

Choose a tag to compare

Added

  • Cron + HTTP Manual Triggers
  • OIDC Based Authentication
  • Vault service handler to Gateway
  • Support for Aptos CCIP
  • Configuration EVM Service for submit transaction and calculate transaction fee and configuration for submit transaction confirmation time behavior
  • Expose lifecycle hooks in v2 standalone engine

Changed

  • Adding chainFamily to OCR3 prometheus metrics to distinguish between conflicting chainIDs
  • Allow approval of previous versions of job specs
  • Refactor cre/environment/environment.go to allow for injection of custom capabilities
  • Use ratelimiter, roundRobinSelector, logger from chainlink-common
  • Pass in gateway connector to standard capabilities. Gateway connector handlers accept jsonrpc structs instead of api.Message

Fixed

  • Feeds: Refactor workflow job deletion with improved transaction handling and structured logging
  • Set empty map directly on cap request for config

Changelog

v2.25.0

08 Jul 14:22
v2.25.0
381285e

Choose a tag to compare

Added

  • Add TON Keystore to Core with ED25519-based TONKey and tests
  • p2p bundles to job distributor
  • Bump operator-ui to add support for TON
  • "SenderAddress" GasEstimator config parameter
  • Add tonKey graphql query to support TON in Operator UI

Changed

  • Combine the NewNode parameters into a param struct. #added #internal
  • Added validation to ensure the RPC node used can fetch the required config logs for OCR1 jobs.
  • NOTE: This behavior can be toggled on/off by using the new OCR.ConfigLogValidation setting
  • moves cre/engine scripts to main module adds cron example #internal
  • Reorganized test helpers and mocks to exclude test dependencies from build path #internal
  • Fee boosting removed from CCIP 1.5 Execution plugin
  • Cleanup and refactoring several functions to use the plugin map #added

Fixed

  • Do not filter out any don2don peers on bootstrap nodes
  • Fix remote trigger event expiry logic
  • (gateway/network): uses single timeout for request with default and max values
  • Fixed canceled context inside of PriceService
  • #bugfix for high CPU usage on TRON

v2.24.0

29 May 18:39
v2.24.0
0e8fb1e

Choose a tag to compare

Added

  • CCIP 1.5 support for Tron
  • Solana LogPoller lookback feature, and LogPollerStartingLookback and BlockTime to Solana config
  • Improved Solana ChainWriter and TXM logging
  • Support for medianizing TimestampedStreamValue timestamps
  • EVMRelayer conversion to ServerAdapter
  • Integrated framework metrics with Beholder

Changed

  • CORS header support to Gateway node

Fixed

  • Operator-UI: fix limited chains in Job Distributor
  • Log capabilities dispatcher: rate limit as error instead of debug
  • Patch for VRF blockhash backfill script on Ronin
  • Fix rare panic in report_attestation.go via libocr bump

Changelog

v2.23.0

05 May 20:24
v2.23.0
86ce944

Choose a tag to compare

⚠️ On May 31, 2025, Ubuntu 20.04 will reach end-of-life and will no longer receive security updates. We strongly encourage you to begin upgrading your environments to a stable support Ubuntu versions. This will be the last release we support 20.04 Ubuntu version.

⚠️ If you are running on Solana, please ensure you set CL_SOLANA_CMD to empty and update config to include

[Solana.MultiNode]
VerifyChainID = true

Added

  • CRE: allow nodes to limit number of running workflows for specific EOAs
  • Capabilities: handles single node requests to gateways by selecting a random gateway to start
  • Extended Relayer and created a CLI Global Replay Command to enable Solana Replay.
  • Support new report type evm_streamlined. This new report type is designed to be as small and optimized as possible to minimize report size and calldata.
    • Reports are encoded as such:
      • (no FeedID specified in opts)
<32 bits> channel ID
<64 bits> unsigned report timestamp nanoseconds
<bytes>   report data as packed ABI encoding
  • (FeedID specified in opts)
<256 bits> feed ID
<64 bits> unsigned report timestamp nanoseconds
<bytes>   report data as packed ABI encoding
  • Report contexts are encoded as such:
// Equivalent to abi.encodePacked(digest, len(report), report, len(sigs), sigs...)
// bytes32 config digest
// packed uint16 len report
// packed bytes report
// packed uint8 len sigs
// packed bytes sigs

(See report_codec_evm_streamlined_test.go for examples)

  • Implement support for TimestampedStreamValue data types in LLO (RWAs). Added support encoding into evm_abi_unpacked or evm_streamlined report formats
    • ABI must specify how to encode both types, as such:
// Encodes the timestamp as uint64 and data payload as int192
{
  "abi": [[{ "type": "uint64" }, { "type": "int192" }]]
}
  • The first element of the array encodes the timestamp, the second encodes the data payload. Users may suppress one or the other entirely by using the special keyword "bytes0" e.g.
// Encodes only the data payload
{
  "abi": [[{ "type": "bytes0" }, { "type": "int192" }]]
}

Changed

  • Updated LLO Config Validation to allow CRE Transmitter without Mercury Server
  • Filters persist after ChainReader Clean being called

Fixed

  • (capabilities/webapi): cycles through all gateways until a connection is made on single node request

v2.23.0 Changelog

v2.22.0

25 Mar 15:05
v2.22.0
0382a7f

Choose a tag to compare

⚠️ On May 31, 2025, Ubuntu 20.04 will reach end-of-life and will no longer receive security updates. We strongly encourage you to begin upgrading your environments to a stable support Ubuntu versions. We are bumping the Chainlink image to 24.04 in this release. We will continue to provide an image that is 20.04 as well to ensure there is ample time to upgrade and remove support as it goes to eol.

Added

  • Upgrade LLO protocol to support sub-seconds reports.
    • NOTE: Protocol version 0 does NOT support gapless handover on sub-second reports. You must upgrade to version 1 for that.
  • Add more granularity for workflow completed histogram metric around expected values
  • Add exponential backoff retry to feeds.SyncNodeInfo()
  • Support importing eth and p2p keys on startup
  • Support to address codec implementation
  • Add support for custom deviation functions in median plugin.
    • Do this like so, by adding the following config to a "median" job spec:
[pluginConfig.deviationFunc]
expiresAt = 1739895051.0 # REQUIRED. Unix timestamp indicating the expiry date. Should be specified as a float64 so even for integer values, add a decimal point.
type = "pendle" # REQUIRED. Currently only "pendle" is supported.
multiplier = "1000000" # OPTIONAL. Must be supplied as string integer. Default is 1e18 if omitted.

Changed

  • ⚠️ Ubuntu has been bumped from 20.04 to 24.04
  • Compile functions using forge instead of solc.
  • Generate keystone wrappers using forge.
  • Remove extra data codec for ocr factory function param
  • ⚠️ Enable Solana LOOPP mode by default
    • If you run into a panic on your Solana node, please disable LOOPP mode. It can be disabled via unsetting or setting blank the env var: CL_SOLANA_CMD
    • Regarding metrics with LOOPPs enabled:
      • Solana metrics w/loop mode are available, though at a different endpoint, using service discovery.
      • start node w/solana loop (enabled by default)
      • go to <your_prom_endpt>/discovery
      • find the name of the solana plugin
      • go to <your_prom_endpt>/plugins//metrics
  • Remove bash wrappers and call solidity compilation directly
  • Disabled fee boosting when destination is Hedera
  • Enhanced logging for capabilities' server requests

Fixed

  • Fix abigen compilation on Mac
  • Fix: resolve panic send: on closed channel in workflow engine
  • Fix for the inability to approve multiple jobs with same command for standard capabilities

v2.22.0 Changelog

v2.21.0

11 Mar 14:08
v2.21.0
eaa03c3

Choose a tag to compare

Added

  • Rate limiter for workflow executions by workflow engine
  • Solana related
    • Added Solana chain reader config support to plugin creator, remove evm specific code
    • Added Solana message hasher and EstimateProvider as a no-op
    • Solana CCIP plugin codec support for both commit and execute report
    • Add Solana support for contract transmitter and remove evm depdendency for address encoding
  • Add telemetry for LLO plugin
  • Add support for 'standardcapabilities' and 'gateway' jobs to the FMS
  • New way to calculate CCIP gas deviation thresholds using a sliding curve approach

Updated

  • Use chainlink-common logger instead of chainlink logger in evm/mercury and in the task interface
  • Move chainlink/common to chainlink-framework/chains
  • Move TxMessage proto files to chainlink-protos
  • Allow to whitelist IPs in Gateway's HTTP Client
  • Increase Zircuit's NoNewFinalizedHeadsThreshold to 40 minutes

Fixed

  • Fix wasm workflow toml fields

Changed

  • ⚠️ METRIC CHANGE - Unconditionally track bridge task latency - this change now tracks latency unconditionally
    • Previous behavior:
      • Only tracks bridge latency on non-errors and status code 200
    • New behavior:
      • Tracks bridge latency for all requests. A new label is added to distinguish status code groups 2xx, 3xx, 4xx, 5xx
    • If you experience alert issues related to spike in bridge latency following upgrade: Please review your alerts and update accordingly. Example query sum by(name) (rate(bridge_latency_seconds{job=~"$node", status_code_group!~"5xx|4xx"}[$__rate_interval]))
  • Introduces new allowNoBootstrapper flag, when set to true, allow bootstrapper list in OCR2 job spec to be empty and enables single-node consensus for testing
  • Changed chainType from metis to optimismBedrock

v2.21.0 Changelog

v2.20.0

05 Feb 21:34
v2.20.0
0f769bb

Choose a tag to compare

Added

  • Reorg detection for Solana TXM
  • TxExpirationRebroadcast feature and config for Solana TXM.
  • Refactor chain ID logic in plugin to be chain agnostic
  • Added the EVM.Transactions.Enabled config to enable or disable the transaction manager.
  • Added the ability to define a fallback.toml override config using CL_CHAIN_DEFAULTS env var
  • Data Streams related additions
    • Added Stream job delete capability
    • Add two new metrics for monitoring LLO transmitter health
    • llo_mercurytransmitter_concurrent_transmit_gauge Gauge that measures the number of transmit threads currently waiting on a remote transmit call. You may wish to alert if this exceeds some number for a given period of time, or if it ever reaches its max.
    • llo_mercurytransmitter_concurrent_delete_gauge Gauge that measures the number of delete threads currently waiting on a delete call to the DB. You may wish to alert if this exceeds some number for a given period of time, or if it ever reaches its max.
    • Add config var Mercury.Transmitter.TransmitConcurrency
    • Support multiple streamIDs in stream specs
    • Add support for Mercury LLO streams to feeds service
    • Add grpc support for LLO

Updated

  • Updated deployment address book to support non-evm chains
  • Chainconfig: show chain type next to key bundle id in UI
  • Updated the Solana TXM compute unit limit estimation feature to use the max 1.4M compute unit limit for simulation and enable SigVerify
  • Updated TXM abandon transaction functionality to drop related attempts
  • Updated Solana TXM to store prebroadcast transaction errors caught upfront by simulation. Refactored error parsing to more easily introduce new error cases. Optimized storing finalized and errored transaction to minimize memory usage.

Fixed

  • Add panic recovery to wsrpc mercury client, should help to make nodes running wsrpc v0.8.2 more stable
  • Add chaintype.ChainZircuit to chaintypes with rollup support in L1 oracle to prevent a nil L1 oracle being used for Zircuit's gas estimator

Changed

  • Increase GasLimit for Automation on ZKsync to 6M
  • Reduce PriceMin on Avalanche to 1 gwei
  • Changed RMNRemote and RMNHome parameter f to fObserve and fSign

v2.20.0 Changelog

v2.19.0

02 Jan 15:37
v2.19.0
d7b5f7b

Choose a tag to compare

Added

  • Updated Solana TXM's in-memory storage to track statuses across the Solana transaction lifecycle. Added a method to translate Solana transaction statuses into states expected by the ChainWriter interface. Made the duration transactions are retained in storage after finality or error configurable using TxRetentionTimeout
  • Added multiple blocks history estimator feature and config for Solana TXM
  • Add don_id to Mercury Enhanced EA telemetry
  • Support multiple chains evm clients for TXM gas estimator to fetch L1 gas oracle
  • Add CSA authentication support to Beholder
  • Support creating Solana chain config in job distributor page
  • Handle Hex String in EA Telemetry
  • Enable AutoPurge feature on all affected chains

Updated

  • Updated the TXM confirmation logic to use the mined transaction count to identify re-org'd or confirmed transactions.
  • Update ethkeys, ethtransactions to handle duplicate chain id in different network introduce network arg input to Chain graphql query to allow better lookup based on network and chain id
  • Chain config: allow chain id and account address to be manually provided when no selections are available
  • Operator UI to support StreamSpec job definition

Fixed

  • Use correct OCR2OracleSpecID when setting up RequestedRoundTracker
  • Update Log.Level and MaxSize configs description in the docs
  • Add config validation so it requires ws url when http polling disabled
  • Fix reported evm node states

Changed

  • UI(chainconfig): make admin address optional
  • Set NodePool.EnforceRepeatableRead = true by default for all chains. This forces Core to stop using RPCs behind on the latest finalized block.

v2.19.0 Changelog