# EOF - Devconnect Distributed R&D ## Pre-reads * [Mega-EOF](https://notes.ethereum.org/@ipsilon/mega-eof-specification) - every possible feature in on version of EOF * Big EOF contents (What was already iplemented for Shanghai) * [EIP-3540](https://eips.ethereum.org/EIPS/eip-3540): EOF - EVM Object Format v1 [history](https://github.com/ethereum/EIPs/commits/master/EIPS/eip-3540.md) * [EIP-3670](https://eips.ethereum.org/EIPS/eip-): EOF - Code Validation [history](https://github.com/ethereum/EIPs/commits/master/EIPS/eip-3670.md) * [EIP-4200](https://eips.ethereum.org/EIPS/eip-4200): EOF - Static relative jumps [history](https://github.com/ethereum/EIPs/commits/master/EIPS/eip-4200.md) * [EIP-4750](https://eips.ethereum.org/EIPS/eip-4750): EOF - Functions [history](https://github.com/ethereum/EIPs/commits/master/EIPS/eip-4750.md) * [EIP-5450](https://eips.ethereum.org/EIPS/eip-5450): EOF - Stack Validation [history](https://github.com/ethereum/EIPs/commits/master/EIPS/eip-5450.md) * Mega EOF Additions * [EIP-6206](https://eips.ethereum.org/EIPS/eip-6206): EOF - JUMPF instruction [history](https://github.com/ethereum/EIPs/commits/master/EIPS/eip-6202.md) * [EIP-7480](https://eips.ethereum.org/EIPS/eip-7480): EOF - Data section access instructions [history](https://github.com/ethereum/EIPs/commits/master/EIPS/eip-7480.md) * TBA: EOF - Contract Creation * [EIP-663](https://eips.ethereum.org/EIPS/eip-663): Unlimited SWAP and DUP instructions [history](https://github.com/ethereum/EIPs/commits/master/EIPS/eip-663.md) * TBA: EOF - Restrict code and gas introspection * EIP-7069: Revamped CALL instructions (does not require EOF) [history](https://github.com/ethereum/EIPs/commits/master/EIPS/eip-7069.md) * Also ban GAS, CALL, STATICCALL, DELEGATECALL in EOF * Select changes to stack validation to accomodate vyper deduplicaiton/outlining ## Open questions * [Remaining spec questions](https://notes.ethereum.org/bIn36obKScyQWA8vrDpDYQ) * Number of forks to distribute against * How to split EIPs * Wether to split EOF * How to minimize client code duplication burden * Deploy on L2 first? * Would L2 clients (Arbitrum, OP, zk chains) be willing to take a larger "diff" from mainnet? * Ship in mainline clients but activate on L2 first? * Minumum changes to "Big EOF" to make shippable * "Big EOF" was almost ready to ship in shanghai. One issue was the ability of Solidity to add extra data to EOF containers at deploy time. Vyper also requested change to prevent code size regressions for their compiler. What else is in the minimal "must fix" set. * EVM MAX * Bundle or not? * Risk surface for deployment * EF Security expressed concerns in October about EOF. We need elaboration on what those concerns are * Impact on Testing/Reference Tests * Engineering overlap with Verkle Tires * One concern about EOF is that it will slow down Verkle. But how much overlap between engineers between the two projects is there? ## Meetings Thursday 10am to noon in B3/29 * Scoping * Lead with L2? * General Questions ## Notes * We may want to change how aux data gets hashed, some way we don't re-write the container * Should we distinguish initcode EOF containers from Runtime containers via some flag in the header? Or do we know from use if it's initcode or runitme code always? * **After EOF** consider a new "script" mode like runtime and create. Executes bytecode but doesn't leave contract/storage litter. Would ban SSTORE in the bytecode. * DATACOPY zero padding... no consensus, all options recognized as valid. L2 First? * What if EOF changes between L2 and mainet? [i.e. this changes what Ethereum Equivelance manes] Three options to enable L2 first: 1. Merge EOF into geth without L1 activation * Geth can then particiapte in testnets/shadow nets 2. We could get EVMC in geth so L2s can plugin in EOF. [Besu has EOF integrated, Linea is taken care of by that] * Upgrade EVMC to support needed tracing additions for zkEVMs * Is go/C bridging slower? * Does this increase risk? 2. Standard Geth fork that is just Geth + EOF * Ipsilon is comfortable with Geth code and can handle it Verkle Chunking TBD