github sigp/lighthouse v3.2.0
Night Summer

latest releases: v5.3.0, v5.2.1, v5.2.0...
2 years ago

Summary

This medium-priority release contains bugfixes, optimisations and new features. We would like to see this release widely deployed on mainnet in the coming weeks.

Notable changes include:

  • Bugfix for blocks being proposed with 0 attestations.
  • Improvements to subscription handling when using fallback beacon nodes.
  • Optimisations to attestation and block processing.
  • New flags for tweaking interaction with the execution layer.
  • Updated networking libraries with improved stability and performance.

There are also some minor breaking changes, described in Breaking Changes. In particular, users compiling from source must ensure that a Protobuf compiler is installed. The --eth1-endpoints flag should also be removed.

Bugfix for blocks with 0 attestations

Prior versions of Lighthouse are affected by a bug which sometimes causes blocks with 0 attestations to be proposed, e.g. at slot 4992544. We estimate that around 1 in 700 blocks on mainnet are affected.

The impact of this bug is two-fold:

  • Missed attestation inclusion rewards for the proposer of the block, around 0.025 ETH per faulty proposal.
  • Missed attestation rewards for the attesters from the previous slot.

The bug was in validation code that was intended to prevent invalid attestations from being included in blocks, which was misfiring and blocking valid attestations.

We regret that this bug existed on mainnet as long as it did. It is present in all prior versions of Lighthouse except v2.4.0 and v2.5.0, meaning that all mainnet-capable releases are affected.

As more validators upgrade to v3.2.0 we hope to see improved attestation performance across the entire network, as well as increased block rewards for proposers running Lighthouse. Note that the bug does not result in decreased block rewards at the execution layer, as these rewards are due to included transactions rather than attestations.

For more detail on how the bugfix was implemented and tested please see this PR: #3629.

Thanks to Moshe Revah (@moshe-blox) for noticing the issue and bringing it to our attention.

Improved fallback behaviour

In a first step to improve the Lighthouse validator client's fallback behaviour we have implemented broadcast of subscriptions and preparation messages to fallback beacon nodes. This means that running fallback nodes with --subscribe-all-subnets is no longer required.

The extra messages might impose some additional bandwidth and processing load on both the VC and the BN, but our testing indicates that it is quite minimal and significantly less than the overhead of running unnecessarily with --subscribe-all-subnets.

If you are running multiple beacon nodes and would like to opt-out of the broadcast behaviour you can do so using --disable-run-on-all as a flag to lighthouse vc.

Users running a single beacon node with each validator client are unaffected and do not need to add any flags or take any action.

For implementation details please see this PR: #3529.

Block processing optimisations

This release includes two improvements to reduce block processing times by around 35%.

