Sigp Lighthouse Versions Save

Ethereum consensus client in Rust

v4.6.0-rc.0

4 months ago

Disclaimer

:warning: You should not run this pre-release supporting mainnet validators. This pre-release is, however, required for Goerli validators :warning:

If you are looking for the latest Lighthouse release please go to https://github.com/sigp/lighthouse/releases/latest.

Something went wrong with signing this particular release, but the signatures have now been fixed and the binaries are provided in .tar.gz format as usual.

Summary

This is a pre-release that enables the Deneb hard fork on Goerli (https://github.com/sigp/lighthouse/pull/5036). The Deneb hard fork will occur at epoch 231680 on Goerli, which is Jan 17th, 2024 06:32:00 AM UTC.

All Goerli users must update their nodes to v4.6.0-rc.0 by Jan 17th, 2024 06:32:00 AM UTC.

This release also includes a variety of new features and a few breaking changes. Please see the section on Breaking Changes below.

Networking Improvements

Some extensive changes have been made to the networking components in this release. We have focused on a number of performance and structural changes to the gossipsub protocol and discovery mechanism. Some of the main gossipsub changes are listed in issue (https://github.com/sigp/lighthouse/issues/4918). An overview of the primary changes are:

  • Removed gossipsub flood publishing (https://github.com/sigp/lighthouse/pull/4383) - Aimed to reduce message propagation latency and lighten the memory footprint
  • Upgraded libp2p to v0.53.* (https://github.com/sigp/lighthouse/pull/4935)
  • Enabled concurrent discovery RPC requests
  • Improved handling of slow peers at the gossipsub level
  • Handled memory allocations in message transmission in gossipsub
  • Improved prioritisation of messages in gossipsub

Standard block V3 endpoint

The new produce block V3 API has been standardized across clients (https://github.com/ethereum/beacon-APIs/pull/339). This endpoint allows us to give validators more control over whether to prefer a local or builder payload during proposals. The validator client will not use this new endpoint by default, it must be enabled by adding --produce-block-v3 to the validator client. With the advent of V3, the following flag will no longer be supported:

--builder-profit-threshold

Users of mev-boost can use the -min-bid flag to achieve the same functionality. An equivalent but more expressive config will be possible in an upcoming Lighthouse release (https://github.com/sigp/lighthouse/issues/5039). This config will also be able to restore functionality of the following flag, which is also being deprecated:

--always-prefer-builder-payload

Per-validator configuration of whether to use an external builder is still possible via the builder_proposals field. This will be extended to allow each validator to specify at what profit threshold a builder payload should be used in an upcoming release (https://github.com/sigp/lighthouse/issues/5039).

The block V3 endpoint also allows validators working with multiple beacon nodes (e.g. via Vouch) to compare rewards between beacon nodes before selecting payloads. This is done by exposing the consensus rewards of the block, as well as the execution rewards of the payload directly to the validator.

On the block V2 endpoints, if a validator is using the blinded block flow and gets exceptionally unlucky, falling back to another beacon node at an inopportune time, it could miss its proposal. This is no longer possible with the V3 endpoint.

Execution layer payload selection input

Recent changes in the execution APIs have also provided a new should_override_builder field along with each local payload. Lighthouse will check if this is set to true and return a local payload if it is. This field allows the execution layer to monitor the mempool and look for signs of ongoing censorship from block builders. It can signal its suggestion to use a local payload to combat censorship to the consensus layer to select a local payload in these scenarios.

Validator broadcast

Validator clients can now be configured to publish messages to all connected beacon nodes using the --broadcast flag. This allows users to improve redundency when publishing messages related to validator duties. The flag can be configured with specific message types (attestations,sync-committe,blocks, subscriptions). It can also be configured to make sure subscriptions are not sent to all beacon nodes (--broadcast none). This is equivalent to the --disable-run-on-all flag. Thanks @uvizhe for the contribution!

More information is available in the Redundancy section of the Lighthouse book.

(see https://github.com/sigp/lighthouse/pull/4920)

Standard Liveness Endpoint

The validator client now uses the standard liveness endpoint for doppelganger protection (see https://github.com/sigp/lighthouse/pull/4853). This makes the Lighthouse VC's doppelganger protection compatible with any beacon node that implements the standard liveness endpoint.

Major Changes

New HTTP APIs

The Lighthouse BN supports the following new HTTP APIs:

:warning: Breaking Changes :warning:

VC and BN Compatibility

The Lighthouse VC now uses the liveness endpoint from the standard API, rather than a custom Lightouse endpoint (#4853). This only affects the --enable-doppelganger-protection feature.

When Doppelganger protection is enabled, Lighthouse VCs from this version will not work with Lighthouse BNs prior to v4.4.1 (released Sept. 2023).

Database Migration v18

To support Deneb, this release includes an automatic upgrade from v17 to v18.

To downgrade, follow the instructions in the book for Database Migrations.

Checkpoint sync is required by default

Genesis sync will no longer work without the use of --allow-insecure-genesis-sync. Checkpoint sync should always be preferred to protect yourself from long-range attacks. Additionally, genesis sync is not compatible with data availability checks that are added in Deneb. On chains that have been running for less than ~2 weeks, genesis sync will still work without --allow-insecure-genesis-sync, so this change won't impact local testnets or short-lived testnets.

In order to support archive nodes via checkpoint sync, both of the following flags should be used: --reconstruct-historic-states and --genesis-backfill, along with any other flags normally used for database customization.

Removed flags

The following flags have been deprecated in prior releases and are being removed. Lighthouse will not start up if any are included in the startup command.

  • --spec for lighthouse bn
  • --eth1-endpoint for lighthouse bn
  • --eth1-endpoints for lighthouse bn
  • --beacon-node for lighthouse vc
  • --server for lighthouse vc
  • --delete-lockfiles for lighthouse vc
  • --allow-unsynced for lighthouse vc
  • --strict-fee-recipient for lighthouse vc
  • --merge for lighthouse bn
  • --count-unrealized for lighthouse bn
  • --count-unrealized-full for lighthouse bn
  • --http-disable-legacy-spec for lighthouse bn
  • --minify for lighthouse account validator slashing-protection import/export

(see https://github.com/sigp/lighthouse/pull/4906)

Deprecated flags

The following flags should be removed from setups. If they are not removed, they will have no effect.

Deprecated: --builder-profit-threshold flag

Prefer using the -min-bid flag in mev-boost. An alternative flag in Lighthouse will be provided in an upcoming release (see https://github.com/sigp/lighthouse/issues/5039).

Deprecated: --always-prefer-builder-payload flag

An alternative flag in Lighthouse will be provided in an upcoming release (see https://github.com/sigp/lighthouse/issues/5039).

Deprecated: --disable-run-on-all flag

This flag has been superseded by the --broadcast flag. Use --broadcast none to disable broadcast to all nodes (see https://github.com/sigp/lighthouse/pull/4920).

Rust MSRV

The minimum supported Rust version has been udpated from 1.69.0 to 1.73.0

Users who compile from source (i.e., not Docker or pre-built binary users) will receive the following error if they are using an earlier version of Rust:

lighthouse v4.6.0-rc.0 (/home/sigp/lighthouse/lighthouse)` cannot be built because it requires rustc 1.73.0 or newer

Users can typically obtain the latest version of Rust by running rustup update.

Update Priority

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

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

See Update Priorities more information about this table.

The Beacon Node must be running v4.4.1 or later to support a VC running this release. We recommend updating both the VC and BN to the same release.

This release is high-priority for Goerli users. Goerli users must update both the VC and BN.

All Changes

  • Bump versions
  • Switch libp2p sigp gossipsub fork (#4999)
  • Fix IncorrectAttestationSource error in attn. simulator (#5048)
  • Fix block v3 reward encodings (#5049)
  • remove needless Into (#5026)
  • Disallow genesis sync outside blob pruning window (#5038)
  • Runtime rpc request sizes (#4841)
  • Use blocks v3 endpoint in the VC (#4813)
  • create unified slashing cache (#5033)
  • Add hint for solving CLI tests failure (#5041)
  • update goerli config (#5036)
  • Block v3 builder boost factor (#5035)
  • Track shared memory in metrics (#5023)
  • Bump zerocopy (#5024)
  • Clean up blockv3 metadata and client (#5015)
  • Information for network testing (#4961)
  • suppress error on duplicate blobs (#4995)
  • Fix incorrect blob queue metrics (#5014)
  • Update dependencies to get rid of the yanked deps (#4994)
  • Fix off-by-one bug in missed block detection (#5012)
  • Add flag to disable warning logs for duplicate gossip messages (#5009)
  • Convert a FullPayload to a BlindedPayload correctly (#5005)
  • Add attestation simulator (#4880)
  • Use the block header to compute the canonical_root (#5003)
  • add forK_choice_read_lock as parameter (#4978)
  • Update Rust version in lcli Dockerfile. (#5002)
  • Remove bors.toml 🫡 (#5001)
  • Add mergify merge queue configuration file (#4917)
  • Disable flood publishing (#4383)
  • Batch Verify RPC Blobs (#4934)
  • Remove delayed lookups (#4992)
  • Implement POST validators/validator_balances APIs (#4872)
  • Update docs for v4.6.0 (#4982)
  • upgrade libp2p to v0.53.* (#4935)
  • Fix corrupted DB on networks where the first slot is skipped (Holesky) (#4985)
  • Implement graffiti management API (#4951)
  • CLI in Lighthouse Book (#4571)
  • Small Improvements (#4980)
  • Sidecar inclusion proof (#4900)
  • EIP-3076 tests - complete database (#4958)
  • Fix stuck linkcheck on CI (#4977)
  • Enable progressive balances fast mode by default (#4971)
  • Standard Liveness Endpoint (#4853)
  • Clone state ahead of block production (#4925)
  • Refactor & Fix Bugs in Payload Selection Logic (#4950)
  • Add lcli mock-el (#4587)
  • API for LightClientBootstrap, LightClientFinalityUpdate, LightClientOptimisticUpdate and light client events (#3954)
  • Remove block-delay-ms (#4956)
  • Remove MAX_BLOBS_PER_BLOCK from Holesky config. (#4955)
  • Broadcast various requests as per #4684 (#4920)
  • Merge pull request #4939 from eserilev/block-v3-general-tests
  • Fix Rust beta compiler warnings (rustc 1.75.0-beta.1 (782883f60 2023-11-12)) (#4932)
  • Remove legacy database migrations (#4919)
  • Fix missed block logs (#4922)
  • Fix for issue 4860 - Added in process_justification_and_finalization (#4877)
  • Always use a separate database for blobs (#4892)
  • Update local testnet doc and parameters (#4749)
  • Delete deprecated cli flags (#4906)
  • Verify KZG in Bulk During Block Sync (#4903)
  • Add block-v3 SSZ tests (#4902)
  • Add missed blocks to monitored validators (#4731)
  • more logging improvements (#4885)
  • Fix comment for blob sidecar observation pruning (#4893)
  • Add commmand for pruning states (#4835)
  • Block v3 endpoint (#4629)
  • fix deneb sync bug (#4869)
  • Activate clippy::manual_let_else lint (#4889)
  • restore cargo vendor in test suite (#4886)
  • Fix block backfill with genesis skip slots (#4820)
  • fix docs about --builder (#4754)
  • deneb related logging improvements (#4859)
  • Add block roots heal logic in v18 schema migration. (#4875)
  • don't make lcli on self-hosted runners (#4874)
  • Upgrade to v1.4.0-beta.3 (#4862)
  • Reduce calls to network channel (#4863)
  • Enable BLS portable feature on all CI tests (#4868)
  • Add make lint to development environment section in Book (#4866)
  • #4512 inactivity calculation for Altair (#4807)
  • fix typos (#4838)
  • update libp2p (#4864)
  • Fix: write post state in lcli skip-slots (#4843)
  • chore: replace deprecated hub with gh for releases (#4839)
  • Add CARGO_USE_GIT_CLI to the Dockerfile to work around an OOM bug during cross-compiling (#4828)
  • collect bandwidth metrics per transport (#4805)
  • Deneb review .github (CI cleanup) (#4696)
  • Reduce nextest threads to 8 (#4846)
  • Fix Rayon deadlock in test utils (#4837)
  • Generalise compare_fields to work with iterators (#4823)
  • Remove blob clones in KZG verification (#4852)
  • Fix Homebrew link (#4822)
  • remove crit! logging from ListenerClosed event on Ok() (#4821)
  • Add vendor directory to .gitignore (#4819)
  • Fix metric for total block production time (#4794)
  • Pre-generate test blobs bundle to improve test time. (#4829)
  • Fix broken Nethermind integration tests (#4836)
  • Merge Deneb (#4054)
  • Deneb pr updates 2 (#4851)
  • Reduce attestation subscription spam from VC (#4806)
  • Revise doc API section (#4798)
  • Address Clippy 1.73 lints (#4809)
  • Very minor own nitpicks (#4845)
  • Use Deneb fork in generate_genesis_header
  • Add blob_sidecar event to SSE (#4790)
  • Remove serde derive references (#4830)
  • Delete unused ssz_types file (#4824)
  • Prevent Overflow LRU Cache from Exploding (#4801)
  • Address Clippy 1.73 lints on Deneb branch (#4810)
  • Merge pull request #4808 from jimmygchen/merge-unstable-to-deneb-20231005
  • Use peeking_take_while in BlockReplayer (#4803)
  • Exit aggregation step early if no validator is aggregator (#4774)
  • fix(validator_client): return http 404 rather than 405 in http api (#4758)
  • Remove deficit gossipsub scoring during topic transition (#4486)
  • Optimise head block root API (#4799)
  • Don't downscore peers on duplicate blocks (#4791)
  • Removed old Teku mainnet bootnode ENRs (#4786)
  • enforce non zero enr ports (#4776)
  • PeerManager: move the check for banned peers from connection_established (#4569)
  • Use only lighthouse types in the mock builder (#4793)
  • Ultra Fast Super Slick CI (#4755)
  • Allow libp2p to determine listening addresses (#4700)
  • Clean bors.toml (#4795)
  • add processing and processed caching to the DA checker (#4732)
  • insert cached child at the front of a chain of parent lookups (#4780)
  • Add serde(default) to max_per_epoch_activation_churn_limit in spec config so that VC is compatible to older BN versions. (#4783)
  • reduce blob prune logging in forward sync (#4779)
  • Merge pull request #4781 from jimmygchen/merge-unstable-to-deneb-20230926

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-v4.6.0-rc.0-x86_64-apple-darwin.tar.gz PGP Signature
x86_64 lighthouse-v4.6.0-rc.0-x86_64-apple-darwin-portable.tar.gz PGP Signature
x86_64 lighthouse-v4.6.0-rc.0-x86_64-unknown-linux-gnu.tar.gz PGP Signature
x86_64 lighthouse-v4.6.0-rc.0-x86_64-unknown-linux-gnu-portable.tar.gz PGP Signature
aarch64 lighthouse-v4.6.0-rc.0-aarch64-unknown-linux-gnu.tar.gz PGP Signature
aarch64 lighthouse-v4.6.0-rc.0-aarch64-unknown-linux-gnu-portable.tar.gz PGP Signature
x86_64 lighthouse-v4.6.0-rc.0-x86_64-windows.tar.gz PGP Signature
x86_64 lighthouse-v4.6.0-rc.0-x86_64-windows-portable.tar.gz PGP Signature
System Option - Resource
Docker v4.6.0-rc.0 sigp/lighthouse

v4.5.444-exp

6 months ago

Disclaimer

:warning: You should not run this alpha release supporting mainnet validators :warning:

If you are looking for the latest Lighthouse release please go to https://github.com/sigp/lighthouse/releases/latest.

Summary

This is an alpha release of upcoming changes to Lighthouse which improve disk usage and state management.

We are making this alpha release so that expert users may help us test these improvements. It is not backwards-compatible and not recommended for mainnet validators. Our current plan is to stabilise these changes shortly after the Deneb hard fork on mainnet.

For the adventurous, the main benefits are:

  • Smaller disk footprint for archive nodes, <150GB total. Use checkpoint sync, and set the flag --reconstruct-historic-states.
  • Smaller disk footprint for regular nodes, <30GB.
  • Faster handling of re-orgs.
  • Faster restarts.
  • Less disk I/O.

We hope that this is useful for running block explorers and supporting other beacon chain analytics. We are using it internally at SigP to run some of our analytics.

This release includes important bugfixes compared to the previous v4.5.222-exp release, and a few new features:

Compared to the v4.2.990-exp release the main changes are:

  • Updates to the freezer database schema. There are now less reads required per historic state, at the cost of greater disk usage. A mainnet archive node with the default configuration is now ~140GB. Historic state loads are around 5x faster in testing: 400ms instead of 2s in the worst case. A re-sync is required due to this change.
  • Configurable storage hierarchy. Diffs can now be stored on a per-slot basis, or less frequently than every epoch. We recommend using the default configuration, and haven't done enough testing of other configurations to provide space/speed estimates. See --hierarchy-exponents in lighthouse bn --help.
  • No historic states stored by default (same as v4.4.1). Please use --reconstruct-historic-states to store historic states, even when syncing from genesis. For more information see the section of the v4.4.1 release notes on State Pruning.
  • Lots of optimisations, particularly to epoch-processing, block-processing and the underlying state library (milhouse). This release should now be on-par or faster than stable Lighthouse when it comes to importing blocks.

This release is based on v4.5.0, and also includes the other features from v4.5.0 (and v4.4.1, and v4.3.0). Please see the v4.5.0 release notes for details of breaking changes: https://github.com/sigp/lighthouse/releases/tag/v4.5.0.

:warning: Backwards Compatibility :warning:

This release is backwards compatible with v4.5.222-exp and v4.4.111-exp.

This release is not backwards compatible with stable Lighthouse or tree-states releases prior to v4.4.111-exp. It uses a different database schema (v24) for which no automatic upgrade or downgrade is implemented. We intend to implement an automatic upgrade process once the new schema is finalized. A re-sync might be required to run future versions of tree-states. This release's schema might be the final iteration.

Please only run this release if you are willing to re-sync now, and again in several weeks/months.

There are several breaking changes to CLI flags:

  • The secret dummy flag --unsafe-and-dangerous-mode must be supplied. This is to prevent accidental upgrades to the release by users who don't know what they're getting themselves into. Unfortunately we found that far too many people accidentally ran previous tree-states releases on mainnet.
  • The flags --slots-per-restore-point and --historic-state-cache-size are deprecated and no longer necessary due to the freezer database using hierarchical diffs.
  • The flag --db-migration-period from tree-states v4.2.0-999-exp release is gone and has been replaced by --epochs-per-migration (same name as upstream).

Known Issues

Expect a few sharp edges. Some things you may run into:

  • WARN Parent state is not advanced is logged excessively during sync. This is harmless, albeit annoying.

If you observe any panics, crashes or major performance regressions, please open an issue!

Building from source

Build the v4.5.444-exp tag.

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-v4.5.444-exp-x86_64-apple-darwin.tar.gz PGP Signature
x86_64 lighthouse-v4.5.444-exp-x86_64-apple-darwin-portable.tar.gz PGP Signature
x86_64 lighthouse-v4.5.444-exp-x86_64-unknown-linux-gnu.tar.gz PGP Signature
x86_64 lighthouse-v4.5.444-exp-x86_64-unknown-linux-gnu-portable.tar.gz PGP Signature
aarch64 lighthouse-v4.5.444-exp-aarch64-unknown-linux-gnu.tar.gz PGP Signature
aarch64 lighthouse-v4.5.444-exp-aarch64-unknown-linux-gnu-portable.tar.gz PGP Signature
x86_64 lighthouse-v4.5.444-exp-x86_64-windows.tar.gz PGP Signature
x86_64 lighthouse-v4.5.444-exp-x86_64-windows-portable.tar.gz PGP Signature
System Option - Resource
Docker v4.5.444-exp sigp/lighthouse

v4.5.222-exp

7 months ago

Disclaimer

:warning: You should not run this alpha release supporting mainnet validators :warning:

If you are looking for the latest Lighthouse release please go to https://github.com/sigp/lighthouse/releases/latest.

Summary

This is an alpha release of upcoming changes to Lighthouse which improve disk usage and state management.

We are making this alpha release so that expert users may help us test these improvements. It is not backwards-compatible and not recommended for mainnet validators. Our current plan is to stabilise these changes shortly after the Deneb hard fork on mainnet.

For the adventurous, the main benefits are:

  • Smaller disk footprint for archive nodes, <150GB total. Use checkpoint sync, and set the flag --reconstruct-historic-states.
  • Smaller disk footprint for regular nodes, <30GB.
  • Faster handling of re-orgs.
  • Faster restarts.
  • Less disk I/O.

We hope that this is useful for running block explorers and supporting other beacon chain analytics. We are using it internally at SigP to run some of our analytics.

This release includes just a handful of changes compared to the previous v4.4.111-exp release:

  • Better state caching, resulting in lower memory usage and less cache misses (#4762)
  • Holesky 2.0 testnet support (from v4.5.0 upstream)
  • QUIC support (from v4.5.0 upstream)

Compared to the v4.2.990-exp release the main changes are:

  • Updates to the freezer database schema. There are now less reads required per historic state, at the cost of greater disk usage. A mainnet archive node with the default configuration is now ~140GB. Historic state loads are around 5x faster in testing: 400ms instead of 2s in the worst case. A re-sync is required due to this change.
  • Configurable storage hierarchy. Diffs can now be stored on a per-slot basis, or less frequently than every epoch. We recommend using the default configuration, and haven't done enough testing of other configurations to provide space/speed estimates. See --hierarchy-exponents in lighthouse bn --help.
  • No historic states stored by default (same as v4.4.1). Please use --reconstruct-historic-states to store historic states, even when syncing from genesis. For more information see the section of the v4.4.1 release notes on State Pruning.
  • Lots of optimisations, particularly to epoch-processing, block-processing and the underlying state library (milhouse). This release should now be on-par or faster than stable Lighthouse when it comes to importing blocks.

This release is based on v4.5.0, and also includes the other features from v4.5.0 (and v4.4.1, and v4.3.0). Please see the v4.5.0 release notes for details of breaking changes: https://github.com/sigp/lighthouse/releases/tag/v4.5.0.

:warning: Backwards Compatibility :warning:

This release is backwards compatible with v4.4.111-exp.

This release is not backwards compatible with stable Lighthouse or tree-states releases prior to v4.4.111-exp. It uses a different database schema (v24) for which no automatic upgrade or downgrade is implemented. We intend to implement an automatic upgrade process once the new schema is finalized. A re-sync might be required to run future versions of tree-states. This release's schema might be the final iteration.

Please only run this release if you are willing to re-sync now, and again in several weeks/months.

There are several breaking changes to CLI flags:

  • The secret dummy flag --unsafe-and-dangerous-mode must be supplied. This is to prevent accidental upgrades to the release by users who don't know what they're getting themselves into. Unfortunately we found that far too many people accidentally ran previous tree-states releases on mainnet.
  • The flags --slots-per-restore-point and --historic-state-cache-size are deprecated and no longer necessary due to the freezer database using hierarchical diffs.
  • The flag --db-migration-period from tree-states v4.2.0-999-exp release is gone and has been replaced by --epochs-per-migration (same name as upstream).

Known Issues

Expect a few sharp edges. Some things you may run into:

  • aarch64 (ARM) support is currently broken. As a result there are no binaries or Docker images for ARM.
  • WARN Parent state is not advanced is logged excessively during sync. This is harmless, albeit annoying.

If you observe any panics, crashes or major performance regressions, please open an issue!

Building from source

Build the v4.5.222-exp tag.

All Changes

  • Tree states release v4.5.222-exp (#4782)
  • Merge tag 'v4.5.0' into tree-states
  • Release v4.5.0 (#4768)
  • Fix cli options (#4772)
  • Fix release CI for self-hosted runners (#4770)
  • Move dependencies to workspace (#4650)

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-v4.5.222-exp-x86_64-apple-darwin.tar.gz PGP Signature
x86_64 lighthouse-v4.5.222-exp-x86_64-apple-darwin-portable.tar.gz PGP Signature
x86_64 lighthouse-v4.5.222-exp-x86_64-unknown-linux-gnu.tar.gz PGP Signature
x86_64 lighthouse-v4.5.222-exp-x86_64-unknown-linux-gnu-portable.tar.gz PGP Signature
x86_64 lighthouse-v4.5.222-exp-x86_64-windows.tar.gz PGP Signature
x86_64 lighthouse-v4.5.222-exp-x86_64-windows-portable.tar.gz PGP Signature
System Option - Resource
Docker v4.5.222-exp sigp/lighthouse

v4.5.0

7 months ago

Summary

This is a low-priority release which primarily contains the Holesky re-launch configurations. Some minor features and fixes are also available for mainnet and testnet users.

Feature and bugfixes include:

  • Experimental QUIC support (#4577)
  • Start the VC HTTP API before genesis (#4714)
  • More checks and logging whilst waiting for genesis (#4730)
  • More SSZ support for BN HTTP API endpoints (#4534)
  • Update Holesky configs for re-launch (#4760)
  • Fix block and state queries whilst waiting for genesis (#4761)
  • Require the --http flag (or equivalent) when dependant flags are used (#4674, #4772)
  • Update the voluntary exit HTTP API method to comply with beaconAPIs (#4679)
  • Add new mainnet Teku bootnodes (#4724)

QUIC Support

Experimental QUIC support has been added to Lighthouse with #4577.

By default Lighthouse will attempt to use QUIC on the UDP port one higher than the --port value. For example, the default value for --port is 9000, so Lighthouse will open port 9001 for QUIC. Although it's not required, we encourage users to update their port-forwarding to include this UDP port, too.

Lighthouse's use of QUIC should be transparent to users, but it maybe disabled with the --disable-quic flag.

Compiling from Source

Users who compile from source should ensure they update Rust and checkout and pull the stable branch before building:

  • Most users can update Rust with rustup update
  • Checkout and pull the stable branch with git checkout stable && git pull

Holesky Re-launch

The Holesky testnet experienced a failed genesis on the 15th of September 2023 due to a misconfiguration. The configuration issue has been fixed and a new Holesky launch is planned for September 28th 11:55am (UTC). This release contains the fixed configuration.

Users who participated in the failed Holesky launch should delete their existing data directories (e.g. ~/.lighthouse/holeksy) before running v4.5.0 otherwise they may fail to follow the new chain. It is particularily important to ensure that any existing Holesky validator slashing protection database (slashing_protection.sqlite) is removed to prevent it interfering with the new chain.

Mainnet users do not need to take any action for the Holesky relaunch.

Breaking Changes

This release contains breaking changes, all of which are detailed below.

Breaking Change: Add a data wrapper to the voluntary exit HTTP API endpoint

As per #4635, Lighthouse was divergent from the beaconAPIs specification for the /eth/v1/validator/<pubkey>/voluntary_exit endpoint. This was fixed in #4679 by ensuring the JSON response is wrapped in a top-level data object.

Breaking Change: The --http (or equivalent) flag is required if dependant flags are used

Previously, Lighthouse would allow HTTP server configurations flags like --http-address if the HTTP server was not enabled. The flags would be ignored and cause confusion for users and developers.

With #4674 Lighthosue will now return an error on startup if HTTP server configuration flags are provided when the HTTP server is not enabled. The HTTP server can be enabled using the --http, --staking or --gui flags.

Breaking Change: Minimum Supported Rust Version 1.69.0

The minimum supported Rust version has been set to 1.69.0. See "Compiling from Source" for directives.

Update Priority

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

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

See Update Priorities more information about this table.

The Beacon Node may be updated without also updating the Validator Client. However we recommend upgrading both components for consistency. Holesky users must update both the BN and VC.

All Changes

  • Release v4.5.0 (#4768)
  • Fix cli options (#4772)
  • Fix release CI for self-hosted runners (#4770)
  • Move dependencies to workspace (#4650)
  • Use release workflow runners (#4765)
  • Add new teku bootnodes (#4724)
  • Update the voluntary exit endpoint to comply with the key manager specification (#4679)
  • require http and metrics for respective flags (#4674)
  • Bump quinn-proto to address rustsec vuln (#4767)
  • Update Holesky boot ENR (#4763)
  • Fix block & state queries prior to genesis (#4761)
  • Update holesky config for relaunch (#4760)
  • Add SSZ support to validator block production endpoints (#4534)
  • Fix genesis state download panic when running in debug mode (#4753)
  • Self hosted docker builds (#4592)
  • Fix local testnet to generate keys in the correct folders (#4752)
  • Update local testnet script (#4733)
  • Add more checks and logging before genesis (#4730)
  • Reuse fork choice read lock instead of re-acquiring it immediately (#4688)
  • Prevent port re-use in HTTP API tests (#4745)

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-v4.5.0-x86_64-apple-darwin.tar.gz PGP Signature
x86_64 lighthouse-v4.5.0-x86_64-apple-darwin-portable.tar.gz PGP Signature
x86_64 lighthouse-v4.5.0-x86_64-unknown-linux-gnu.tar.gz PGP Signature
x86_64 lighthouse-v4.5.0-x86_64-unknown-linux-gnu-portable.tar.gz PGP Signature
aarch64 lighthouse-v4.5.0-aarch64-unknown-linux-gnu.tar.gz PGP Signature
aarch64 lighthouse-v4.5.0-aarch64-unknown-linux-gnu-portable.tar.gz PGP Signature
x86_64 lighthouse-v4.5.0-x86_64-windows.tar.gz PGP Signature
x86_64 lighthouse-v4.5.0-x86_64-windows-portable.tar.gz PGP Signature
System Option - Resource
Docker v4.5.0 sigp/lighthouse

v4.4.111-exp

8 months ago

Disclaimer

:warning: You should not run this alpha release supporting mainnet validators :warning:

If you are looking for the latest Lighthouse release please go to https://github.com/sigp/lighthouse/releases/latest.

Summary

This is an alpha release of upcoming changes to Lighthouse which improve disk usage and state management.

We are making this alpha release so that expert users may help us test these improvements. It is not backwards-compatible and not recommended for mainnet validators. Our current plan is to stabilise these changes shortly after the Deneb hard fork on mainnet.

For the adventurous, the main benefits are:

  • Smaller disk footprint for archive nodes, <150GB total. Use checkpoint sync, and set the flag --reconstruct-historic-states.
  • Smaller disk footprint for regular nodes, <30GB.
  • Faster handling of re-orgs.
  • Faster restarts.
  • Less disk I/O.

We hope that this is useful for running block explorers and supporting other beacon chain analytics. We are using it internally at SigP to run some of our analytics.

Compared to the previous v4.2.990-exp release the main changes are:

  • Updates to the freezer database schema. There are now less reads required per historic state, at the cost of greater disk usage. A mainnet archive node with the default configuration is now ~140GB. Historic state loads are around 5x faster in testing: 400ms instead of 2s in the worst case. A re-sync is required due to this change.
  • Configurable storage hierarchy. Diffs can now be stored on a per-slot basis, or less frequently than every epoch. We recommend using the default configuration, and haven't done enough testing of other configurations to provide space/speed estimates. See --hierarchy-exponents in lighthouse bn --help.
  • Holesky testnet support (from v4.4.1 upstream).
  • No historic states stored by default (same as v4.4.1). Please use --reconstruct-historic-states to store historic states, even when syncing from genesis. For more information see the section of the v4.4.1 release notes on State Pruning.
  • Lots of optimisations, particularly to epoch-processing, block-processing and the underlying state library (milhouse). This release should now be on-par or faster than stable Lighthouse when it comes to importing blocks.

This release is based on v4.4.1, and also includes the other features from v4.4.1 (and v4.3.0).

:warning: Backwards Compatibility :warning:

This release is not backwards compatible with stable Lighthouse or prior tree-states releases. It uses a different database schema (v24) for which no automatic upgrade or downgrade is implemented. We intend to implement an automatic upgrade process once the new schema is finalized. A re-sync might be required to run future versions of tree-states. This release's schema might be the final iteration.

Please only run this release if you are willing to re-sync now, and again in several weeks/months.

There are several breaking changes to CLI flags:

  • The secret dummy flag --unsafe-and-dangerous-mode must be supplied. This is to prevent accidental upgrades to the release by users who don't know what they're getting themselves into. Unfortunately we found that far too many people accidentally ran previous tree-states releases on mainnet.
  • The flags --slots-per-restore-point and --historic-state-cache-size are deprecated and no longer necessary due to the freezer database using hierarchical diffs.
  • The flag --db-migration-period from the previous tree-states release is gone and has been replaced by --epochs-per-migration (same name as upstream).

Known Issues

Expect a few sharp edges. Some things you may run into:

  • aarch64 (ARM) support is currently broken. As a result there are no binaries or Docker images for ARM.
  • WARN Parent state is not advanced is logged excessively during sync. This is harmless, albeit annoying.

If you observe any panics, crashes or major performance regressions, please open an issue!

Building from source

Build the v4.4.111-exp tag.

Binaries

See pre-built binaries documentation.

A Docker image for x86_64 only is available on DockerHub as sigp/lighthouse:v4.4.111-exp.

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

All Changes

  • Release v4.4.111-exp (#4729)
  • Restore custom image for Cross
  • Bump schema version to v24
  • Change default epochs-per-state-diff to 16
  • Attempt to fix flaky test
  • Disable ARM docker builds
  • Merge remote-tracking branch 'origin/unstable' into tree-states
  • Await listening address from libp2p in RPC tests setup (#4705)
  • Tree states to support per-slot state diffs (#4652)
  • Remove Node.js from release-tests CI job since we no longer use ganache (#4691)
  • Feat: siren faq update (#4685)
  • Fix some typos in "Advanced Networking" documentation (#4672)
  • Minor revision to Lighthouse Book on validator-manager (#4638)
  • Fix genesis state storage for genesis sync (#4589)
  • Fix deadlock in finalization migration (#4576)
  • Optimise mutations in single-pass epoch processing (#4573)
  • Merge remote-tracking branch 'origin/unstable' into tree-states
  • Single-pass epoch processing (#4483)
  • Merge remote-tracking branch 'origin/tree-states' into tree-states
  • Merge remote-tracking branch 'origin/unstable' into tree-states
  • Implement activation queue cache
  • Fix EpochCache handling in ef-tests (#4454)
  • Fix EpochCache handling in ef-tests
  • Tree states optimization using EpochCache (#4429)
  • Fix db-migration-period default (#4441)

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-v4.4.111-exp-x86_64-apple-darwin.tar.gz PGP Signature
x86_64 lighthouse-v4.4.111-exp-x86_64-apple-darwin-portable.tar.gz PGP Signature
x86_64 lighthouse-v4.4.111-exp-x86_64-unknown-linux-gnu.tar.gz PGP Signature
x86_64 lighthouse-v4.4.111-exp-x86_64-unknown-linux-gnu-portable.tar.gz PGP Signature
x86_64 lighthouse-v4.4.111-exp-x86_64-windows.tar.gz PGP Signature
x86_64 lighthouse-v4.4.111-exp-x86_64-windows-portable.tar.gz PGP Signature
System Option - Resource
Docker v4.4.111-exp sigp/lighthouse

v4.4.1

8 months ago

Summary

This is a low-priority release. It contains several minor bug fixes and performance improvements which we recommend rolling out on mainnet nodes at your convenience. This release also includes support for the Holešky testnet, with genesis on 15 September 2023.

Note that there is no v4.4.0 release due to a bug found late in the release cycle. The bug was fixed in PR #4687, which is included in this release.

The highlights of v4.4.1 are:

  • [NEW] Introduction of the lighthouse validator-manager command for managing validators on a running validator client. Documentation can be found in a new chapter of the Lighthouse book: https://lighthouse-book.sigmaprime.io/validator-manager.html.
  • Improved scheduling for HTTP requests (#4462). Lighthouse will now balance the load of HTTP requests against other important duties, and avoid becoming overwhelmed. We hope that this improves stability for nodes supporting a large number of validators or processing frequent HTTP queries.
  • Disk space savings for new nodes through state pruning (#4610, #4663).
  • Bugfix for backfill sync erroring upon completion (#4465).
  • Support for the Holešky testnet via --network holesky (#4653).
  • Support for the Chiado Gnosis testnet via --network chiado (#4530).

:lady_beetle: Known Issues :lady_beetle:

We have identified a minor bug in the code related to state pruning that can cause an error message to be logged for a limited time after upgrading:

ERRO Missing chunk in forwards iterator

It can be safely ignored, as it does not impact the node's ability to follow the chain or perform validator duties. However, API queries for historic blocks & states may fail until the issue resolves itself. This only affects nodes with an existing database. Nodes with lower --slots-per-restore-point will heal faster, and we expect the maximum time to heal to be around 8192 slots (~27 hours). The issue is being tracked in https://github.com/sigp/lighthouse/issues/4697.

:warning: Breaking Changes :warning:

Breaking Change: State pruning for new nodes

Newly synced nodes will no longer store historic states by default. This applies both to checkpoint sync and genesis sync. Node operators may opt-in to historic state storage by reconstructing states with the --reconstruct-historic-states flag.

Existing nodes will continue storing historic states newer than the checkpoint from which they synced. We are working on a command to prune historic states from existing nodes, which will likely be available in the next release.

The pruned status of a node can be determined using the /lighthouse/database/info API, which will show the value of state_upper_limit as 18446744073709551615. For more details see #4610, #4663.

Breaking Change: Inclusion delay in HTTP rewards API

Support for the phase0 hard fork was added to the attestation rewards API. This required the addition of a new field for the inclusion_delay, which has been standardised upstream in beacon-APIs: https://ethereum.github.io/beacon-APIs/#/Rewards/getAttestationsRewards.

See #4474, #4520 for details.

Breaking Change: HTTP status code for duplicate blocks

Lighthouse will now return an HTTP 202 ACCEPTED response when attempting to publish a block that is already known. This behaviour goes against the current beacon-APIs spec, but is likely better for the majority of API consumers. Previously, a 400 BAD REQUEST response could cause the caller (usually a validator client) to think that block publication had failed when it had not. We have begun a discussion to change the spec to allow the new error code.

The status code can also be set to a custom value using the flag --http-duplicate-block-status. See https://github.com/sigp/lighthouse/pull/4655 for details.

New HTTP APIs

The Lighthouse BN supports the following new HTTP APIs:

  • SSZ variant of POST /eth/v{1,2}/beacon/blocks (#4479).
  • SSZ variant of POST /eth/v{1,2}/beacon/blinded_blocks (#4504).
  • POST /eth/v1/validator/liveness/{epoch} (#4343).
  • GET /eth/v1/builder/states/{state_id}/expected_withdrawals (#4390).

Update Priority

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

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

See Update Priorities more information about this table.

The Beacon Node may be updated without also updating the Validator Client. However we recommend upgrading both components for consistency.

All Changes

  • Release v4.4.1 (#4690)
  • Remove double-locking deadlock from HTTP API (#4687)
  • Release v4.4.0 (#4673)
  • Pin foundry toolchain version to fix stuck CI jobs
  • feat: add chiado (#4530)
  • Fix bug in block root storage (#4663)
  • Add Holesky (#4653)
  • Increase web3signer_tests timeouts (#4662)
  • Show --gui flag in help text (#4660)
  • Do not log slot clock error prior to genesis (#4657)
  • Send success code for duplicate blocks on HTTP (#4655)
  • update dependencies (#4639)
  • rust 1.72 lints (#4659)
  • Use lockfile with cross and fix audit fail (#4656)
  • Revive mplex (#4619)
  • Implement expected withdrawals endpoint (#4390)
  • Remove Antithesis docker build workflow (#4642)
  • Fix the link of anvil in lighthouse book (#4641)
  • Fix beacon-processor-max-workers (#4636)
  • ForkChoice: remove an impossible case for parent_checkpoints (#4626)
  • Remove checkpoint alignment requirements and enable historic state pruning (#4610)
  • Fix Prefer Builder Flag (#4622)
  • Update blst to 0.3.11 (#4624)
  • add metrics::VALIDATOR_DUTIES_SYNC_HTTP_POST for post_validator_duties_sync (#4617)
  • attester_duties: remove unnecessary case (#4614)
  • Don't kill SSE stream if channel fills up (#4500)
  • Fix disable backfill flag not working correctly (#4615)
  • Improve HTTP API error messages + tweaks (#4595)
  • ForkChoice: remove head_block_root field (#4590)
  • opt maybe_update_best_child_and_descendant: remove an impossible case (#4583)
  • Use the native concurrency property to cancel workflows (#4572)
  • Fix bug of init_from_beacon_node (#4613)
  • use account_manager::CMD instead of magic string (#4612)
  • remove optional_eth2_network_config (#4611)
  • minor optimize process_active_validator: avoid a call to state.get_validator (#4608)
  • align editorconfig with rustfmt (#4600)
  • Fix some typos (#4565)
  • Improve transport connection errors (#4540)
  • Use BeaconProcessor for API requests (#4462)
  • Add validator-manager (#3502)
  • Increase slashing protection test SQL timeout to 500ms (#4574)
  • Support SSZ request body for POST /beacon/blinded_blocks endpoints (v1 & v2) (#4504)
  • Update doppelganger note about sync committee contributions (#4425)
  • Shift networking configuration (#4426)
  • CommitteeCache.get_all_beacon_committees: set correct capacity to avoid realloc (#4557)
  • CommitteeCache.initialized: fail early if possible (#4556)
  • fix typo (#4555)
  • upgrade to libp2p 0.52 (#4431)
  • Deprecate exchangeTransitionConfiguration functionality (#4517)
  • Update Lighthouse book FAQ (#4510)
  • add ssz support in request body for /beacon/blocks endpoints (v1 & v2) (#4479)
  • Development feature flag - Disable backfill (#4537)
  • Add Eth Version Header (#4528)
  • Fix incorrect ideal rewards calculation (#4520)
  • Fix bug in lcli transition-blocks and improve pretty-ssz (#4513)
  • Restore upstream arbitrary (#4372)
  • Implement liveness BeaconAPI (#4343)
  • Add self-hosted runners v2 (#4506)
  • Phase 0 attestation rewards via Beacon API (#4474)
  • Cleanup unreachable code in lcli::generate_bootnode_enr and some tests (#4485)
  • Speed up CI by installing foundry with Github action (#4505)
  • Rust 1.71 lints (#4503)
  • CI fix: add retries to eth1 sim tests (#4501)
  • Clean up local testnet files without prompting (#4498)
  • Remove wget dependency (#4497)
  • Update mev-rs and remove patches (#4496)
  • Remove instances of required arguments with default values (#4489)
  • Use unique arg names for eth1-sim (#4463)
  • Fix HTTP state API bug and add --epochs-per-migration (#4236)
  • bump proc-macro2 (#4464)
  • Remove hidden re-exports to appease Rust 1.73 (#4495)
  • Add state-root command and network support to lcli (#4492)
  • Move the BeaconProcessor into a new crate (#4435)
  • Bump default checkpoint sync timeout to 3 minutes (#4466)
  • Correct checks for backfill completeness (#4465)

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-v4.4.1-x86_64-apple-darwin.tar.gz PGP Signature
x86_64 lighthouse-v4.4.1-x86_64-apple-darwin-portable.tar.gz PGP Signature
x86_64 lighthouse-v4.4.1-x86_64-unknown-linux-gnu.tar.gz PGP Signature
x86_64 lighthouse-v4.4.1-x86_64-unknown-linux-gnu-portable.tar.gz PGP Signature
aarch64 lighthouse-v4.4.1-aarch64-unknown-linux-gnu.tar.gz PGP Signature
aarch64 lighthouse-v4.4.1-aarch64-unknown-linux-gnu-portable.tar.gz PGP Signature
x86_64 lighthouse-v4.4.1-x86_64-windows.tar.gz PGP Signature
x86_64 lighthouse-v4.4.1-x86_64-windows-portable.tar.gz PGP Signature
System Option - Resource
Docker v4.4.1 sigp/lighthouse

v4.3.0

10 months ago

Summary

This is a low-priority release for Mainnet, Goerli and Sepolia users. However, this release schedules the Capella upgrade for Gnosis (#4433) on UTC Tue 01/08/2023, 11:34:20, therefore this release is high-priority for Gnosis users.

For all networks, this release contains new features, bug-fixes and optimisations including:

  • Add Sigma Prime IPv6 boot nodes (#4394)
  • Implement broadcast_validation APIs (#4316)
  • Schedule Capella for Gnosis chain (#4433)
  • Significantly reduce bandwidth by ignoring "aggregate subsets" (#3493)
  • Reduced bandwidth for nodes running multiple validators by subscribing to less subnets (#4304)
  • Allow setting validator graffiti via PATCH lighthouse/validators/{validator_pubkey} (#4417)
  • Add a CLI flag for the builder validator/register_validator batch size (#4399)
  • Re-enable maxperf for Windows releases (#4371)
  • Enable slasher broadcast by default (#4368)
  • Downgrade a CRIT log in the VC for builder timeouts (#4366)
  • Switch default slasher backend to LMDB (#4360)

Bandwidth Reductions

There are two major reductions to bandwidth use in this release. The first change in #3493 benefits all nodes, and works by ignoring redundant attestation aggregates received via gossip. This brings Lighthouse to parity with other clients which had already implemented this change.

The second change in #4304 overhauls the handling of attestation subnet subscriptions. Previously Lighthouse would subscribe to 1 attestation subnet for each connected validator, up to the total of 64. Now, every Lighthouse node will subscribe to 2 subnets total. For nodes with 0-2 validators, this is a minor change, while for nodes with multiple validators this represents a significant reduction.

Large staking operators who are accustomed to being subscribed to all subnets may want to opt back in using the --subscribe-all-subnets flag. Although this increases bandwidth significantly, it also improves block rewards by a few percent, and can provide stability for the node and the network.

Breaking Changes

The breaking changes in this release only apply to users who use the --slasher flag.

Breaking Change: Enable Slasher Broadcasting by Default

Lighthouse will now set --slasher-broadcast true by default. This only applies to users who run with the --slasher flag and means that any slashings detected will be broadcast to the network immediately.

Previously, Lighthouse would store the slashing privately in the hope that it may include it in a block of its own. Whilst this behaviour is profit-maximising, it is only effective if there are no slashers on the network running with --slasher-broadcast true. In practice we've observed that almost all slashings are immediately broadcast, so the profit-maximising strategy is unlikely to yield any additional rewards. Broadcasting by default prioritises network health and resilience, and we recommend that users switch from profit-maximising to broadcasting.

The old behaviour can be achieved with --slasher-broadcast false.

Breaking Change: Use LMDB for the Default Slasher Backend

The default slasher backend has been changed back to LMDB. This only applies to users who run with the --slasher flag.

If an MDBX database exists and the MDBX backend is enabled then MDBX will continue to be used. Our release binaries and Docker images will continue to include MDBX for as long as it is practical, so users of these should not notice any difference.

The main benefit is for users compiling from source. These users no longer have to struggle to compile MDBX and deal with the compatibility issues that arise.

Update Priority

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

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

See Update Priorities more information about this table.

This release is high-priority for Gnosis users. Gnosis users must update both the Beacon Node and Validator Client.

For mainnet users, the Beacon Node may be updated without also updating the Validator Client. However we recommend upgrading both components for consistency.

All Changes

  • Release v4.3.0 (#4452)
  • Ipv6 bootnodes update (#4394)
  • Cache target attester balances for unrealized FFG progression calculation (#4362)
  • Update node health endpoint (#4310)
  • added debounce to log (#4269)
  • Add broadcast validation routes to Beacon Node HTTP API (#4316)
  • avoid relocking head during builder health check (#4323)
  • Schedule Capella for Gnosis chain (#4433)
  • Tidy formatting of Reqwest errors (#4336)
  • Aggregate subsets (#3493)
  • Bump openssl deps (#4421)
  • Add lint-fix task to automatically fix some Clippy warnings. (#4419)
  • Add support for updating validator graffiti (#4417)
  • Configure the validator/register_validator batch size via the CLI (#4399)
  • Update Lighthouse book on Doppelganger Protection (#4418)
  • Remove legacy max-skip-slots checks (#4403)
  • Improve ENR logic for ipv6 (#4395)
  • Correct table formatting in Lighthouse book (#4407)
  • Remove CountUnrealized (#4357)
  • Use JSON by default for Deposit Snapshot Sync (#4397)
  • Rework internal rpc protocol handling (#4290)
  • Re-enable maxperf for Windows releases (#4371)
  • Minor revision in Lighthouse book (#4385)
  • Use MediaType accept header parser (#4216)
  • Update discv5 to expand ipv6 support (#4319)
  • Enable slasher broadcast by default (#4368)
  • Fix Anvil compilation on Windows (#4381)
  • feat: added new info about logs and config features (#4378)
  • Downgrade a CRIT in the VC for builder timeouts (#4366)
  • Switch default slasher backend to LMDB (#4360)
  • Always log the value of relay and local blocks for comparison (#4352)
  • Appease clippy in Rust 1.70 (#4365)
  • Update Nethermind (#4361)
  • Add an option to disable inbound rate limiter (#4327)
  • Expose execution block hash calculation (#4326)
  • Update Lighthouse Book API and Advanced Usage section (#4300)
  • Addition to Lighthouse Book faq.md (#4273)
  • Fix libpq typo in beacon.watch README (#4356)
  • Remove unused crate publishing Github action and script (#4347)
  • Add SSH tunneling in Lighthouse UI Siren (#4328)
  • Shift subnet backbone structure (attnets revamp) (#4304)
  • Add libpq-dev and docker to the to the list of additional requirements for developers in the Book (#4282)
  • Fix Rust 1.71.0 warnings (#4348)
  • Fix geth scripts (#4342)
  • swap unnecessary write lock to read lock in block_verification (#4340)
  • Add db inspect --output values option to support dumping raw db values (#4324)
  • Update blog link in README (#4322)
  • chore: Bellatrix occurred for Gnosis (#4301)
  • Keep payload cache idempotent (#4256)

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-v4.3.0-x86_64-apple-darwin.tar.gz PGP Signature
x86_64 lighthouse-v4.3.0-x86_64-apple-darwin-portable.tar.gz PGP Signature
x86_64 lighthouse-v4.3.0-x86_64-unknown-linux-gnu.tar.gz PGP Signature
x86_64 lighthouse-v4.3.0-x86_64-unknown-linux-gnu-portable.tar.gz PGP Signature
aarch64 lighthouse-v4.3.0-aarch64-unknown-linux-gnu.tar.gz PGP Signature
aarch64 lighthouse-v4.3.0-aarch64-unknown-linux-gnu-portable.tar.gz PGP Signature
x86_64 lighthouse-v4.3.0-x86_64-windows.tar.gz PGP Signature
x86_64 lighthouse-v4.3.0-x86_64-windows-portable.tar.gz PGP Signature
System Option - Resource
Docker v4.3.0 sigp/lighthouse

v4.2.990-exp

10 months ago

Disclaimer

:warning: You should not run this alpha release supporting mainnet validators :warning:

If you are looking for the latest Lighthouse release please go to https://github.com/sigp/lighthouse/releases/latest.

Summary

This is an alpha release of upcoming changes to Lighthouse which improve disk usage and state management.

For more information about this family of releases, please see the v3.4.0-tree.1 release notes.

Compared to the previous release the main changes are:

  • Capella support
  • Freezer database rewritten to use hierarchical diffs (even lower disk usage, around 100 GiB for an archive node)

:warning: Backwards Compatibility :warning:

This release is not backwards compatible with stable Lighthouse or prior tree-states releases. It uses a different database schema (v23) for which no automatic upgrade or downgrade is implemented. We intend to implement an automatic upgrade process once the new schema is finalized. A re-sync will be required to run future versions of tree-states.

Please only run this release if you are willing to re-sync now, and again in several weeks/months.

There are several breaking changes to CLI flags:

  • The secret dummy flag --unsafe-and-dangerous-mode must be supplied. This is to prevent accidental upgrades to the release by users who don't know what they're getting themselves into. Unfortunately we found that far too many people accidentally ran previous tree-states releases on mainnet.
  • The flags --slots-per-restore-point and --historic-state-cache-size are deprecated and no longer necessary due to the freezer database using hierarchical diffs.

Known Issues

Expect a few sharp edges. Some things you may run into:

  • aarch64 (ARM) support is currently broken. As a result there are no binaries for ARM.
  • The Docker image on DockerHub is for x86_64/modern CPUs only. It was built manually to work around the ARM issue.
  • WARN Parent state is not advanced is logged excessively during sync. This is harmless, albeit annoying.
  • Block processing is a bit slower than stable Lighthouse.

If you observe any panics, crashes or major performance regressions, please open an issue!

Building from source

Build the v4.2.990-exp tag.

Binaries

See pre-built binaries documentation.

A Docker image for x86_64 only is available on DockerHub as sigp/lighthouse:v4.2.990.

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

v4.2.0

11 months ago

Summary

This is a medium-priority release for Mainnet users. It contains important improvements to the resilience of Lighthouse, however there is no immediate urgency to upgrade.

Users who connect their VC to multiple BNs will have reduced risk of missed attestations and orphaned blocks when there is an offline EE (#4295).

Support for "proposer-only" BNs has been added to Lighthouse. Although we don't recommend this functionality for most stakers, it may be useful for enterprise operations or in the case of a large-scale attack on Ethereum. Read about this advanced feature in the documentation.

This release contains many notable features, optimisations and bug fixes:

  • Add a lighthouse/logs SSE endpoint to the VC API to expose logging (#4074)
  • Update Gnosis Capella preset (#4302)
  • Update Sepolia bootnodes (#4297)
  • Prioritise the head state in the shuffling cache (#4296)
  • Improve VC fallback behaviour when an EE is offline (#4295)
  • Add a flag for storing invalid blocks as SSZ files (#4194)
  • Fix bug with attestation verification on fork boundaries (#4263)
  • Reduce bandwidth over the VC<>BN API using dependant roots (#4170)
  • Fix bug when computing withdrawals root (#4249)
  • Backfill blocks only to the WSP by default (#4082)
  • Massively improve historic state lookup performance via the API (#4228)
  • Enable build profiles for Docker source builds (#4237)
  • Prevent disconnection from trusted peers (#4159)
  • Provide support for "proposer-only" BNs to mitigate targeted DoS attacks (#4182)
  • Add attestation inclusion distance to the HTTP API (#4148)

Breaking Changes

Breaking Change: Database Schema V17

To reduce complexity in the fork choice algorithm, the database schema has been upgraded to v17 (#4265). The schema upgrade will be applied automatically upon upgrading and should not take more than a few seconds.

To downgrade, follow the instructions in the book for Database Migrations.

Users may downgrade at any time.

Breaking Change: Backfilling

After a checkpoint sync, Lighthouse will only backfill to the most recent weak subjectivity checkpoint unless the --genesis-backfill flag is provided (#4082). The previous behaviour was to always backfill to the genesis block.

The --genesis-backfill flag is not required for staking. Nodes performing "archive" duties may wish to add this flag so they may download and store the entire history of the chain.

Omitting the --genesis-backfill flag for new BN databases will result in reduced disk usage and reduced network bandwidth during sync. Nodes which are already synced to genesis will maintain their history, even if the --genesis-backfill flag is not present. In a future release we will enable existing nodes to prune old blocks from their database so that they can achieve reduced disk usage without a re-sync.

Breaking Change: Graceful Handling of Offline EEs

The Lighthouse VC will now detect when the BN indicates that its EE (e.g., Geth, Nethermind, Besu, Erigon, etc) is offline. The VC will then prefer a BN with an online EE (#4295).

This functionality is only possible when the VC has multiple (aka "fallback") BNs provided via the --beacon-nodes flag.

If there is no alternative BN with an online EE, the VC will go back to the previous behaviour of attempting to perform its duties regardless of the EE status.

Breaking Change: Updated LLVM Version

Windows users may fail to compile Lighthouse if their LLVM version is earlier than 15.0 (#4220). Upgrading can typically be achieved with choco upgrade llvm.

Update Priority

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

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

See Update Priorities more information about this table.

The Beacon Node may be updated without also updating the Validator Client. However we recommend upgrading both components for consistency.

All Changes

  • v4.2.0 (#4309)
  • Logging via the HTTP API (#4074)
  • Avoid excessive logging of BN online status (#4315)
  • Update gnosis capella preset (#4302)
  • add more sepolia bootnodes (#4297)
  • Add more metrics for tracking sync messages (#4308)
  • Enshrine head state shuffling in the shuffling_cache (#4296)
  • Implement el_offline and use it in the VC (#4295)
  • Fix PERSIST_ETH1_CACHE / PERSIST_OP_POOL Metrics (#4278)
  • Post merge local testnets (#3807)
  • Remove redundant gossipsub tests (#4294)
  • Don't requeue already-known RPC blocks (#4214)
  • Add a flag for storing invalid blocks (#4194)
  • Replace ganache-cli with anvil (#3555)
  • DB migration for fork choice cleanup (#4265)
  • Attestation verification uses head state fork (#4263)
  • Reduce bandwidth over the VC<>BN API using dependant roots (#4170)
  • Update links in Lighthouse Book (#4279)
  • Fix attestation withdrawals root mismatch (#4249)
  • Fix log on initializing external block builder (#4267)
  • Add branching instructions to the contribution guide (#4272)
  • Do not attempt to resubscribe to core topics (#4271)
  • Backfill blocks only to the WSP by default (#4082)
  • improve api-bn.md (#4244)
  • use state cache to optimise historical state lookup (#4228)
  • Update Lighthouse book Sec 3-6 and FAQ (#4221)
  • simplify calculate_committee_fraction (#4213)
  • Update igd to v0.12.1 (#4257)
  • Un-deprecate test utils functions such as extend_chain (#4255)
  • Enable build profiles for Docker source builds (#4237)
  • Maintain trusted peers (#4159)
  • Prepare CI for merge queues (#4252)
  • remove withdrawal warning (#4207)
  • Logfile no restrict help text for windows (#4165)
  • Feat: lighthouse book - ui authentication (#4232)
  • Split common crates out into their own repos (#3890)
  • Separate BN for block proposals (#4182)
  • add attestation inclusion distance in http api (#4148)
  • Fix Rust 1.69 lints (#4222)
  • Update LLVM version to 15.0 in CI workflows (#4220)

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-v4.2.0-x86_64-apple-darwin.tar.gz PGP Signature
x86_64 lighthouse-v4.2.0-x86_64-apple-darwin-portable.tar.gz PGP Signature
x86_64 lighthouse-v4.2.0-x86_64-unknown-linux-gnu.tar.gz PGP Signature
x86_64 lighthouse-v4.2.0-x86_64-unknown-linux-gnu-portable.tar.gz PGP Signature
aarch64 lighthouse-v4.2.0-aarch64-unknown-linux-gnu.tar.gz PGP Signature
aarch64 lighthouse-v4.2.0-aarch64-unknown-linux-gnu-portable.tar.gz PGP Signature
x86_64 lighthouse-v4.2.0-x86_64-windows.tar.gz PGP Signature
x86_64 lighthouse-v4.2.0-x86_64-windows-portable.tar.gz PGP Signature
System Option - Resource
Docker v4.2.0 sigp/lighthouse

v4.1.0

1 year ago

Summary

This is a high-priority release for Mainnet users. It fixes an issue which caused excessive CPU usage shortly after the Mainnet Capella upgrade (#4183).

Users on v4.0.1 or earlier should upgrade as soon as possible. This release is less important for users already running v4.0.2-rc.0; that release already contains an effective fix. However the fix in this release is more accurate so we recommend that v4.0.2-rc.0 users upgrade to this release at their next convenience.

We expect the conditions that caused excessive CPU usage are unlikely to return, however we recommend users upgrade to bolster the resilience of the Ethereum network.

This release also contains new improvements that were not present in v4.0.1 or v4.0.2-rc.0:

  • The /eth/v1/debug/fork_choice HTTP endpoint was added (#4003)
  • The PATCH lighthouse/validators/{pubkey} endpoint has been optimised (#4126)
  • The HTTP API has been updated to include references to the finalized checkpoint (#3753)
  • Backfilling has been rate-limited to mitigate validator performance issues after a recent checkpoint sync. The old behaviour can be obtained with the --disable-backfill-rate-limiting flag (#3936)
  • The Lighthouse VC can now create signed voluntary exit messages via the HTTP API (#4119)
  • The --disable-peer-scoring flag has been added for developer usage (#4135)
  • The proposer boost re-orging strategy is now configurable and more cautious by default (#4151)
  • Payload reconstruction via the HTTP API now uses the dedicated EE endpoint, addressing an issue with Erigon compatibility (#4102)
  • Lighthouse now supplies a user-agent to builders (#4199)

With this release we are also encouraging users to re-enable mev-boost and re-orgs if they had previously disabled them. The latency issues with the MEV relays have resolved, and re-orgs should be more reliable now that improvements to gossip have been rolled out by other clients. If you experience a missed block or failed re-org running Lighthouse v4.1.0 please reach out.

Compiling from Source

Users who compile from source should ensure they update Rust and checkout and pull the stable branch before building:

  • Most users can update Rust with rustup update
  • Checkout and pull the stable branch with git checkout stable && git pull

Breaking Changes

Breaking Change: Minimum Supported Rust Version 1.68.2

The minimum supported Rust version has been set to 1.68.2 to address a serious bug in prior Rust releases (see #4204 for more information).

Users who compile from source (i.e., not Docker or pre-built binary users) will receive the following error if they are using an earlier version of Rust:

lighthouse v4.1.0 (/home/karlm/lighthouse/lighthouse)` cannot be built because it requires rustc 1.68.2 or newer

Users can typically obtain the latest version of Rust by running rustup update.

Breaking Change: New Fields Added to HTTP API Responses

The HTTP API has been updated to include references to the finalized checkpoint (#3753).

This aligns Lighthouse with the standard BeaconAPIs, which added these fields in https://github.com/ethereum/beacon-APIs/pull/254.

Update Priority

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

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

See Update Priorities more information about this table.

The Beacon Node may be updated without also updating the Validator Client. However we recommend upgrading both components for consistency.

All Changes

  • Release v4.1.0 (#4191)
  • Check lateness of block before requeuing it (#4208)
  • Bump Rust version (MSRV) (#4204)
  • Set user agent on requests to builder (#4199)
  • Use efficient payload reconstruction for HTTP API (#4102)
  • Address observed proposers behaviour (#4192)
  • Use head state for exit verification (#4183)
  • Update Lighthouse book and some FAQs (#4178)
  • Avoid processing redundant RPC blocks (#4179)
  • Make re-org strat more cautious and add more config (#4151)
  • Remove Redundant Trait Bound (#4169)
  • Remove the unused ExecutionOptimisticForkVersionedResponse type (#4160)
  • Add a flag to disable peer scoring (#4135)
  • CI fix: move download web3signer binary out of build script (#4163)
  • Add beacon.watch (#3362)
  • remove dup log (#4155)
  • Ban peer race condition (#4140)
  • Add new validator API for voluntary exit (#4119)
  • Rate limiting backfill sync (#3936)
  • Update database-migrations.md (#4149)
  • update README of local_testnet (#4114)
  • Test failing CI tests due to port conflicts (#4134)
  • Add finalized to HTTP API responses (#3753)
  • Correct log for ENR (#4133)
  • Optimise update_validators by decrypting key cache only when necessary (#4126)
  • Add debug fork choice api (#4003)
  • improve error message (#4141)
  • Update Rust version in lcli Dockerfile (#4121)
  • Update arbitrary (#4139)

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-v4.1.0-x86_64-apple-darwin.tar.gz PGP Signature
x86_64 lighthouse-v4.1.0-x86_64-apple-darwin-portable.tar.gz PGP Signature
x86_64 lighthouse-v4.1.0-x86_64-unknown-linux-gnu.tar.gz PGP Signature
x86_64 lighthouse-v4.1.0-x86_64-unknown-linux-gnu-portable.tar.gz PGP Signature
aarch64 lighthouse-v4.1.0-aarch64-unknown-linux-gnu.tar.gz PGP Signature
aarch64 lighthouse-v4.1.0-aarch64-unknown-linux-gnu-portable.tar.gz PGP Signature
x86_64 lighthouse-v4.1.0-x86_64-windows.tar.gz PGP Signature
x86_64 lighthouse-v4.1.0-x86_64-windows-portable.tar.gz PGP Signature
System Option - Resource
Docker v4.1.0 sigp/lighthouse