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

EOF Implementers Call #27 #891

Closed
lightclient opened this issue Oct 18, 2023 · 2 comments
Closed

EOF Implementers Call #27 #891

lightclient opened this issue Oct 18, 2023 · 2 comments

Comments

@lightclient
Copy link
Member

Meeting Info

Agenda

  • Client updates
  • Compiler updates
  • Spec updates
  • Testing updates
@shemnon
Copy link
Contributor

shemnon commented Nov 23, 2023

Can we get an issue for #28? One topic to add for spec updates

  • changes to container format to make it verkle-chunked friendly
    • Adding start of code and start of data enteries in the header
    • moving type data to the start of a code section
    • changing CALLF's immediate to be absolute container offset (or code offset) instead of function number

We may also want to consider another renumbering to account for EXCHANGE, and possibly leave room for 1,2,and 3 byte exchanges, and 4 byte CALLF.

@shemnon
Copy link
Contributor

shemnon commented Nov 28, 2023

Also I think we should consider variable length encoding for immediates. (a) it could create smaller contracts for smaller values, such as jumps within 64 bytes. (b) it will keep EOF from hitting a 64KiB limit.

For (a) I compiled Uniswaps Universal Router based off of solidity's shanghai EOF fork (the one without any optimizations). I estimate 1k of bytes could be eliminated based on 5d00[1234] and b000[1234] patterns showing up. that's ~4%.

One encoding scheme is protobuf's zigzag. Another one would be to use the continuation bit pattern like UTF-8 and just use the highest bit for sign when it's signed. The zigzag has the advantage of pre-fuzzed implementations.

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