Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

verkle trees: add 2 fields to ExecutionData #3639

Closed
gballet opened this issue Oct 13, 2022 · 4 comments
Closed

verkle trees: add 2 fields to ExecutionData #3639

gballet opened this issue Oct 13, 2022 · 4 comments
Assignees

Comments

@gballet
Copy link
Contributor

gballet commented Oct 13, 2022

Description

With the verge, proofs and witness of the pre-state of an (EL) block execution are included in the blocks. As discussed with Mac and Paul, I am creating this tracking issue to create a branch with the required fields to be added to the ExecutionData.

Expected Behaviour

The ExecutionData needs to have two more, optional fields:

  • VerkleProof, a byte array of variable length
  • VerkleKeyVals, an array of (key, value) pairs, in which the key is a 32-byte vector, and value is a byte vector of length either 0 (missing value) or 32.

If present, these two fields should be propagated over the network with the rest of the ExecutionData so that other clients can inject these fields in their verkle-enabled EL.

It is currently sufficient if these fields are expected to be present since genesis, as this is for a testnet (i.e. no fork implementation is currently necessary).

@macladson macladson self-assigned this Oct 17, 2022
@macladson
Copy link
Member

Hi Guillaume, thanks for writing this up!

I have a basic implementation of this here: https://github.com/macladson/lighthouse/tree/verkle-trees and from my local testing it is backwards compatible with standard Geth (just passing around empty Verkle fields).

I have a few clarifying questions:

  • By ExecutionData I assume you mean ExecutionPayload?
  • What is the maximum length of VerkleProof?
  • What is the maximum length of VerkleKeyVals?

Also, is there a PoS + Verkle enabled version of Geth that I can use for testing in my own local testnets? Something I can use to make sure that fully populated VerkleProof and VerkleKeyVals fields are being passed around correctly. If you could point me in the right direction that would be good.

Thanks!

@gballet
Copy link
Contributor Author

gballet commented Oct 28, 2022

Hi Guillaume, thanks for writing this up!

And thank you for working on it!

I have a basic implementation of this here: https://github.com/macladson/lighthouse/tree/verkle-trees and from my local testing it is backwards compatible with standard Geth (just passing around empty Verkle fields).

🎉

I have a few clarifying questions:

* By `ExecutionData` I assume you mean `ExecutionPayload`?

I do!

* What is the maximum length of `VerkleProof`?

* What is the maximum length of `VerkleKeyVals`?

Both are arbitraty-length, but if you want a maximum number that is safe, set them to 75K each for now.

Also, is there a PoS + Verkle enabled version of Geth that I can use for testing in my own local testnets? Something I can use to make sure that fully populated VerkleProof and VerkleKeyVals fields are being passed around correctly. If you could point me in the right direction that would be good.

There isn't, I naively thought it'd be easier for you to make a cl without an el than the other way around 😓 I'll ping you when I got it to work.

@gballet
Copy link
Contributor Author

gballet commented Nov 6, 2022

@macladson I have created a test branch here gballet/go-ethereum#136 with the instructions on how to test it with your branch. Let me know if you encounter any issue.

@macladson
Copy link
Member

Will close this for now. Refer to #4042

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants