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

Strict execution payload encoding #2533

Open
corverroos opened this issue Nov 21, 2024 · 2 comments
Open

Strict execution payload encoding #2533

corverroos opened this issue Nov 21, 2024 · 2 comments

Comments

@corverroos
Copy link
Collaborator

corverroos commented Nov 21, 2024

Problem to Solve

Currently, octane encodes the execution payload obtained from engineAPI into the MsgExecutionPayload.ExecutionPayload field as json bytes.

Json is not strict, in the sense that arbitrary data can be added to json struct which will be ignored when unmarshalled. This provides an attack vector for malicious validators to inject arbitrary large data (up to max block size) into consensus chain blocks. Which could lead to range of operational and performance issues.

Proposed Solution

Use a strict serialization format like ssz or protobuf which has the added benefit of decreasing block sizes.

Or use json.Decoder.DisallowUnknownFields. Note this is tricky since geth does custom unmarshalling which bypasses DisallowUnknownFields

Add backwards compatibility tests with supported geth versions

@corverroos
Copy link
Collaborator Author

Milestone: Permissionless validators

@raehat
Copy link
Contributor

raehat commented Nov 26, 2024

is someone working on this issue? If not, is it up for grabs?

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

3 participants