Releases: Consensys/teku
v22.1.1
This is an optional upgrade containing new features, bug fixes and optimisations.
Downloads
- Available as
22.1.1
on Dockerhub - Download the binary distribution:
Breaking Changes
- The "merge" hard fork has now been renamed to "bellatrix", matching the changes in the beacon spec 1.1.8 release.
Custom network configurations will need to be updated and theversion
field in the Beacon REST API will now reportbellatrix
instead ofmerge
.
Additions and Improvements
- Optimised sync committee processing to avoid duplicate group checks for public keys.
- Reduced amount of data copying required when calculating sha256 hashes and use a more efficient sha256 implementation when available.
- Updated Javalin to version 4.2.0.
- Added periodic keep alive to event stream.
- Added get remote keys to keymanager api
- Added the local key management api specified in the standard keymanager-api specification for the validator-client.
Bug Fixes
- Rest api endpoints accepting validator IDs will no longer reject valid bytes48 hex strings that are not on the g2 curve.
- Upgraded discovery to fix
ConcurrentModificationException
. - Fixed 503 response from REST APIs when creating an attestation or block based on finalized data.
- Improved peer validation during libp2p handshake.
Upcoming Breaking Changes
- Support for the Pyrmont testnet will be removed in an upcoming release. The Prater testnet should be used instead.
- The
/teku/v1/beacon/states/:state_id
endpoint has been deprecated in favor of the standard API/eth/v1/debug/beacon/states/:state_id
which now returns the state as SSZ when theAccept: application/octet-stream
header is specified on the request. - The
/eth/v1/debug/beacon/states/:state_id
endpoint has been deprecated in favor of the v2 Altair endpoint/eth/v2/debug/beacon/states/:state_id
- The
/eth/v1/beacon/blocks/:block_id
endpoint has been deprecated in favor of the v2 Altair endpoint/eth/v2/beacon/blocks/:block_id
- The
/eth/v1/validator/blocks/:slot
endpoint has been deprecated in favor of the v2 Altair endpoint/eth/v2/validator/blocks/:slot
- The commandline option
--validators-performance-tracking-enabled
has been deprecated in favour of--validators-performance-tracking-mode
v22.1.0
This is a recommended update containing security and performance improvements. All users are strongly recommended to upgrade at your earliest convenience.
Downloads
- Available as
22.1.0
on Dockerhub - Download the binary distribution:
Breaking Changes
- API users should switch to using response 'code' from BadRequests, rather than 'status' field, in line with the standard API.
Additions and Improvements
- Added
kintsugi
network definition. - Optimised discv5 by caching calculated node ID.
- Avoided object allocation when calculating integer square root values.
Bug Fixes
- Updated to log4j 2.17.1. Resolves two potential vulnerabilities which are only exploitable when using custom log4j configurations that are either writable by untrusted users or log data from the
ThreadContext
. - Made BadRequests compliant with the api, returning 'code' rather than 'status'.
- Invalid sync contributions were created if a validator was present multiple times in the same sync sub-committee.
- Reduced error to warning when sync contribution cannot be created because the beacon node has no matching sync messages.
- Fixed issue where validator duties were not performed during the first epoch after startup.
- Updated jvm-libp2p to improve negotiation of mplex and multistream connections.
Upcoming Breaking Changes
- Support for the Pyrmont testnet will be removed in an upcoming release. The Prater testnet should be used instead.
- The
/teku/v1/beacon/states/:state_id
endpoint has been deprecated in favor of the standard API/eth/v1/debug/beacon/states/:state_id
which now returns the state as SSZ when theAccept: application/octet-stream
header is specified on the request. - The
/eth/v1/debug/beacon/states/:state_id
endpoint has been deprecated in favor of the v2 Altair endpoint/eth/v2/debug/beacon/states/:state_id
- The
/eth/v1/beacon/blocks/:block_id
endpoint has been deprecated in favor of the v2 Altair endpoint/eth/v2/beacon/blocks/:block_id
- The
/eth/v1/validator/blocks/:slot
endpoint has been deprecated in favor of the v2 Altair endpoint/eth/v2/validator/blocks/:slot
- The commandline option
--validators-performance-tracking-enabled
has been deprecated in favour of--validators-performance-tracking-mode
v21.12.2
This is an important security update. All users are strongly recommended to update as soon as possible.
Additional security vulnerabilities were found in log4j in the newly released 2.15.0 which details are not yet available for.
As a result we cannot yet confirm if Teku is vulnerable to them. This release of Teku upgrades to log4j 2.16.0 which is safe
against these new vulnerabilities and completely disables JDNI which is the underlying technology used in this category of attack.
As as result we strongly encourage all users to update as soon as possible to 21.12.2 even if you have previously updated to 21.12.1.
Downloads
- Available as
21.12.2
on Dockerhub - Download the binary distribution:
Additions and Improvements
- Updated CLI options ensuring unmatched options aren't confused as parameters.
Bug Fixes
- Updated to log4j 2.16.0.
- Fix multiarch JDK17 variant docker image to bundle Java 17 instead of Java 16
Upcoming Breaking Changes
- Support for the Pyrmont testnet will be removed in an upcoming release. The Prater testnet should be used instead.
- The
/teku/v1/beacon/states/:state_id
endpoint has been deprecated in favor of the standard API/eth/v1/debug/beacon/states/:state_id
which now returns the state as SSZ when theAccept: application/octet-stream
header is specified on the request. - The
/eth/v1/debug/beacon/states/:state_id
endpoint has been deprecated in favor of the v2 Altair endpoint/eth/v2/debug/beacon/states/:state_id
- The
/eth/v1/beacon/blocks/:block_id
endpoint has been deprecated in favor of the v2 Altair endpoint/eth/v2/beacon/blocks/:block_id
- The
/eth/v1/validator/blocks/:slot
endpoint has been deprecated in favor of the v2 Altair endpoint/eth/v2/validator/blocks/:slot
- The commandline option
--validators-performance-tracking-enabled
has been deprecated in favour of--validators-performance-tracking-mode
v21.12.1
This is a critical security update. All users should update immediately.
Downloads
- Available as
21.12.1
on Dockerhub - Download the binary distribution:
Bug Fixes
- Updated log4j version and configuration to guarantee a zero-day remote code exploit published for log4j cannot be used against Teku nodes.
Upcoming Breaking Changes
- Support for the Pyrmont testnet will be removed in an upcoming release. The Prater testnet should be used instead.
- The
/teku/v1/beacon/states/:state_id
endpoint has been deprecated in favor of the standard API/eth/v1/debug/beacon/states/:state_id
which now returns the state as SSZ when theAccept: application/octet-stream
header is specified on the request. - The
/eth/v1/debug/beacon/states/:state_id
endpoint has been deprecated in favor of the v2 Altair endpoint/eth/v2/debug/beacon/states/:state_id
- The
/eth/v1/beacon/blocks/:block_id
endpoint has been deprecated in favor of the v2 Altair endpoint/eth/v2/beacon/blocks/:block_id
- The
/eth/v1/validator/blocks/:slot
endpoint has been deprecated in favor of the v2 Altair endpoint/eth/v2/validator/blocks/:slot
- The commandline option
--validators-performance-tracking-enabled
has been deprecated in favour of--validators-performance-tracking-mode
- The commandline option
--network
of thevalidator-client
subcommand introduces a new option valueauto
, which automatically
fetches network configuration information from the configured beacon node endpoint. Other--network
option values for an external validator client
are now deprecated in favour of this option value (usage:teku validator-client --network=auto
)
v21.12.0
This is an optional upgrade including new features and performance improvements.
Downloads
- Available as
21.12.0
on Dockerhub - Download the binary distribution:
Breaking Changes
- Removed migration code from the old
ProtoArraySnapshot
based storage to the new format.
Any node correctly following the Altair chain has already gone through this migration so no users should be affected by this.
Additions and Improvements
- Added support for using the optimized BLST which is more efficient but does not support some older CPUs.
On Linux and Mac Teku will attempt to detect if the CPU is compatible and automatically use the optimized version.
On Windows or if auto-detection fails the portable version continues to be used.
The version of BLST to use can be explicitly set by setting theteku.portableBlst
system property. e.gJAVA_OPTS="-Dteku.portableBlst=true" teku
- Docker images are now published with multi-arch support including Linux/amd64 and Linux/arm64 (including M1)
- Introduces a new database format for archive nodes that significantly improves response times for queries that require historic state data.
Existing databases and nodes using the default PRUNE storage mode are unchanged. Archive nodes wishing to take advantage of this will need to perform a full resync. - The default docker image now uses JDK 17 instead of 16. The JDK 16 image is still available with the version suffix
-jdk16
- Include the date in output to console, when log files are not being written.
- Reinstated the ignore rule for aggregate attestation gossip where the attestation root has been previously seen.
The corresponding change in the spec has been reverted because it caused higher cpu and network usage. - Added new metrics
executor_signature_verifications_queue_size
,executor_signature_verifications_task_count
,
executor_signature_verifications_batch_count
andexecutor_signature_verifications_batch_size
to give visibility
into the remaining capacity of the signature verification process.
Bug Fixes
- Generated head events will now send the slot of the latest block rather than the calculated head slot.
Upcoming Breaking Changes
- Support for the Pyrmont testnet will be removed in an upcoming release. The Prater testnet should be used instead.
- The
/teku/v1/beacon/states/:state_id
endpoint has been deprecated in favor of the standard API/eth/v1/debug/beacon/states/:state_id
which now returns the state as SSZ when theAccept: application/octet-stream
header is specified on the request. - The
/eth/v1/debug/beacon/states/:state_id
endpoint has been deprecated in favor of the v2 Altair endpoint/eth/v2/debug/beacon/states/:state_id
- The
/eth/v1/beacon/blocks/:block_id
endpoint has been deprecated in favor of the v2 Altair endpoint/eth/v2/beacon/blocks/:block_id
- The
/eth/v1/validator/blocks/:slot
endpoint has been deprecated in favor of the v2 Altair endpoint/eth/v2/validator/blocks/:slot
- The commandline option
--validators-performance-tracking-enabled
has been deprecated in favour of--validators-performance-tracking-mode
- The commandline option
--network
of thevalidator-client
subcommand introduces a new option valueauto
, which automatically
fetches network configuration information from the configured beacon node endpoint. Other--network
option values for an external validator client
are now deprecated in favour of this option value (usage:teku validator-client --network=auto
)
v21.11.1
This is an optional upgrade fixing bugs in the standard REST API compatibility.
Binary Downloads
- Available as
21.11.1
on Dockerhub - Download the binary distribution:
Bug Fixes
- Fixed compatibility of
/eth/v2/beacon/blocks/{block_id}
and/eth/v1/beacon/blocks
endpoints. - Fixed compatibility of BLST on Apple Silicon chips.
Upcoming Breaking Changes
- Support for the Pyrmont testnet will be removed in an upcoming release. The Prater testnet should be used instead.
- Docker images will default to the JDK 17 variant in a future release.
- The
/teku/v1/beacon/states/:state_id
endpoint has been deprecated in favor of the standard API/eth/v1/debug/beacon/states/:state_id
which now returns the state as SSZ when theAccept: application/octet-stream
header is specified on the request. - The
/eth/v1/debug/beacon/states/:state_id
endpoint has been deprecated in favor of the v2 Altair endpoint/eth/v2/debug/beacon/states/:state_id
- The
/eth/v1/beacon/blocks/:block_id
endpoint has been deprecated in favor of the v2 Altair endpoint/eth/v2/beacon/blocks/:block_id
- The
/eth/v1/validator/blocks/:slot
endpoint has been deprecated in favor of the v2 Altair endpoint/eth/v2/validator/blocks/:slot
- The commandline option
--validators-performance-tracking-enabled
has been deprecated in favour of--validators-performance-tracking-mode
- The commandline option
--network
of thevalidator-client
subcommand introduces a new option valueauto
, which automatically
fetches network configuration information from the configured beacon node endpoint. Other--network
option values for an external validator client
are now deprecated in favour of this option value (usage:teku validator-client --network=auto
)
v21.11.0
This is an optional upgrade providing new features and improvements.
Downloads
- Available as
21.11.0
on Dockerhub - Download the binary distribution:
Upcoming Breaking Changes
- Support for the Pyrmont testnet will be removed in an upcoming release. The Prater testnet should be used instead.
- Docker images will default to the JDK 17 variant in a future release.
- The
/teku/v1/beacon/states/:state_id
endpoint has been deprecated in favor of the standard API/eth/v1/debug/beacon/states/:state_id
which now returns the state as SSZ when theAccept: application/octet-stream
header is specified on the request. - The
/eth/v1/debug/beacon/states/:state_id
endpoint has been deprecated in favor of the v2 Altair endpoint/eth/v2/debug/beacon/states/:state_id
- The
/eth/v1/beacon/blocks/:block_id
endpoint has been deprecated in favor of the v2 Altair endpoint/eth/v2/beacon/blocks/:block_id
- The
/eth/v1/validator/blocks/:slot
endpoint has been deprecated in favor of the v2 Altair endpoint/eth/v2/validator/blocks/:slot
- The commandline option
--validators-performance-tracking-enabled
has been deprecated in favour of--validators-performance-tracking-mode
- The commandline option
--network
of thevalidator-client
subcommand introduces a new option valueauto
, which automatically
fetches network configuration information from the configured beacon node endpoint. Other--network
option values for an external validator client
are now deprecated in favour of this option value (usage:teku validator-client --network=auto
)
Additions and Improements
- Added support for Apple Silicon (M1 chips).
- Added LevelDB support for Linux/arm64.
- Attestations are now sent to the beacon node in batches by default when using the validator-client.
- Added relevant epoch to attestation and sync committee performance log message.
- Support v.2.1.0 of the standard rest api. It should be noted that the 'version' has been changed to lower case to comply with the api specification.
- Removed ignore rule for aggregate attestation gossip where the attestation root has previously been seen.
- Added metrics to report client type of connected peers -
libp2p_connected_peers_current
, with client tagTeku
,Lighthouse
,Prysm
,Nimbus
,Unknown
. - Updated to Javalin 4 for the rest api.
- Switched executor queue size metrics to use labelled gauge.
- New console message when Teku switches forks.
- Reduce CPU usage by using batching signature verification service for aggregate attestation and sync committee contributions.
Bug Fixes
- Fixed issue where discovery did not correctly abort handshake attempts when a request timed out.
- Fixed issue where
Syncing Completed
message was printing multiple times. - Limited the number of validator public keys to lookup per request in
voluntary-exit
subcommand to avoid exceeding maximum URL length limits.
v21.10.1
Downloads
- Available as
21.10.1
on Dockerhub - Download the binary distribution:
Upcoming Breaking Changes
- Docker images will default to the JDK 17 variant in a future release.
- The
/teku/v1/beacon/states/:state_id
endpoint has been deprecated in favor of the standard API/eth/v1/debug/beacon/states/:state_id
which now returns the state as SSZ when theAccept: application/octet-stream
header is specified on the request. - The
/eth/v1/debug/beacon/states/:state_id
endpoint has been deprecated in favor of the v2 Altair endpoint/eth/v2/debug/beacon/states/:state_id
- The
/eth/v1/beacon/blocks/:block_id
endpoint has been deprecated in favor of the v2 Altair endpoint/eth/v2/beacon/blocks/:block_id
- The
/eth/v1/validator/blocks/:slot
endpoint has been deprecated in favor of the v2 Altair endpoint/eth/v2/validator/blocks/:slot
- The commandline option
--validators-performance-tracking-enabled
has been deprecated in favour of--validators-performance-tracking-mode
- The commandline option
--network
of thevalidator-client
subcommand introduces a new option valueauto
, which automatically
fetches network configuration information from the configured beacon node endpoint. Other--network
option values for an external validator client
are now deprecated in favour of this option value (usage:teku validator-client --network=auto
)
Bug Fixes
- Reverted to blst 0.3.5 to resolve an incompatibility with Windows systems that do not have MingW installed.
v21.10.0
Breaking Changes
- The
-jdk14
and-jdk15
docker image variants are no longer being updated as JDK 14 and 15 are no longer receiving security updates from upstream vendors.
Note that the default docker image usage JDK 16 and is still receiving security updates.
Upcoming Breaking Changes
- Docker images will default to the JDK 17 variant in a future release.
- The
/teku/v1/beacon/states/:state_id
endpoint has been deprecated in favor of the standard API/eth/v1/debug/beacon/states/:state_id
which now returns the state as SSZ when theAccept: application/octet-stream
header is specified on the request. - The
/eth/v1/debug/beacon/states/:state_id
endpoint has been deprecated in favor of the v2 Altair endpoint/eth/v2/debug/beacon/states/:state_id
- The
/eth/v1/beacon/blocks/:block_id
endpoint has been deprecated in favor of the v2 Altair endpoint/eth/v2/beacon/blocks/:block_id
- The
/eth/v1/validator/blocks/:slot
endpoint has been deprecated in favor of the v2 Altair endpoint/eth/v2/validator/blocks/:slot
- The commandline option
--validators-performance-tracking-enabled
has been deprecated in favour of--validators-performance-tracking-mode
- The commandline option
--network
of thevalidator-client
subcommand introduces a new option valueauto
, which automatically
fetches network configuration information from the configured beacon node endpoint. Other--network
option values for an external validator client
are now deprecated in favour of this option value (usage:teku validator-client --network=auto
)
Additions and Improvements
- Upgraded Netty dependency to include fixes for two HIGH severity security vulnerabilities (CVE-2021-37136 and CVE-2021-37137) which may lead to DOS attacks.
- Upgraded to BLST 0.3.6.
- Added
validator_local_validator_counts
metric to report number of local validators by current status. - Added JDK 17 docker images. The JDK 16 based images remain the default, append
-jdk17
to the docker image version to use the JDK 17 variant. JDK 17 images will become the default in a future release. - Added new
--p2p-udp-port
and--p2p-advertised-udp-port
options to support using different ports for TCP and UDP. - Added an additional bootnode for the Prater testnet.
- Maximize revenue from attester slashings by prioritising slashings that involve more validators first.
Bug Fixes
- Fixed a possible crash on shutdown when using levelDb.
- Set an idle timeout for metrics connections, to clean up ports when no longer used.
- Fixed error when building from a source download rather than a git checkout.
Now logs a warning when building without git information to warn users that version information will not be available. - Fixed an issue where discovery did not recover if it was initially started while the bootnodes were unavailable.
Downloads
21.9.2
Upcoming Breaking Changes
- The
/teku/v1/beacon/states/:state_id
endpoint has been deprecated in favor of the standard API/eth/v1/debug/beacon/states/:state_id
which now returns the state as SSZ when theAccept: application/octet-stream
header is specified on the request. - The
/eth/v1/debug/beacon/states/:state_id
endpoint has been deprecated in favor of the v2 Altair endpoint/eth/v2/debug/beacon/states/:state_id
- The
/eth/v1/beacon/blocks/:block_id
endpoint has been deprecated in favor of the v2 Altair endpoint/eth/v2/beacon/blocks/:block_id
- The
/eth/v1/validator/blocks/:slot
endpoint has been deprecated in favor of the v2 Altair endpoint/eth/v2/validator/blocks/:slot
- The
-jdk14
and-jdk15
docker image variants will be removed in a future release. JDK 14 and 15 are no longer receiving security updates from upstream vendors.
Note that the default docker image usage JDK 16 and is still receiving security updates. - The commandline option
--validators-performance-tracking-enabled
has been deprecated in favour of--validators-performance-tracking-mode
- The commandline option
--network
of thevalidator-client
subcommand now supports the valueauto
, which automatically
fetches network configuration information from the configured beacon node endpoint. Other--network
options are deprecated and will be removed in a future release.
Additions and Improvements
- Includes support for Altair network upgrade on MainNet at epoch 74240.
- Upgraded to BLST 0.3.5.
- Validator client
--network
option now supports theauto
option to load the correct configuration from the beacon node. /teku/v1/admin/readiness
endpoint now accepts atarget_peer_count
param to require a minimum number of peers before the node is considered ready.- Support for building on JDK 17.
Bug Fixes
- Fix
NoSuchElementException
reported at startup by validator performance tracking module. - Fix
IllegalStateException
reported on altair networks, when none of your validators are in a sync committee for the current epoch. - Fix failed to export/import slashing protection data.
- Fix incorrect gossip validation when processing duplicate sync committee messages which could lead to an error being reported instead of ignoring the duplicate.
- Added additional verification of message lengths when decoding snappy messages.