Lighthouse Update #40

Lighthouse nears feature-complete for The Merge.

Overview

Development and testing for "The Merge" has been making outstanding progress over the past few weeks. At Lighthouse, we've just finished a sprint to complete some major features.

Over the last weeks, we have developed, reviewed and tested several significant production-ready features:

  • Optimistic sync implementation (#2837, #2986)
  • Proposer preparation routine (#2936)
  • Updates for the latest consensus-specs (#3040)
  • Authentication for EL/CL communications (#3015)

We've been testing all these new features on our new merge-ready Ansible infrastructure which is running 1,000 validators on merge-devnet-5. Presently it only supports one execution engine, however we will certainly include all execution clients in time. This infrastructure, developed primarily by @macladson, will be an important tool for merge testing and development.

At present, Lighthouse has implemented practically all major features required for the merge. That being said, our implementation is still fresh and needs to prove itself by running for some months on testnets, simulators and fuzzers.

The Kiln testnet is expected to be launched in the coming week and we're excited to get user feedback on all the new merge features. We hope you'll share our excitement at seeing proof-of-stake Ethereum running right in front of your eyes.

We look forward to continuing to refine the specification and our implementation as we edge closer to proof-of-stake Ethereum. Although Lighthouse is making strong progress, upgrading Ethereum is a big task and readers should not expect an imminent merge. It's not time to set a date yet.

What's left for the merge

Those with project management experience know that completing "practically all major features" does not equate to being done. When it comes to an Ethereum implementation, I'm not sure that "done" exists, but I know we can approximate it.

I'll go through each known and significant task that's remaining before we can declare "tools down" on the Bellatrix/Merge update. Some of these tasks must be done before the merge, whilst others are a nice-to-have. You can also follow our progress in real-time via the "bellatrix" tag.

Task 1: Collecting fee recipients

After the merge, validators will be required to provide a "suggested fee recipient" address to their validator clients. This will be the Ethereum address where transaction fees will be deposited, so it will be an important source of profits for validators post-merge.

Lighthouse supports setting the suggested fee recipient in several ways, all documented in our Suggested Fee Recipient documentation.

However, the process is presently rather manual and we hope to improve the UX before it's time to put the Prater network through the merge. You can track progress over at #2994.

Task 2: Retrospective transition block checking

To mitigate some rather unlikely attacks, consensus clients (like Lighthouse) which have performed an optimistic sync must go back and re-check some values in the "transition block", the first block to introduce execution to the beacon chain.

Although it'll likely never come in useful, it's a must-have security feature for the merge. It's a simple but fiddly task that's being tracked in #2983.

Task 3: Update the HTTP API for optimistic sync

Now that Lighthouse may perform an "optimistic sync" where it doesn't immediately validate all execution components of a beacon block, we might serve blocks (or other information) via the API that has not been fully verified.

To help users know when things aren't fully verified, we made a change to the standard beacon APIs over in ethereum/beacon-APIs#190 to add the execution_optimistic flag to relevant responses.

This is another simple-but-fiddly change that is being worked on by @macladson. You can track progress at #3031.

Task 4: Ensuring sync gracefully handles an offline EE

When the execution engine (e.g., Geth, Nethermind) connected to Lighthouse is offline, it's illegitimate for Lighthouse to continue to import blocks during sync.

Whilst sync is working fine presently, we need to spend some time to ensure that Lighthouse will gracefully handle an offline EE without penalizing innocent peers or unnecessarily wasting resources.

This task is being tracked at #3032.

Task 5: Check for terminal block during proposer preparation

After the merge, Lighthouse will provide advance notice to its execution engine when it knows it has a validator that will soon produce a block. This ensures the execution engine has enough time to build a block with a desirable set of transactions (e.g., lots of fees for the proposer).

We have this functionality implemented, however there's an edge case documented in #3058 that should be addressed before the merge. Whilst it's not mission critical, it's about rewards and we take profitability seriously.

Task 6: Support mev-boost

The Flashbots team have produced mev-boost, an upgraded version of their current MEV offering which is merge-compatible.

We've been working closely with Flashbots to help ensure their system is safe and flexible. Whilst mev-boost support is not critical to the merge happening, we hope that we will support Flashbots from day one of proof-of-stake Ethereum.

You can follow @realbigsean's work over in #3062.