Title: EOF_Implementors_Call__70___April_2__2025
Category: Protocol_Calls___happenings

Author: system
Date: 2025-03-20T17:30:35.123Z

EOF Implementors Call #70 | April 2, 2025

April 3, 2025, 15:00 UTC  -  Apr 2, 2025, 14:00 UTC
Duration in minutes : 60
Recurring meeting : true
Call series : EOF Implementors Call
Occurrence rate : bi-weekly

Agenda
Standing Agenda Framework

Testing
Client Updates
Current/Next Testnet
Spec changes/updates

Facilitator email: danno.ferrin@gmail.com
Facilitator telegram: shemnon
Edit to trigger bot
GitHub Issue

Author: shemnon
Date: 2025-04-02T16:29:02.326Z

Agenda


Testing

Cutting final eof-devnet-0 tests
Status of eof-devnet-1 tests
Client request: code coverage report



Client and Compiler Updates

Besu
Erigon
EthereumJS
Evmone
Geth
Nethermind
Reth
Solidity
Vyper



EOF devnet 1

Status of client impleemntations
TXCREATE and initcode transaction
EOF Creator Contract Precompile/Predeploy



EOF devnet 2

PAY opcode - EOF only?
Symbolic Introspection (EXTCODEADDRESS, EXTCODETYPE)
Metadata Section



Post-EOF denvet-2

contract size update?
Anything else in fusaka wishlist?
CALL_GAS_SPLIT ethereum/EIPs#9558

Author: shemnon
Date: 2025-04-02T16:45:21.284Z

Notes


Testing

Finishing up devnet-0 PRs

new testing scenarios
Will cut at or around prague releases?


TXCREATE Tests in progress

A lot are migrated EOFCREATE
7623 has some testing impacts


All other tests are container format changes

ex: 0x04 → 0xff tests underway
Some new scenarios that may need to be considered, such as headers checking 0x05 and 0x06 need to include 0x04 now


TXCREATE lacks contract address bytecode in the testnet yet - Will dive in later
Client request: code coverage report

CI generated coverage would be great


Have some level of eof-devnet-1 tests next week



Client and Compiler Updates


Besu

devnet-1 implemented, except creator contract
PAY opcode has a PR



Erigon

Started fuzzing



EthereumJS


Evmone

eof-devnet-1 changes ready, except creator contract
PAY opcode not started



Geth


Nethermind

Implemented PAY opcode for devnet-2
No devnet-1 work yet, waiting on creator contract status, will proceed without it for now
Will work off of a devnet-1 branch



Reth

No updates, not started working on devnet-1



Solidity


Vyper


EELS

Working on TXCREATE
eips/osaka/eip-7692 - been rebased



Should we differentiate devnet-1 and devnet-2 tests?

Possibly too much effort?



PAY outside of EOF containers?

But it increases scope, for testing and security, and old CALL* paths





EOF devnet 1

Status of client implementations

Implementation is mixed, blocking somewhat on EEST tests.


EOF Creator Contract Precompile/Predeploy

If it’s a precompile we cannot EXTDELEGATECALL it without a rule exception
Precompile also has to do “sub calls” - which is not like any other precompile
Predeploy is better
Do clients have code that code that can update state as part of a transition?

Is the DAO transition code generic enough?


Need to brace for pushback, but adding bytecode to the state is the cleanest approach
Could be a special transaction, on “magic” approved list (may be too complicated)
May be simplest to just have it be a system contract that executes first at the transition.


TXCREATE and initcode transaction

Need to add to the TXFuzzer


Questions about container spec changes?

Goal is the container is frozen to breaking changes after devnet-1
Ipsilon needs to start tooling outreach in earnest then.





EOF devnet 2

PAY opcode

EOF only? TBD, EOF requires it, non-container merely benefits from it
Some clients have PRs ready
Should we allow PAY in a static context?

Value == 0 will have no state change
Recipient is same as sender will have no state change
But logging may still happen when that EIP happens


Banning in a static context is cleanest, transferring value is the intent of PAY, not so much with zero value CALL / EXTCALL
What happens in a fail case?

Not enough balance to send
Fault?  Consume all gas?  Return error code?

Error code, consistent with value-bearing CALL / EXTCALL - return code 1
Would be return code 0 outside a container, argument against non-container PAY access


Currently no return value, needs it.







Post-EOF denvet-2

CALL_GAS_SPLIT ethereum/EIPs#9558

alternative is to add fraction to every EXT*CALL
ben - not ideal, but better than gas introspection
Add a max limit
Add ‘magic’ symbolic values.

Author: shemnon
Date: 2025-04-04T22:47:24.792Z

Youtube Video: https://youtu.be/IdJeNWi4RWo