Releases: smartcontractkit/chainlink
v1.7.0
Added
p2pv2Bootstrappers
has been added as a new optional property of OCR1 job specs; default may still be specified with P2PV2_BOOTSTRAPPERS config param- Added official support for Sepolia chain
- Added
hexdecode
andbase64decode
tasks (pipeline). - Added support for Besu execution client (note that while Chainlink supports Besu, Besu itself has multiple bugs that make it unreliable).
- Added the functionality to allow the root admin CLI user (and any additional admin users created) to create and assign tiers of role based access to new users. These new API users will be able to log in to the Operator UI independently, and can each have specific roles tied to their account. There are four roles:
admin
,edit
,run
, andview
.- User management can be configured through the use of the new admin CLI command
chainlink admin users
. Be sure to runchainlink admin login
. For example, a readonly user can be created with:chainlink admin users create [email protected] --role=view
. - Updated documentation repo with a break down of actions to required role level
- User management can be configured through the use of the new admin CLI command
- Added per job spec and per job type gas limit control. The following rule of precedence is applied:
- task-specific parameter
gasLimit
overrides anything else when specified (e.g.ethtx
task has such a parameter). - job-spec attribute
gasLimit
has the scope of the current job spec only. - job-type limits
ETH_GAS_LIMIT_*_JOB_TYPE
affect any jobs of the corresponding type:
ETH_GAS_LIMIT_OCR_JOB_TYPE # EVM.GasEstimator.LimitOCRJobType
ETH_GAS_LIMIT_DR_JOB_TYPE # EVM.GasEstimator.LimitDRJobType
ETH_GAS_LIMIT_VRF_JOB_TYPE # EVM.GasEstimator.LimitVRFJobType
ETH_GAS_LIMIT_FM_JOB_TYPE # EVM.GasEstimator.LimitFMJobType
ETH_GAS_LIMIT_KEEPER_JOB_TYPE # EVM.GasEstimator.LimitKeeperJobType
- global
ETH_GAS_LIMIT_DEFAULT
(EVM.GasEstimator.LimitDefault
) value is the last resort.
Fixed
- Addressed a very rare bug where using multiple nodes with differently configured RPC tx fee caps could cause missed transaction. Reminder to everyone to ensure that your RPC nodes have no caps (for more information see the performance and tuning guide).
- Improved handling of unknown transaction error types, making Chainlink more robust in certain cases on unsupported chains/RPC clients
v1.6.0
Changed
- After feedback from users, password complexity requirements have been simplified. These are the new, simplified requirements for any kind of password used with Chainlink:
- Must be 16 characters or more
- Must not contain leading or trailing whitespace
- User passwords must not contain the user's API email
- Simplified the Keepers job spec by removing the observation source from the required parameters.
v1.5.1
v1.5.0
Changed
- Chainlink will now fail to boot if the postgres database password is missing or too insecure. Passwords should conform to the following rules:
Must be longer than 12 characters
Must comprise at least 3 of:
lowercase characters
uppercase characters
numbers
symbols
Must not comprise:
More than three identical consecutive characters
Leading or trailing whitespace (note that a trailing newline in the password file, if present, will be ignored)
For backward compatibility all insecure passwords will continue to work, however in a future version of Chainlink insecure passwords will prevent application boot. To bypass this check at your own risk, you may set SKIP_DATABASE_PASSWORD_COMPLEXITY_CHECK=true
.
-
MIN_OUTGOING_CONFIRMATIONS
has been removed and no longer has any effect.EVM_FINALITY_DEPTH
is now used as the default forethtx
confirmations instead. You may override this on a per-task basis by settingminConfirmations
in the task definition e.g.foo [type=ethtx minConfirmations=42 ...]
. NOTE: This may have a minor impact on performance on very high throughput chains. If you don't care about reporting task status in the UI, it is recommended to setminConfirmations=0
in your job specs. For more details, see the relevant section of the performance tuning guide. -
The following ENV variables have been deprecated, and will be removed in a future release:
INSECURE_SKIP_VERIFY
,CLIENT_NODE_URL
,ADMIN_CREDENTIALS_FILE
. These vars only applied to Chainlink when running in client mode and have been replaced by command line args, notably:--insecure-skip-verify
,--remote-node-url URL
and--admin-credentials-file FILE
respectively. More information can be found by running./chainlink --help
. -
The
Optimism2
GAS_ESTIMATOR_MODE
has been renamed toL2Suggested
. The old name is still supported for now. -
The
p2pBootstrapPeers
property on OCR2 job specs has been renamed top2pv2Bootstrappers
.
Added
- Added
ETH_USE_FORWARDERS
config option to enable transactions forwarding contracts. - In job pipeline (direct request) the three new block variables are exposed:
$(jobRun.blockReceiptsRoot)
: the root of the receipts trie of the block (hash)$(jobRun.blockTransactionsRoot)
: the root of the transaction trie of the block (hash)$(jobRun.blockStateRoot)
: the root of the final state trie of the block (hash)
ethtx
tasks can now be configured to error if the transaction reverts on-chain. You must setfailOnRevert=true
on the task to enable this behavior, like so:
foo [type=ethtx failOnRevert=true ...]
So the ethtx
task now works as follows:
If minConfirmations == 0, task always succeeds and nil is passed as output
If minConfirmations > 0, the receipt is passed through as output
If minConfirmations > 0 and failOnRevert=true then the ethtx task will error on revert
If minConfirmations
is not set on the task, the chain default will be used which is usually 12 and always greater than 0.
http
task now allows specification of request headers. Use like so:foo [type=http headers="[\\"X-Header-1\\", \\"value1\\", \\"X-Header-2\\", \\"value2\\"]"]
.
Fixed
- Fixed
max_unconfirmed_age
metric. Previously this would incorrectly report the max time since the last rebroadcast, capping the upper limit to the EthResender interval. This now reports the correct value of total time elapsed since the first broadcast. - Correctly handle the case where bumped gas would exceed the RPC node's configured maximum on Fantom (note that node operators should check their Fantom RPC node configuration and remove the fee cap if there is one)
- Fixed handling of Metis internal fee change
Removed
- The
Optimism
OVM 1.0GAS_ESTIMATOR_MODE
has been removed.
v1.5.0-rc0
Changed
- Chainlink will now fail to boot if the postgres database password is missing or too insecure. Passwords should conform to the following rules:
Must be longer than 12 characters
Must comprise at least 3 of:
lowercase characters
uppercase characters
numbers
symbols
Must not comprise:
More than three identical consecutive characters
Leading or trailing whitespace
For backward compatibility all insecure passwords will continue to work, however in a future version of Chainlink insecure passwords will prevent application boot.
-
MIN_OUTGOING_CONFIRMATIONS
has been removed and no longer has any effect.EVM_FINALITY_DEPTH
is now used as the default forethtx
confirmations instead. You may override this on a per-task basis by settingminConfirmations
in the task definition e.g.foo [type=ethtx minConfirmations=42 ...]
. NOTE: This may have a minor impact on performance on very high throughput chains. If you don't care about reporting task status in the UI, it is recommended to setminConfirmations=0
in your job specs. For more details, see the relevant section of the performance tuning guide. -
The following ENV variables have been deprecated, and will be removed in a future release:
INSECURE_SKIP_VERIFY
,CLIENT_NODE_URL
,ADMIN_CREDENTIALS_FILE
. These vars only applied to Chainlink when running in client mode and have been replaced by command line args, notably:--insecure-skip-verify
,--remote-node-url URL
and--admin-credentials-file FILE
respectively. More information can be found by running./chainlink --help
. -
The
Optimism2
GAS_ESTIMATOR_MODE
has been renamed toL2Suggested
. The old name is still supported for now. -
The
p2pBootstrapPeers
property on OCR2 job specs has been renamed top2pv2Bootstrappers
.
Added
- Added
ETH_USE_FORWARDERS
config option to enable transactions forwarding contracts. - In job pipeline (direct request) the three new block variables are exposed:
$(jobRun.blockReceiptsRoot)
: the root of the receipts trie of the block (hash)$(jobRun.blockTransactionsRoot)
: the root of the transaction trie of the block (hash)$(jobRun.blockStateRoot)
: the root of the final state trie of the block (hash)
ethtx
tasks can now be configured to error if the transaction reverts on-chain. You must setfailOnRevert=true
on the task to enable this behavior, like so:
foo [type=ethtx failOnRevert=true ...]
So the ethtx
task now works as follows:
If minConfirmations == 0, task always succeeds and nil is passed as output
If minConfirmations > 0, the receipt is passed through as output
If minConfirmations > 0 and failOnRevert=true then the ethtx task will error on revert
If minConfirmations
is not set on the task, the chain default will be used which is usually 12 and always greater than 0.
http
task now allows specification of request headers. Use like so:foo [type=http headers="[\\"X-Header-1\\", \\"value1\\", \\"X-Header-2\\", \\"value2\\"]"]
.
Fixed
- Fixed
max_unconfirmed_age
metric. Previously this would incorrectly report the max time since the last rebroadcast, capping the upper limit to the EthResender interval. This now reports the correct value of total time elapsed since the first broadcast.
Removed
- The
Optimism
OVM 1.0GAS_ESTIMATOR_MODE
has been removed.
v1.4.1
Fixed
- Ensure failed EthSubscribe didn't register a (*rpc.ClientSubscription)(nil) which would lead to a panic on Unsubscribe
- Fixes parsing of float values on job specs
v1.4.1-rc1
What's Changed
- Fixes float parsing by @vyzaldysanchez in #6575
Full Changelog: v1.4.1-rc0...v1.4.1-rc1
v1.4.1-rc0
Fixed
- Ensure failed EthSubscribe didn't register a (*rpc.ClientSubscription)(nil) which would lead to a panic on Unsubscribe
v1.4.0
Added
- JSON parse tasks (v2) now support a custom
separator
parameter to substitute for the default,
. - Log slow SQL queries
- Fantom and avalanche block explorer urls
- Display
requestTimeout
in job UI - Keeper upkeep order is shuffled
Fixed
LOG_FILE_MAX_SIZE
handling- Improved websocket subscription management (fixes issues with multiple-primary-node failover from 1.3.x)
- VRFv2 fixes and enhancements
- UI support for
minContractPaymentLinkJuels
v1.3.0
Added
- Added disk rotating logs. Chainlink will now always log to disk at debug level. The default output directory for debug logs is Chainlink's root directory (ROOT_DIR) but can be configured by setting LOG_FILE_DIR. This makes it easier for node operators to report useful debugging information to Chainlink's team, since all the debug logs are conveniently located in one directory. Regular logging to STDOUT still works as before and respects the LOG_LEVEL env var. If you want to log in disk at a particular level, you can pipe STDOUT to disk. This automatic debug-logs-to-disk feature is enabled by default, and will remain enabled as long as the
LOG_FILE_MAX_SIZE
ENV var is set to a value greater than zero. The amount of disk space required for this feature to work can be calculated with the following formula:LOG_FILE_MAX_SIZE
* (LOG_FILE_MAX_BACKUPS
+ 1). If your disk doesn't have enough disk space, the logging will pause and the application will log Errors until space is available again. New environment variables related to this feature:LOG_FILE_MAX_SIZE
(default: 5120mb) - this env var allows you to override the log file's max size (in megabytes) before file rotation.LOG_FILE_MAX_AGE
(default: 0) - ifLOG_FILE_MAX_SIZE
is set, this env var allows you to override the log file's max age (in days) before file rotation. Keeping this config with the default value means not to remove old log files.LOG_FILE_MAX_BACKUPS
(default: 1) - ifLOG_FILE_MAX_SIZE
is set, this env var allows you to override the max amount of old log files to retain. Keeping this config with the default value means to retain 1 old log file at most (thoughLOG_FILE_MAX_AGE
may still cause them to get deleted). If this is set to 0, the node will retain all old log files instead.
- Added support for the
force
flag onchainlink blocks replay
. If set to true, already consumed logs that would otherwise be skipped will be rebroadcasted. - Added version compatibility check when using CLI to login to a remote node. flag
bypass-version-check
skips this check. - Interrim solution to set multiple nodes/chains from ENV. This gives the ability to specify multiple RPCs that the Chainlink node will constantly monitor for health and sync status, detecting dead nodes and out of sync nodes, with automatic failover. This is a temporary stand-in until configuration is overhauled and will be removed in future in favor of a config file. Set as such:
EVM_NODES='{...}'
where the var is a JSON array containing the node specifications. This is not compatible with using any other way to specify node via env (e.g.ETH_URL
,ETH_SECONDARY_URL
,ETH_CHAIN_ID
etc). WARNING: Setting this environment variable will COMPLETELY ERASE yourevm_nodes
table on every boot and repopulate from the given data, nullifying any runtime modifications. Make sure to carefully read the EVM performance configuration guide for best practices here.
For example:
export EVM_NODES='
[
{
"name": "primary_1",
"evmChainId": "137",
"wsUrl": "wss://endpoint-1.example.com/ws",
"httpUrl": "http://endpoint-1.example.com/",
"sendOnly": false
},
{
"name": "primary_2",
"evmChainId": "137",
"wsUrl": "ws://endpoint-2.example.com/ws",
"httpUrl": "http://endpoint-2.example.com/",
"sendOnly": false
},
{
"name": "primary_3",
"evmChainId": "137",
"wsUrl": "wss://endpoint-3.example.com/ws",
"httpUrl": "http://endpoint-3.example.com/",
"sendOnly": false
},
{
"name": "sendonly_1",
"evmChainId": "137",
"httpUrl": "http://endpoint-4.example.com/",
"sendOnly": true
},
{
"name": "sendonly_2",
"evmChainId": "137",
"httpUrl": "http://endpoint-5.example.com/",
"sendOnly": true
}
]
'
Changed
- Changed default locking mode to "dual". Bugs in lease locking have been ironed out and this paves the way to making "lease" the default in future. It is recommended to set
DATABASE_LOCKING_MODE=lease
, default is set to "dual" only for backwards compatibility. - EIP-1559 is now enabled by default on mainnet. To disable (go back to legacy mode) set
EVM_EIP1559_DYNAMIC_FEES=false
. The default settings should work well, but if you wish to tune your gas controls, see the documentation.
Note that EIP-1559 can be manually enabled on other chains by setting EVM_EIP1559_DYNAMIC_FEES=true
but we only support it for official Ethereum mainnet and testnets. It is not recommended to enable this setting on Polygon since during our testing process we found that the EIP-1559 fee market appears to be broken on all Polygon chains and EIP-1559 transactions are actually less likely to get included than legacy transactions.
See issue: maticnetwork/bor#347
Removed
LOG_TO_DISK
ENV var.