Skip to content

Releases: smartcontractkit/chainlink

v2.26.0

28 Jul 21:55
v2.26.0
fd6445c
Compare
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
Compare
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
Compare
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
Compare
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
Compare
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
Compare
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
Compare
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
Compare
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

v2.18.0

01 Nov 17:42
v2.18.0
fb7d6e8
Compare
Choose a tag to compare

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.18.0 Changelog

v2.17.0

10 Oct 15:46
v2.17.0
5ebb632
Compare
Choose a tag to compare

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.17.0 Changelog