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 #63 #1205

Closed
poojaranjan opened this issue Dec 2, 2024 · 7 comments
Closed

EOF Implementers Call #63 #1205

poojaranjan opened this issue Dec 2, 2024 · 7 comments

Comments

@poojaranjan
Copy link
Contributor

poojaranjan commented Dec 2, 2024

Meeting Info

Dec 11, 2024 , 15:00 UTC

Duration: 60 minutes

Zoom: https://us02web.zoom.us/j/88940506383?pwd=aTdsbHVyMTNDSUFHYmhTWlI2ZEVldz09

📅 Subscribe to the Ethereum Protocol Call calendar for calendar invites

Resources

Agenda

  • Testing updates
  • Client updates
  • Compiler updates
  • Tracing:
    • Updated EIP-7756
      • PC=0 is always the first byte of the container
      • Number and HexNumber are interchangable
      • OpCode now defaults to hex
      • gas members now default to number
  • Fuzzing:
    • branch with WIP fuzzing tool shemnon/eof-fuzz
    • Corpus is the single test set of reference tests
    • 4 mutators currently (more to come)
      • Add PUSH0/POP
      • Replace PUSH value with in-test address
      • Replace PUSH value with "magic" number (mostly 2^x and friends)
      • Replace PUSH with random bytes (biased to shorter strings)
    • Found 3 bugs so far
      • Besu 32/64 bug in EOFCREATE
      • Geth DATACOPY overflow
      • Nethermind EXT*CALL gas costing issues
    • plan is to write more fuzzers to bring it on par with FuzzyVM, but for EOF.
  • Feedback and next steps for EIP-7834: Separate Metadata Section for EOF Add EIP: Separate Metadata Section for EOF EIPs#9100

Please add other agenda items or links to discuss.

Next call on Jan 08, 2025

@frangio
Copy link

frangio commented Dec 6, 2024

Discussion topic postponed from last call:

  • Generic factories and deterministic deployment (probably relevant to counterfactual deployments)

@shemnon
Copy link
Contributor

shemnon commented Dec 10, 2024

I'd like to talk about tracing and fuzzing.

Tracing:

  • Updated EIP-7756
    • PC=0 is always the first byte of the container
    • Number and HexNumber are interchangable
    • OpCode now defaults to hex
    • gas members now default to number

reth and evmone will need to adjust to PC=0, geth, besu, and nethermind have already adjusted

Fuzzing:

  • branch with WIP fuzzing tool shemnon/eof-fuzz
  • Corpus is the single test set of reference tests
  • 4 mutators currently (more to come)
    • Add PUSH0/POP
    • Replace PUSH value with in-test address
    • Replace PUSH value with "magic" number (mostly 2^x and friends)
    • Replace PUSH with random bytes (biased to shorter strings)
  • Found 3 bugs so far
    • Besu 32/64 bug in EOFCREATE
    • Geth DATACOPY overflow
    • Nethermind EXT*CALL gas costing issues
  • plan is to write more fuzzers to bring it on par with FuzzyVM, but for EOF.

@kuzdogan
Copy link
Member

Feedback and next steps for EIP-7834: Separate Metadata Section for EOF

ethereum/EIPs#9100

@charles-cooper
Copy link

feedback on ethereum/EIPs#9074 -- it should probably be accompanied by instruction + container changes

@poojaranjan
Copy link
Contributor Author

Recording: https://youtu.be/2Z5YPfOnb74

@poojaranjan
Copy link
Contributor Author

Closing in favor of #1217

@shemnon
Copy link
Contributor

shemnon commented Dec 11, 2024

Agenda

  • Clients and Compilers
  • Spec Updates
    • EIP-7834 - EOF Metadata section
    • Generic factories and deterministic deployment (probably relevant to counterfactual deployments)
    • EOFCREATE Hashing
    • code size EIP
    • EIP-7765 tracing
  • Testing
    • EOF Execution Fuzzing
  • Other
    • Cancel 25 Dec meeting, next meeting 8 Jan

Meeting Notes

  • Clients and Compilers

    • Solidity
      • some functionality merged,
      • updating solidity tests (proves correct compilation)
      • working on stability next
    • Frangio is working on a new EVM assembler for EOF and Legacy
      • Do any assemblers output EOF as well? Other than YUL?
      • EXCHANGE opcode textual representation, how? [n, m-n] or [n, m]?
      • (mixed prefs, closer to bytecode/Internal encoding vs user meaning)
      • proposal will be made for review in 2 weeks
  • Spec Changes

    • Metadata
      • Possibly change data to 0xff (and reserve 0x04)
      • Not all containers use metadata in runtime containers
        • initcode only,
        • tx data only
        • Event during initcode
      • Keeping initcode separate from runtime code makes sourcify's job harder
        • metadata in tx only requires archive data of all deployment transactions
      • There is an appeal to unreadable code in runtime, but perhaps we need different conventions for compiler metadata
      • Mixing metadata with code produces runtime issues with indexes into the data and makes metadata discovery difficult.
    • Generic Contracts and Deterministic / Counterfactual Deployments
    • Unsalted deployed - nonce derived address
      • EOFCREATE and TXCREATE require a salt, no nonce.
      • Could the factory maintain this?
      • Possibly remove the "witness" from the address. (EOFCREATE: Don't hash the init-container ipsilon/eof#162)
        • Witnesses include: initcode, code address (sender or caller), initcode container index
        • Removing the witness makes counterfactual addresses more difficult.
    • Time boxed at 15 minutes
  • Code Size EIP

    • Needs to be accompanied by EOF changes to support > 64KiB containers / code / etc.
  • Testing

    • Devnet 5 is the focus, no EOF work due to priority
    • Fuzzing and Tracing overview

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

5 participants