Skip to content

Releases: Consensys/teku

v21.9.1

14 Sep 23:30
0399714
Compare
Choose a tag to compare

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 the Accept: 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 in AggregatingAttestationPool.

Downloads

  • Available as 21.9.1 on Dockerhub
  • Download the binary distribution:
    • tar.gz (sha256: 6f07492021422482b1cd050c2c89d52c39c96050dd448b8e3afa5a7ba0af6abb)
    • zip (sha256: 1217a6cef7a682996dceb8b8613680f65411fc4123bea41f6dfa66dfd97cac82)

v21.9.0

14 Sep 01:58
a70fe53
Compare
Choose a tag to compare

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 the Accept: 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 in SC_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

  • Available as 21.9.0 on Dockerhub
  • Download the binary distribution:
    • tar.gz (sha256: 9481b4024822d0123d7ee5bd70332b7806bc906c05c310bb96b350b3ff4f4aeb)
    • zip (sha256: 4d8ad9f35ec90c209ac2ad85a4d92e451139a3c911243a550edc66c2e219f6fd)

v21.8.2

26 Aug 22:02
2737b80
Compare
Choose a tag to compare

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 the Accept: 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 type block 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 a 400 code when the validator is unknown.
  • Produce attestation data (/eth/v1/validator/attestation_data) now returns 400 error for future slots, rather than a 500.
  • 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

  • Available as 21.8.2 on Dockerhub
  • Download the binary distribution:
    • tar.gz (sha256: cae53aaaefb998c2eb436ca7bb98652c44f224bf35cd0b12d8e3e8c46bf4d221)
    • zip (sha256: 16dce597c9b17c8e82cedf0870ea682e47c74d3262cb02b4e83a54ec5620bb52)

v21.8.1

16 Aug 23:04
01a3d4b
Compare
Choose a tag to compare

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 the Accept: 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 in SC_BAD_REQUEST response, with details of the invalid attestations in the response body.

Downloads

  • Available as 21.8.1 on Dockerhub
  • Download the binary distribution:
    • tar.gz (sha256: 4fd5cc11aed9b592b470387671f1f047e664015238d822111ac0a1a11628d776)
    • zip (sha256: db693e374a823e7cf08e858d467f0801bf9e6af54bb3c334144a6f7a0103858c)

v21.8.0

10 Aug 22:29
c18fe87
Compare
Choose a tag to compare

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 the Accept: 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.
  • Rest Api's that are not supported in Altair have been marked as deprecated.

Bug Fixes

  • Fixed ConcurrentModificationException and NoSuchElementException 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

  • Available as 21.8.0 on Dockerhub
  • Download the binary distribution:
    • tar.gz (sha256: f404f7c7f1f0cb781224cf516401ae7d1178993228e8cf92b7ec31d04d95c093)
    • zip (sha256: af64aded12d2cb757fe190280d7a8f0ef59b8982ca474d46d99175f7e1859c43)

v21.7.0

27 Jul 22:45
e4fe830
Compare
Choose a tag to compare

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 the Accept: 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
    the dependent-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 and current_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

  • Available as 21.7.0 on Dockerhub
  • Download the binary distribution:
    • tar.gz (sha256: 009931f7c131d7bdb2d412bc875f3d8c14931707f2cda9bc41669016fd5597c8)
    • zip (sha256: 0f20f46274a15156a3e36c0c2108b747817e2ff2f3887d0d7b9148fe990d4616)

v21.6.1

29 Jun 22:22
d6933e1
Compare
Choose a tag to compare

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 so head 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 the Accept: 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 and PONG 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

  • Available as 21.6.1 on Dockerhub
  • Download the binary distribution:
    • tar.gz (sha256: 90ccfa3ae3194c02447a53e51500091d9805ad93b9ffda6b79824879cb231d52)
    • zip (sha256: 30e5003f98108ffe68d6239a35daae36c3ea4b5ddaa3d254087e694234de7665)

v21.6.0

09 Jun 23:25
c01044c
Compare
Choose a tag to compare

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 so head 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 the Accept: 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

  • Available as 21.6.0 on Dockerhub
  • Download the binary distribution:
    • tar.gz (sha256: f2f49a8c8e1dc988b8758e9da096de1de250f8b904efc2c16565d3ec26afa825)
    • zip (sha256: 9f64d07007f462a4e74875d9104458b86958bd5c9cf09b965936d05f140b9c06)

21.5.0

12 May 00:07
7f81050
Compare
Choose a tag to compare

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 so head 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 the Accept: 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

  • Available as 21.5.0 on Dockerhub
  • Download the binary distribution:
    • tar.gz (sha256: 472d5a25f7186ef0c54e02f24dd7624b5c902f4ce0cb3623ce2e39498b55ff89)
    • zip (sha256: a3dd453a7d149849618fa9edc57f96f3f8b02a9ae3949f08f0dddce98e2d5b67)

v21.4.1

22 Apr 22:54
e1135f0
Compare
Choose a tag to compare

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 so head 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 the Accept: 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.

Downloads

  • Available as 21.4.1 on Dockerhub
  • Download the binary distribution:
    • tar.gz (sha256: b6401da87884666fd87741e8c734cf1f51a94d7bd40ca10346fa31134be781eb)
    • zip (sha256: b80750242549571ab2498a7ad49dc2080a5047548d8b6e20a05718af6f9749c3)