The first optimisation is algorithmic and nets a 20% improvement by avoiding re-calculation of the proposer index (see #3604).

The second improvement comes from enabling aggressive compiler optimisations, including LTO. These compiler optimisations are enabled in the pre-compiled binaries and Docker images, but are not be enabled for source builds by default due to the substantial increase in build time. Users building from source may opt-in via the maxperf compilation profile.

New execution layer flags

There are no less than 3 new flags for controlling interaction with the execution layer client, all contributed by external contributors:

--disable-deposit-contract-sync: prevent Lighthouse from syncing the deposit contract logs. This is useful if running an execution node for a purpose other than staking. It should not be used for staking nodes as it will cause missed block proposals.

--execution-timeout-multiplier N: set a longer timeout for responses from the execution layer. This is useful for low-powered nodes which may struggle to follow the chain if they timeout continually. We don't recommend using this flag for staking as such low-powered nodes are unlikely to be able to support validators.

--execution-jwt-secret-key KEY: set the JWT secret via the CLI rather than from a file. This comes at the cost of reduced security, as the secret will be leaked to other users on the same machine. It is intended for use in automated provisioning systems.

All flags apply to lighthouse bn. For further documentation please see lighthouse bn --help.

Thanks to @pinkiebell, @GeemoCandama and @mariuspod for these contributions!

Updated networking libraries

libp2p has been updated to v0.48.0 which brings several improvements and lays the groundwork for further reductions in bandwidth. Please see #3547 for details.

Breaking Changes

Upgrading to v3.2.0 can be done with minimal changes to configuration. We expect most users will be able to upgrade without any changes. However, if you are still using multiple nodes with --eth1-endpoints you must remove them, see below.

Downgrading to v3.1.2 after upgrading is also supported, so long as any new flags are removed before switching back (e.g. --execution-jwt-secret-key).

Removal of fallbacks from --eth1-endpoints

We have simplified some code by the removal of fallback support from --eth1-endpoints, which has been deprecated since The Merge.

If you are still using the --eth1-endpoints flag with multiple endpoints we recommend that you remove the flag entirely. Failure to remove it before upgrading will result in lighthouse bn failing to start.

If you are using --eth1-endpoint or --eth1-endpoints with a single argument then Lighthouse will still start, but the value of the flag will be ignored.

The only network that hasn't merged at time of writing is Gnosis Chain. If you would like to run a Gnosis node with fallback eth1 nodes we recommend remaining on a prior version such as v2.5.0 (which is also free of the block proposal bug).

For more information on the removal of fallback eth1 nodes please see #3594, and the Merge Migration guide in the book.

Protobuf dependency when building from source

Building from source now requires a Protobuf compiler (protoc) to be installed. The Build from Source instructions in the book have been updated to document this change.

For example, on Ubuntu, protoc can be installed with:

sudo apt install protobuf-compiler

Update Priority

This table provides priorities for which classes of users should update particular components.

User Class Beacon Node Validator Client
Staking Users Medium Priority Medium Priority
Non-Staking Users Low Priority ---

The Beacon Node may be updated without the Validator Client and vice versa, as long as both BN and VC are running a v3.x release.

Beacon nodes and validator clients on pre-v3.0.0 versions have been unable to follow the chain since September 6 2022 when the Bellatrix hard fork was activated.

See Update Priorities for more information about this table.

All Changes

  • Release v3.2.0 (#3647)
  • Ban and unban peers at the swarm level (#3653)
  • bors: require slasher and syncing sim tests (#3645)
  • beacon_node: add --disable-deposit-contract-sync flag (#3597)
  • add execution-timeout-multiplier flag to optionally increase timeouts (#3631)
  • Fix attestation shuffling filter (#3629)
  • Consensus context with proposer index caching (#3604)
  • Optimistic sync spec tests (v1.2.0) (#3564)
  • Optimise HTTP validator lookups (#3559)
  • Add a new bls test (#3235)
  • Pass EL JWT secret key via cli flag (#3568)
  • [DEV FEATURE] Deterministic long lived subnets (#3453)
  • CLI tests for logging flags (#3609)
  • Remove fallback support from eth1 service (#3594)
  • Ensure protoc is installed for release CI (#3621)
  • Changed http:// to https:// on mailing list link (#3610)
  • Add maxperf build profile (#3608)
  • Use #!/usr/bin/env everywhere for local testnets (#3606)
  • Handle Lodestar's new agent string (#3620)
  • Improve logging a little (#3619)
  • Libp2p v0.48.0 upgrade (#3547)
  • Publish subscriptions to all beacon nodes (#3529)
  • Add guide to MEV logs (#3611)

Binaries

See pre-built binaries documentation.

The binaries are signed with Sigma Prime's PGP key: 15E66D941F697E28F49381F426416DC3F30674B0

System Architecture Binary PGP Signature
x86_64 lighthouse-v3.2.0-x86_64-apple-darwin.tar.gz PGP Signature
x86_64 lighthouse-v3.2.0-x86_64-apple-darwin-portable.tar.gz PGP Signature
x86_64 lighthouse-v3.2.0-x86_64-unknown-linux-gnu.tar.gz PGP Signature
x86_64 lighthouse-v3.2.0-x86_64-unknown-linux-gnu-portable.tar.gz PGP Signature
aarch64 lighthouse-v3.2.0-aarch64-unknown-linux-gnu.tar.gz PGP Signature
aarch64 lighthouse-v3.2.0-aarch64-unknown-linux-gnu-portable.tar.gz PGP Signature
x86_64 lighthouse-v3.2.0-x86_64-windows.tar.gz PGP Signature
x86_64 lighthouse-v3.2.0-x86_64-windows-portable.tar.gz PGP Signature
System Option - Resource
Docker v3.2.0 sigp/lighthouse

Don't miss a new lighthouse release

NewReleases is sending notifications on new releases.