Additions and Improvements
-
Teku now supports running the validator client as a separate process via the
teku validator-clientsubcommand. The in-process validator client is still supported.IMPORTANT: To avoid being slashed, ensure validator keys are only passed as arguments to either the beacon node or the validator client but never both at the same time.
-
Migrates to a new directory structure for data storage to provide clear separation between beacon node and validator files. Existing databases will be automatically migrated.
-
Improved management of states to reduce on-heap memory usage during long periods of non-finalization.
-
Head update and chain reorg events are no longer published during sync. A single coalesced event is published when sync completes.
-
Reduced database growth rate during periods of non-finalization. State snapshots are only stored every two epochs instead of each epoch. This can be further adjusted with
--Xhot-state-persistence-frequency. -
New standard REST API endpoints:
/eth/v1/beacon/headers/{block_id}/eth/v1/beacon/states/:state_id/committees//eth/v1/beacon/states/:state_id/committees/:epoch/eth/v1/beacon/states/:state_id/finality_checkpoints/eth/v1/beacon/states/:state_id/validators/eth/v1/beacon/states/:state_id/validator_balances/eth/v1/validator/aggregate_attestation/eth/v1/validator/aggregate_and_proofs/eth/v1/validator/beacon_committee_subscriptions/eth/v1/validator/attestation_data/eth/v1/beacon/pool/attestations/eth/v1/beacon/states/:state_id/root/eth/v1/beacon/blocks/eth/v1/validator/blocks/{slot}
-
/eth/v1/validator/duties/attester/:epochnow includes thecommittees_at_slotvalue. -
/eth/v1/validator/duties/attester/:epochnow supports using thePOSTmethod to specify validator IDs, avoiding URL length limits. -
The beacon node now automatically manages persistent subnet subscriptions based on the requests to
/eth/v1/validator/beacon_committee_subscriptionsendpoint -
Log to the console if the ETH1 node's chain ID doesn't match the expected value from the ETH2 network definition. This alerts users if the ETH1 node is sync'd to the wrong ETH1 network. Thanks to
systemfreund. -
Performance tracker reports now include information on duties which could not be performed due to an error.
-
Added support for v1.0.0-rc.0 of the beacon chain spec.
-
Added a
beacon_attestation_pool_sizemetric to report the number of attestations held in the attestation pool. -
StrictNoSignrequirements are now enforced on gossip messages. Messages withfrom,signatureorseqnofields will be rejected. -
Removed support for
onyxandaltonaoptions to the--networkcommand line option. These networks used an older, incompatible version of the beacon chain spec and have been shut down. -
The
--config-fileoption can now be used to provide options for all subcommands. -
Added support for checking the weak subjectivity period and checkpoint. Violations are currently reported to the log file only while the remaining details and infrastructure for handling the weak subjectivity period are finalized.
Bug Fixes
- Fixed "Unhandled error while processes req/response"
NullPointerException. - Fixed issue where performance tracker logs counted attestations twice.
- Force external signer connections to use HTTP1.1. HTTP2 connections were regularly failing in Azure.
- Fixed incompatibility with Lighthouse caused by sending an unexpected
RESETafter both sides of a stream were closed. - Fixed issue where REST API reported a 500 internal server error when syncing instead of 503.
- Fixed issue where REST APIs returning validator information incorrectly used the effective balance instead of the actual balance.
Upcoming Breaking Changes
- REST API endpoints are being migrated to the standard API. Deprecated endpoints will be removed in a future release. Current replacements:
- GET
/eth/v1/beacon/states/{state_id}/validators/{validator_id}replaced by POST/eth/v1/beacon/states/{state_id}/validators/{validator_id} /network/enrreplaced by/eth/v1/node/identity/network/listen_addressesreplaced by/eth/v1/node/identity/network/peer_idreplaced by/eth/v1/node/identity/network/peersreplaced by/eth/v1/node/peers/network/peer_countreplaced by/eth/v1/node/peers/network/listen_portreplaced by/eth/v1/node/identity/node/forkreplaced by/eth/v1/beacon/states/{state_id}/fork/node/genesis_timereplaced by/eth/v1/beacon/genesis/node/syncingreplaced by/eth/v1/node/syncing/node/versionreplaced by/eth/v1/node/version- GET
/validator/attestationreplaced by/eth/v1/validator/attestation_data - POST
/validator/attestationreplaced by/eth/v1/beacon/pool/attestations - GET
/validator/blockreplaced by/eth/v1/validator/blocks/{slot} - POST
/validator/blockreplaced by/eth/v1/beacon/blocks /validator/aggregate_attestationreplaced by/eth/v1/validator/aggregate_attestation- POST
/validator/dutiesreplaced by POST/eth/v1/validator/duties/attester/{epoch}and GET/eth/v1/validator/duties/proposer/{epoch} /validator/aggregate_and_proofsreplaced by/eth/v1/validator/aggregate_and_proofs/validator/beacon_committee_subscriptionreplaced by/eth/v1/validator/beacon_committee_subscriptions/validator/persistent_subnets_subscriptiondeprecated. The beacon node now automatically establishes persistent subnet subscriptions based on calls to/eth/v1/validator/beacon_committee_subscriptions
- GET
--validators-key-filesand--validators-key-password-fileshave been replaced by--validator-keys. The old arguments still work but will be removed in a future release.- Validator subcommands for generating and registering validators are now deprecated and will be removed in a future release to encourage the use of the Eth2 Launchpad, which is the most secure way of generating keys and sending deposits.