Releases: smartcontractkit/chainlink
v2.28.0
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
v2.27.0
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
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
v2.25.0
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
Added
- CCIP 1.5 support for Tron
- Solana LogPoller lookback feature, and
LogPollerStartingLookback
andBlockTime
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
v2.23.0
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)
- Reports are encoded as such:
<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
orevm_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.22.0
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.21.0
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
- Only tracks bridge latency on non-errors and status code
- New behavior:
- Tracks bridge latency for all requests. A new label is added to distinguish status code groups
2xx
,3xx
,4xx
,5xx
- Tracks bridge latency for all requests. A new label is added to distinguish status code groups
- 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]))
- Previous behavior:
- 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.20.0
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 usingCL_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
andRMNHome
parameter f to fObserve and fSign
v2.19.0
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.