go-ethereum icon indicating copy to clipboard operation
go-ethereum copied to clipboard

Add initial FOCIL implementation

Open jihoonsong opened this issue 11 months ago • 4 comments

This PR implements initial FOCIL specifications. For more information, please refer to EIP-7805 and this PR.

jihoonsong avatar Dec 14 '24 14:12 jihoonsong

I've addressed comments. Thank you very much for spotting out the issue and suggesting solutions! @ensi321

jihoonsong avatar Feb 07 '25 14:02 jihoonsong

needs a rebase.

jwasinger avatar May 19 '25 05:05 jwasinger

@jwasinger Applied your suggestion and rebased, thanks!

jihoonsong avatar May 19 '25 05:05 jihoonsong

At the call with Geth team, there was feedback that eth/catalyst/api.go is not the right place to put validateInclusionListConstraints.

I haven't given much thought about where is the best location from the Geth codebase perspective, but from the spec perspective, the IL constraints should be checked after executing all transactions and before processing withdrawal requests. This is to prevent such situations that some withdrawal address become availble to cover some IL transaction that they couldn't. That missing IL transaction can reorg the block, which it shouldn't.

In current implementation, it would be between L106-L107 of core/state_processor.go.

As this would change the core part of Geth, I would wait until I can get more feedback from the Geth team before proceeding.

jihoonsong avatar May 29 '25 10:05 jihoonsong

This PR has been updated to validate inclusion list inside state_processor.go. Following @fjl's feedback, it puts IL transactions inside block similar to ExecutionWitness. Additionally, now it validates IL transactions before passing using it.

jihoonsong avatar Jul 29 '25 11:07 jihoonsong

This PR now has been updated to reflect the latest execution apis spec as of 2025-08-15. A Kurtosis config can access to the docker image via el_jmage: jihoonsg/geth-focil:1a1adcd

jihoonsong avatar Aug 15 '25 12:08 jihoonsong