Releases: Consensys/teku
Releases · Consensys/teku
v21.9.1
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 command line option
--validators-performance-tracking-enabled
has been deprecated in favour of--validators-performance-tracking-mode
.
Bug Fixes
- Fixed potential
IllegalStateException
during block production. - Fixed
ConcurrentModificationException
inAggregatingAttestationPool
.
Downloads
v21.9.0
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 command line option
--validators-performance-tracking-enabled
has been deprecated in favour of--validators-performance-tracking-mode
.
Additions and Improvements
- Updated BLST library.
Bug Fixes
- Posting aggregates that fail validation to
/eth/v1/validator/aggregate_and_proofs
will now result inSC_BAD_REQUEST
response, with details of the invalid aggregates in the response body. - Use atomic move when writing slashing protection records, if supported by the file system.
- Increase the batch size when searching for unknown validator indexes from 10 to 50.
- Fixed issue with the voluntary-exit subcommand and Altair networks which caused "Failed to retrieve network config" errors.
- Fixed issue where redundant attestations were incorrectly included in blocks.
- Validator performance is no longer logged when there are no attestations expected.
- Updated sync committee subscriptions to use untilEpoch as an exclusive field.
- Fixed an issue where invalid attestations could be incorrectly added to blocks in the epoch immediately after the Altair fork.
Downloads
v21.8.2
Breaking Changes
- If you have
--Xdata-storage-non-canonical-blocks-enabled
set, this option has been renamed to--data-storage-non-canonical-blocks-enabled
.
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.
Additions and Improvements
- Scheduled Altair upgrade on the Prater testnet at epoch 36660.
- Logged a message to indicate when the node starts and finishes the sync.
- Upgraded jdk16 and default docker image to use eclipse-tumerin builds of OpenJDK.
- jdk14 and jdk15 docker images have been upgraded to use the latest Ubuntu. Note that these images will be removed in future versions.
- Reduced memory usage and GC pressure created while tracking the latest attestations for each validator.
- Reduced CPU and GC pressure during epoch processing by avoiding setting validator effective balances to an unchanged value.
- Reduced memory usage and GC pressure created by state caches.
- Optimised length validation of gossip and RPC messages.
- Introduced new sign type for block signing requests for external signers,
block_v2
, to support Altair and future
milestones. Existing Sign typeblock
is backward compatible with phase0.
Bug Fixes
- Fixed
IllegalStateException: New response submitted after closing AsyncResponseProcessor
errors. - REST API to get a validator from state now returns a
404
code rather than a400
code when the validator is unknown. - Produce attestation data (
/eth/v1/validator/attestation_data
) now returns400
error for future slots, rather than a500
. - Renamed command-line option
--Xdata-storage-non-canonical-blocks-enabled
to--data-storage-non-canonical-blocks-enabled
which was marked as a development option (-X) but not hidden.
Downloads
v21.8.1
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
Additions and Improvements
- Added command line option
--validators-early-attestations-enabled
, which defaults to true.
When using a load balanced beacon node, this option should be disabled. - Added additional bootnodes for the Prater testnet to improve peer discovery.
- Improved peer discovery. All authenticated node sessions are evaluated as potential peers to connect.
- Improved clarity of sync progress log messages.
Bug Fixes
- Added a column size and percentage complete to migrate-database command, where columns contain block or state objects, as they can be time consuming to copy.
- Fixed issue in Altair where sync committee contribution gossip could be incorrectly rejected when received at the very end of the slot.
- Posting attestations that fail validation to
/eth/v1/beacon/pool/attestations
will now result inSC_BAD_REQUEST
response, with details of the invalid attestations in the response body.
Downloads
v21.8.0
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
Additions and Improvements
- Scheduled Altair upgrade on the Pyrmont testnet at epoch 61650.
- Updated default docker image to Java 16 using AdoptOpenJDK Ubuntu based images.
- Docker images now include
curl
to support adding health checks. - Increased the rest api maximum request length to 65535 bytes, was previously 8192 bytes.
- Rest Api's for Altair have been moved out of 'experimental', and are now stable.
- implement POST
/eth/v1/beacon/pool/sync_committees
to allow validators to submit sync committee signatures to the beacon node. - implement POST
/eth/v1/validator/duties/sync/{epoch}
for Altair fork. - implement GET and POST
/eth/v1/validator/sync_committee_subscriptions
for Altair fork. - implement GET
/eth/v2/validator/blocks/{slot}
for Altair fork. - implement GET
/eth/v2/debug/beacon/states/:state_id
for Altair fork. - implement GET
/eth/v1/beacon/states/{state_id}/sync_committees
for Altair fork. /eth/v1/validator/blocks/{slot}
will now produce an altair block if an altair slot is requested./eth/v1/node/identity
will now include syncnets in metadata- implement event channel for
/eth/v1/events&topic=contribution_and_proof
for Altair fork.
- implement POST
- Rest Api's that are not supported in Altair have been marked as deprecated.
Bug Fixes
- Fixed
ConcurrentModificationException
andNoSuchElementException
in validator performance reporting. - Upgraded the discovery library, providing better memory management and standards compliance.
- Fixed
InvalidDepositEventsException
error after restart. - Improve compatibility with Lighthouse bootnodes by not including the local address in the local ENR until the external address has been determined.
Downloads
v21.7.0
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.
Breaking Changes
- Teku no longer publishes a
head
event on the REST API 4 seconds into a slot if a block has not been received.
The--Xvalidators-dependent-root-enabled=false
option can be used to restore the old behaviour.
Note: this should be applied to both the beacon node and validator client if running separately.
Additions and Improvements
- Added
migrate-data
subcommand to allow users to migrate to a leveldb relatively easily without requiring a full re-sync. - Improved compatibility of the validator client with other beacon nodes using the REST API by using
thedependent-root
field to detect re-orgs instead of depending on the beacon chain publishing re-org events when empty slots are later filled.
Bug Fixes
- Fix an issue where new peers would not be found after a network outage.
- Fix a file handle leak in jvm-libp2p.
- Fix
previous_epoch_participation
andcurrent_epoch_participation
representation in
/eth/v2/debug/beacon/states/:state_id
so that it comes back as an array rather than a byte string. /eth/v1/beacon/pool/sync_committees
incorrectly returned 503 when there were no errors instead of 200.- Fix an issue where deposits for the PoW chain could be loaded out of order on restart.
- Fix
/eth/v1/validator/contribution_and_proofs
to return errors. - Add
SYNC_COMMITTEE_SUBNET_COUNT
to/eth/v1/config/spec
, as it was missing.
Downloads
v21.6.1
Upcoming Breaking Changes
- Teku currently publishes a
head
event on the REST API 4 seconds into a slot even if a block has not been received. In a future release this will be changed sohead
event is only published when a new
chain head block is imported. The--Xvalidators-dependent-root-enabled
option can be used to switch to the new behaviour now for testing.
Note: this should be applied to both the beacon node and validator client if running separately. - 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.
Additions and Improvements
- Use batch verification for gossiped attestations to reduce CPU usage. This can be disabled with
--Xp2p-batch-verify-attestation-signatures-enabled=false
. - Fixed issues in discv5
PING
andPONG
message handling which resulted in not updating peer's ENR records correctly. - Implement alpha.7 spec updates to sync committee logic and rewards.
deposit_data
files generated by the deposit-cli tool in the validator keys directory are now automatically ignored. Thanks to Vishal Jhala.- Added new metrics to report on the progress of Eth1 block voting:
beacon_eth1_current_period_votes_max
- Maximum number of votes possible in the current voting period.beacon_eth1_current_period_votes_total
- Number of votes cast so far in the current voting period.beacon_eth1_current_period_votes_best
- Number of votes for the leading candidate in the current voting period.beacon_eth1_current_period_votes_unknown
- Number of votes for blocks this node considers invalid (e.g. unknown blocks).beacon_eth1_current_period_votes_current
- Number of votes for the value in the current state (the default vote per the spec).beacon_eth1_block_cache_size
- Total number of blocks stored in the Eth1 block cache.
Bug Fixes
- Prevent LevelDB transactions from attempting to make any updates after the database is shut down.
- Update
/eth/v1/node/health
to return 206 while node is starting up rather than a 200. - Fixed issue which cause a small reduction in attestation rewards when using
--Xvalidators-dependent-root-enabled
. - Fixed issue with eth1 follow distance tracking revealed in Rayonism testnets. Teku incorrectly strictly follows 2048 blocks before the eth1 head but the follow distance should be based on timestamp, not block number.
This change can be disabled with--Xeth1-time-based-head-tracking-enabled=false
if required.
Experimental: New Altair REST APIs
- implement POST
/eth/v1/beacon/pool/sync_committees
to allow validators to submit sync committee signatures to the beacon node. - implement POST
/eth/v1/validator/duties/sync/{epoch}
for Altair fork. - implement GET and POST
/eth/v1/validator/sync_committee_subscriptions
for Altair fork. - implement GET
/eth/v2/validator/blocks/{slot}
for Altair fork. - implement GET
/eth/v2/debug/beacon/states/:state_id
for Altair fork. - implement GET
/eth/v1/beacon/states/{state_id}/sync_committees
for Altair fork. /eth/v1/validator/blocks/{slot}
will now produce an altair block if an altair slot is requested./eth/v1/node/identity
will now include syncnets in metadata
Downloads
v21.6.0
Upcoming Breaking Changes
- Teku currently publishes a
head
event on the REST API 4 seconds into a slot even if a block has not been received. In a future release this will be changed sohead
event is only published when a new
chain head block is imported. The--Xvalidators-dependent-root-enabled
option can be used to switch to the new behaviour now for testing.
Note: this should be applied to both the beacon node and validator client if running separately. - 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.
Additions and Improvements
- Add additional bootnodes for Pyrmont testnet.
- Implement GET
/eth/v1/node/peer_count
standard api endpoint. - Add
beacon_eth1_requests_total
metric to report the number of requests sent to eth1 endpoints. - Optimise how block production metrics are calculated.
- Include expected path for keystore password file in error message when password file is not found.
- When handling blocksByRange requests that target blocks we haven't yet downloaded, return the standard "resource unavailable" response code (3) rather than a custom response code.
- Remove legacy pure Java BLS cryptography implementation (Mikuli).
- Rework network configuration parsing to accept the new config format. For details on the new format, see the eth2.0-specs repo. With this change, we no longer support pointing to directories for the network configuration. Now, the network config (supplied via
--network
) should always point to a single yaml file. - For Altair networks,
--p2p-subscribe-all-subnets-enabled
will subscribe to all subcommittee subnets. - Support for building with JDK 16.
Bug Fixes
- Fixed failures in the
checkMavenCoordinateCollisions
task if it was run prior to running spotless. - Use system default character set for console output rather than forcing UTF-8. Avoids corrupting characters on systems using charsets that are not ascii based.
- Fixed a
NullPointerException
from validator clients for new networks, prior to genesis being known. - Fixed regression where eth_getLogs responses from Infura that rejected the request because they returned too many logs did not retry the request with a smaller request range.
- Experimental: Fix for eth1 follow distance tracking revealed in Rayonism testnets. Teku incorrectly strictly follows 2048 blocks before the eth1 head but the follow distance should be based on timestamp, not block number.
An experimental fix for this can be enabled with--Xeth1-time-based-head-tracking-enabled
. Further testing will be conducted before enabling this by default.
Downloads
21.5.0
Upcoming Breaking Changes
- Teku currently publishes a
head
event on the REST API 4 seconds into a slot even if a block has not been received. In a future release this will be changed sohead
event is only published when a new
chain head block is imported. The--Xvalidators-dependent-root-enabled
option can be used to switch to the new behaviour now for testing.
Note: this should be applied to both the beacon node and validator client if running separately. - 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.
Additions and Improvements
- Newly created databases will now use LevelDB for storage instead of RocksDB. This uses less memory and has proven to be more stable. Existing databases are unaffected and will continue to use RocksDB.
- Support for automatic fail-over of eth1-endpoints. Multiple endpoints can be specified with the new
--eth1-endpoints
CLI option. Thanks to Enrico Del Fante. - Add experimental endpoint for retrieving peer gossip scores at
/teku/v1/nodes/peer_scores
. - Continued work on supporting Altair including adding a number of experimental REST APIs. These are subject to change as the Altair spec continues to evolve.
Bug Fixes
- Error messages logged when the validator client fails to perform duties now include a complete list of affected validators.
- Fix bug where a REST API request with a missing host header would result in a
NullPointerException
.
Downloads
v21.4.1
Upcoming Breaking Changes
- Teku currently publishes a
head
event on the REST API 4 seconds into a slot even if a block has not been received. In a future release this will be changed sohead
event is only published when a new
chain head block is imported. The--Xvalidators-dependent-root-enabled
option can be used to switch to the new behaviour now for testing.
Note: this should be applied to both the beacon node and validator client if running separately. - 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 default docker image will be updated to Java 16 in an upcoming release.
Additions and Improvements
- Early access: Support for automatic fail-over of eth1-endpoints. Multiple endpoints can be specified with the new
--eth1-endpoints
CLI option. Thanks to Enrico Del Fante. - Basic authentication is now supported for
--initial-state
. Infura can now be used as the source of initial states with--initial-state https://{projectid}:{secret}@eth2-beacon-mainnet.infura.io/eth/v1/debug/beacon/states/finalized
- Implement standard rest api
/eth/v2/beacon/blocks/:block_id
which supports altair blocks. Documented under 'Experimental' endpoints until more widely implemented. - Implement teku rest api to retrieve all blocks at a slot
/teku/v1/beacon/blocks/:slot
, which will return both canonical and non-canonical blocks at a given slot.
Bug Fixes
- Fixed issue where attestation subnets were not unsubscribed from leading to unnecessary CPU load when running small numbers of validators.
- Fixed issue where validator duties were not invalidated in response to new blocks correctly when using dependent roots.
- Fixed issue where exit epoch for voluntary exits would be incorrectly calculated.