Summary
This update provides significant optimisations and bug-fixes for mainnet users.
We recommend all users update to this release, at their convenience. Users
need to update both their Beacon Node (BN) and Validator Client (VC) when
updating.
Notable changes include:
- Adds a mechanism to improve attestation performance during heavy disk I/O (#2872).
- Improves cache performance during skip slots and late-blocks (#2849, #2832).
- Fixes cases where peers are excessively penalized and disconnected, resulting in
sharp drops in peer counts (#2903, #2894). - Switches the slasher database to MDBX, resulting in a smaller disk footprint (#2776).
- Changes default behaviour when using a relative
--datadir
(#2682, #2846). - Introduces support for running merge testnets (e.g. Kintsugi) (#2768).
Users should expect this release candidate to provide more stability, reduced resource consumption
and better validator performance.
Known Issues
Increased Memory Footprint
During testing, some nodes exhibited a temporarily increased beacon node memory
footprint of about 150% (~3GB) after upgrading from v2.0.1
to v2.1.0
. The memory usage returns to normal after the first restart.
This increased footprint occurs during a recent database migration. The
migration causes memory fragmentation which increases the overall memory
footprint.
Users who observe an increased memory footprint can choose to restart their
beacon node to get the "normal" footprint again. Users who don't mind the
increased footprint can leave their node running with no harm.
Since the migration only happens once (i.e. the first time running v2.1.0
or
later) and the memory usage is within reasonable bounds, the developers have
opted to leave the migration as-is.
Teku/Infura Compatibility
Connecting a Lighthouse validator client to a Teku (or Infura) beacon node produces a warning:
WARN Beacon node config does not match exactly, advice: check that the BN is updated and configured for any upcoming forks
This is due to some minor differences in how the two clients serve data on the /config/spec
endpoint when new hard forks are defined. The warning is cosmetic (if annoying), and the two clients will continue to function in its presence.
Breaking Changes
The VC from this release (v2.1.0
) is not compatible with Lighthouse BNs from prior versions.
Users MUST update both Lighthouse BNs and VCs to v2.1.0
.
New dependencies
Lighthouse now requires libclang
when building from source. For details on the packages to install for different platforms please see the updated Building from Source section of the book.
❗ Database Schema Upgrade ❗
Some changes have been made to Lighthouse's database schema to support "the merge", proposer
boosting, and other optimisations. The database schema upgrade will be applied automatically upon
upgrading. Once a beacon node's database has been upgraded by Lighthouse v2.1.0 it will no longer be
compatible with any v2.0.x release, meaning that if you want to revert to a previous version of
Lighthouse you will have to re-sync. We anticipate that this will not be necessary, but Checkpoint
Sync is a good way to re-sync quickly if required.
Slasher Database Changed from LMDB to MDBX
The following section is relevant only to users running a slasher.
The slasher's underlying database has been upgraded to MDBX in
order to address disk usage issues with LMDB (#2538).
Combined with more efficient attestation storage, this should result in around 5-10x less disk space
being used over a long period.
The upgrade to MDBX will happen automatically and destructively upon running v2.1.0. Any previous
LMDB database will be deleted and replaced with a fresh MDBX database. We made the decision to
delete the database rather than copy it, in order to reduce complexity and to avoid running out of
space while copying hundreds of gigabytes of data. Although some LMDB slasher databases had
ballooned to 800GB+ they still only contained data from the last 18 days (4096 epochs) and will be
rebuilt to an equivalent smaller database after running the new release for 18 days.
If you are concerned about everyone upgrading at the same time you could choose to wait a random
number of days between 1 and 18 before upgrading. However we suspect that this is not necessary due
to the presence of Prysm slashers on the network, and the natural staggering of upgrades amongst
users.
Relative Paths in Data Directory
In this release, a bug with parsing the --datadir
flag resulted in relative paths being relative
to the users home directory, rather than to the present working directory. This has been fixed in
#2682 and #2846.
Backwards compatibility is maintained by opening the path relative to the home directory, if it
exists. If that path does not exist, the path is assumed to be relative to the present working
directory.
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 | Medium Priority | --- |
Users Classes and Priorities
Staking users are those who use lighthouse bn
and lighthouse vc
to stake on the Beacon Chain. Non-staking users are those who run a lighthouse bn
for non-staking purposes (e.g., data analysis or applications).
High priority updates should be completed as soon as possible (e.g., hours or days). Medium priority updates should be completed at the next convenience (e.g., days or a week). Low priority updates should be completed in the next routine update cycle (e.g., two weeks).
All Changes
- v2.1.0 (#2928)
- Make /config/spec backwards compat for VC (#2934)
- Update to spec v1.1.8 (#2893)
- Use "release candidate" in book (#2920)
- v2.1.0-rc.1
- v2.1.0-rc.0
- Remove grandparents from snapshot cache (#2917)
- Lazy hashing for SignedBeaconBlock in sync (#2916)
- PeerDB Status unknown bug fix (#2907)
- Network performance tuning (#2608)
- Remove gitter from readme (#2914)
- Fix broken links in book (#2912)
- Rust 1.58 lints (#2906)
- Remove penalty for attesting to unknown head (#2903)
- Antithesis docker workflow (#2877)
- Add peer score adjustment msgs (#2901)
- Avoid penalizing peers for delays during processing (#2894)
- Skip serializing proposer boost if null (#2899)
- Avoid peer penalties on internal errors for batch block import (#2898)
- Update dependencies including
sha2
(#2896) - Add early attester cache (#2872)
- Document Homebrew package (#2885)
- Adjusting ARCHIVE_URL (#2892)
- Add tests for flags
enable-enr-auto-update
anddisable-packet-filter
(#2887) - Fix off-by-one in block packing lcli (#2878)
- Allow value for beacon_node fee-recipient argument (#2884)
- Use
?
debug formatting for block roots in beacon_chain.rs (#2890) - Update to superstruct v0.4.1 (#2886)
- Fix assert in slashing protection import (#2881)
- Update rust version in
lcli
Dockerfile (#2876) - Only import blocks with valid execution payloads (#2869)
- Additional networking metrics (#2549)
- Allow to set validator password via reimport (#2868)
- Optimise slasher DB layout and switch to MDBX (#2776)
- Add configurable block replayer (#2863)
- Unban peers at the swarm level when purged (#2855)
- Minor Edit on Port Forward Reference (#2867)
- Downgrade AttestationStateIsFinalized error to debug (#2866)
- Enable
mallinfo2
behind feature flag (#2864) - Update docker images to Ubuntu latest (#2862)
- do not count dialing peers in the connection limit (#2856)
- Update OpenSSL (#2865)
- Optimise balances cache in case of skipped slots (#2849)
- v1.1.6 Fork Choice changes (#2822)
- Merge devnet 3 (#2859)
- Update rusqlite from yanked version (#2861)
- Remove wrong duplicated comment (#2751)
- Optimise snapshot cache for late blocks (#2832)
- fix cache miss justified balances calculation (#2852)
- 1.57.0 lints (#2850)
- Restrict network limits based on merge fork epoch (#2839)
- Remove duplicate slot_clock method (#2842)
- Support legacy data directories (#2846)
- Kintsugi Diva comments (#2836)
- Cleanup Comments & Fix get_pow_block_hash_at_ttd() (#2835)
- Kintsugi review comments (#2831)
- Bump crate versions (#2829)
- Removed PowBlock struct that never got used (#2813)
- Kintsugi on_merge_block tests (#2811)
- Increase network limits (#2796)
- Ensure difficulty/hash/epoch overrides change the
ChainSpec
(#2798) - Implement engine API v1.0.0-alpha.4 (#2810)
- Skip memory intensive engine test (#2809)
- Fixes after rebasing Kintsugi onto unstable (#2799)
- Remove old uses of testnet
- Fix Uint256 deserialization (#2786)
- 1.1.5 merge spec tests (#2781)
- Fix arbitrary check kintsugi (#2777)
- Move merge-f2f docker to kintsugi (#2774)
- Kintsugi rebase patches (#2769)
- Accept TTD override as decimal (#2676)
- v1.1.1 spec updates (#2684)
- [Merge] Optimistic Sync: Stage 1 (#2686)
- Fix db paths when datadir is relative (#2682)
- [Merge] Optimistic EL verification (#2683)
- [Merge] Block validator duties when EL is not ready (#2672)
- Disable notifier logging from dummy eth1 backend (#2680)
- Update lcli pubkey replace command (#2677)
- Fixed bugs for m3 readiness (#2669)
- Misc changes for merge testnets (#2667)
- Add
BeaconChainHarness
tests for The Merge (#2661) - Disable autotests for beacon_chain (#2658)
- Add merge fork_epoch and fork_version to Config (#2663)
- add automated docker build for merge-f2f branch (#2654)
- [Merge] Add execution API test vectors from Geth (#2651)
- [Merge] Add serde impls for
Transactions
type (#2649) - [Merge] Implement
execution_layer
(#2635) - Finished Gossip Block Validation Conditions (#2640)
- Fork boundary fix (#2646)
- Store execution block hash in fork choice (#2643)
- Update test vectors to v1.1.0 (#2642)
- Handle merge fork in web3signer (#2631)
- Update merge consensus to v1.1.0-beta.5 (#2630)
- Fix clippy lints on merge-f2f (#2626)
- Fix consensus, SSZ, tree hash & run merge EF tests (#2622)
- Initial merge changes
- Add background file logging (#2762)
- Status'd Peer Not Found (#2761)
- Correctly update range status when outdated chains are removed (#2827)
- Allow additional subnet peers (#2823)
- Revert peer DB changes from #2724 (#2828)
- Use published ssz/tree_hash (#2825)
- Ensure consistent log formatting (#2819)
- Inform dialing via the behaviour (#2814)
- Move peer db writes to eth2 libp2p (#2724)
- Sync wrong dbg assertion (#2821)
- Update Lighthouse Dependencies (#2818)
- Fix decoding max length (#2816)
- Investigate and correct RPC Response Timeouts (#2804)
- Fix simulator issues (#2802)
- Add a section on using infura as the checkpoint sync provider (#2797)
- Add fork choice EF tests (#2737)
- Add regression tests for boot_node (#2749)
- Move the peer manager to be a behaviour (#2773)
- De-duplicate attestations in the slasher (#2767)
- Add minimum supported version for checkpoint sync in book (#2779)
- Add cargo vendor test (#2076)
- Peer manager cfg (#2766)
- Do not compute metrics in the network service if the cli flag is not set (#2765)
- Ensure dependent root consistency in head events (#2753)
- Fix linting error on Windows (#2759)
- Check proposer index during block production (#2740)
- Add op pool metrics for attestations (#2758)
- Update prometheus to v0.13.0 (#2757)
- Relax late sync committee penalty (#2752)
- Upgrade to latest libp2p (#2605)
- Fixed Gossip Topics on Fork Boundary (#2619)
- Prevent double import of blocks (#2647)
- Add API version headers and
map_fork_name!
(#2745) - Fix purge-db edge case (#2747)
- Add note about java dependency (#2746)
- Add metrics for individual async tasks (#2735)
- Fix test warnings on Rust 1.56.0 (#2743)
- Add a waker to the RPC handler (#2721)
- Update
next_fork_subscriptions
correctly (#2688) - Update mainnet altair types test (#2738)
- remove double backfill sync state (#2733)
- Resolve Rust 1.56 lints and warnings (#2728)
- Tiny fix: wrong log level (#2720)
- Add flag to disable lock timeouts (#2714)
- Rename eth2_libp2p to lighthouse_network (#2702)
- Export slashing protection per validator (#2674)
- Ignore cargo audit advisory (#2730)
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-v2.1.0-x86_64-apple-darwin.tar.gz | PGP Signature | |
x86_64 | lighthouse-v2.1.0-x86_64-apple-darwin-portable.tar.gz | PGP Signature | |
x86_64 | lighthouse-v2.1.0-x86_64-unknown-linux-gnu.tar.gz | PGP Signature | |
x86_64 | lighthouse-v2.1.0-x86_64-unknown-linux-gnu-portable.tar.gz | PGP Signature | |
aarch64 | lighthouse-v2.1.0-aarch64-unknown-linux-gnu.tar.gz | PGP Signature | |
aarch64 | lighthouse-v2.1.0-aarch64-unknown-linux-gnu-portable.tar.gz | PGP Signature | |
x86_64 | lighthouse-v2.1.0-x86_64-windows.tar.gz | PGP Signature | |
x86_64 | lighthouse-v2.1.0-x86_64-windows-portable.tar.gz | PGP Signature | |
System | Option | - | Resource |
Docker | v2.1.0 | sigp/lighthouse |