Releases: smartcontractkit/chainlink
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.
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", ...},