Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Written by Matt Nelson with support & input from Maintainers at Consensys and Hedera. 

Besu reaching Quorum... 

Cancun is just hitting public testnets and Core Devs are setting their sights on Prague, the next EL update to Ethereum. Scoping is underway from the Besu Maintainers and we wanted to share some thoughts. Besu's team is a little different than many client teams in that we are part of the Hyperledger Foundation. We have a set of maintainers that represent themselves and the project, not necessarily their employers. To that end, we wanted to share our team's take on the Prague fork and what we would like to see. 

How the sausage is made

When the decentralized Besu team discusses scope for forks, we like to take a champion-based approach. Maintainers that want to propose or progress scope/EIPs must be the evangelizer, both to the other team members and to the Core Dev community. Below, the champions will break down what they want to see in the next fo rk and why. Let's get the items we have a complete consensus on out of the way first.

Verkle or Velocity...? 

The Besu team is in favor of shipping a Prague fork that excludes Verkle in its current form. This is not to delay Verkle, but to give it more time to bake and for the Besu client to participate in the Kaustinian testnet. We know delaying the transition will cause headaches but view current UX improvements and a more stable transition as paramount. We do want to keep up velocity of shipping improvements on Mainnet and see delaying the next fork to a soft 2025 as unacceptable. 

We are the Champions (or, Scope)

In keeping up with velocity, our maintainers propose the following scope...

EOF (Danno) 

pros, cons, next steps

EOAs & Next Steps (Gary, Danno (question) , Justin) 

pros, cons, next steps

  • EIP-7377 - EOA Upgrade / Migration Transactions
  • EIP-3074 - AUTH and AUTHCALL
  • EIP-5003 - AUTHUSURP
  • EIP-3607 - Reject transactions from senders with deployed code

Gotta figure this one out ^^^ 

Deposit Flow Updates (Fabio) 

pros, cons, next steps

EIP-6110 

Have to discus EIP 7002 and decide vs 6110

Inclusion Lists (Justim) 

pros, cons, next steps

Do we want to move this to the CREEP section? Or are we ready to champoion? 

SETCODE (Daniel) 

pros, cons, next steps

Do we have consensus on this one? 

EIP-4444 - History Expiry (Matt)

pros, cons, next steps

No-Brainers

EIP-2537 - BLS Precompile

EIP-7212 - Precompile for Secp256R1

Anti-Goals (or, creep)

Verkle (Karim)

the Besu Maintainers.

To streamline Prague planning from the Besu client team, our maintainers propose the following scope...

Prague Meta-Thread

In-Favor

EOF

Besu advocates for adding EOF to the Prague hard fork. 

The EVM Object Format is a collection of smaller changes aiming at paying down a significant amount of technical debt that the EVM has accrued over nearly a decade, and prepare the EVM so that "calcification" can occur on a robust foundation. EOF does not fundamentally change the execution of the EVM, instead it introduces a container format and migrates key instructions to new formats that resolve long standing problems such as eliminating dynamic jumps and the associated JUMPDEST analysis. Generally speaking there are four major themes addressed

  1. Making EVM code O(n) to JIT and AOT compile
  2. Eliminating Code Introspection 
  3. Eliminating Gas Introspection 
  4. Make “Quality of Life” improvements easier

The last bullet point enables features in future forks and L2 usages of the evm. L2s can more safely perform wholesale changes to their gas schedule. Experimental and non-conforming EVM features (such as new opcodes) can be signaled with extra header fields. And because JUMPDEST analysis has been replace with deploy time code validation the contract size limit could be safely increased or even uncapped. Team Ipsolon has launched https://evmobjectformat.org/ for a more comprehensive list of features. 

Besu's implementation of EOF is nearly complete, awaiting the finalization of a few final details.

EOAs, AA, & Next Steps

Besu supports adoption of EIP-3074

This EIP was considered and rejected for the London hard fork, almost three years ago, citing security issues. There was a call for a security audit at the time, which has not been done. The EIP would benefit from such an assessment. A major recent update to the nonce handling rules allows for a user to revoke authorizations with a single action. This recent specification change has removed the major safety concerns team members have had.

The Besu team views the need for 3074 as an opportunity cost. If we do not ship something in Prague, we run the risk of not supporting AA for the next 2-3 years. While this necessarily creates complexity in censorship resistance workstreams, the learnings from implementing AA sooner will allow us to have a better, more informed design where AA transaction validation logic is baked-in. This is a feature, not a bug. Keeping UX on Ethereum stunted for 2-3 years in order to solve some niche MEV challenges via ePBS seems like a poor trade-off. 


Supported Grab-Bag EIPs 

Neutral/No Opinion

  • EIP-7664: Access-Key opcode
    • Could be significant EVM work. Do we have an alternative? 
    • Not sure of necessity 
    • Might provide better security UX 
  • EIP-7557: Block-level Warming

    • Need to better understand the code complexity 
    • Might add complexity to the state DB that may add more data, memory, etc. Need to understand the impact to our code. 
  • EIP-7377: Migration Transaction
    • Good migration path for AA, but not instead of an encompassing AA solution like 3074 


Opposed

SSZ

Aesthetics and consistency with the CL is not necessarily a reason to engage on a large bucket of work on the EL. 

Opposed Grab Bag EIPs 

  • EIP-6913: SETCODE instruction
    • Code immutability is questionable. 
  • EIP-5806 Delegate Transaction
  • Weakly Opposed - EIP-5920: PAY opcode 1
    • Might break some assumptions of existing smart contracts 
    • Ether can get stuck in a smart contract that cannot send it 
    • Users may create issues with stuck Ether and 

...