FOCIL Breakout #6

FOCIL Breakout · 11 Mar 2025 · 33:19

FOCIL Breakout #6, held on 11 March 2025. FOCIL, or fork-choice enforced inclusion lists under EIP-7805, is a proposal to make it harder for block builders to censor transactions. These breakout calls cover the spec, client work and testing.

Topics

From FOCIL Breakout, hosted by Ethereum Foundation.

Transcript

hi everyone yeah thanks for joining this breakout session um from what I've heard it's it might be a short one just because a lot of people are sick or are traveling so um but which is also nice like we are a smaller group so we can also maybe um have more questions or like focus on some implementation details that we usually don't really spend a lot of time on um from my side um I don't have like huge updates uh we have been at a retreat uh last week which was very nice and quite productive I think um there

was actually a lot of talks around f um it seems like at least across teams I spoke to like people were um generally happy with foro and um and the design and and sort of thought thought like it should be included in future Forks um uh now the whole question revolves around when and how compatible it is with like some of the new stuff that's uh been coming up like delayed execution for example so I think one part will be to focus in the very near future in

like making it compatible with delay exe execution for example or seeing exactly how we can work this out um another more longer term part is maybe how like if we envision a fature where you can have like um light stateless foral nodes uh then how do we make fossil work or like something like fossil work in a stat less work is also something that um has been brought up and I think is quite interesting to to study um so yeah if you have like the meme of like smart watches being includers and producing IL

uh thinking there are very very light nodes in in minutes uh then you need like to actually specify how that could uh work out um so yeah I think cool discussions around this um and how fil and includers more generally like fit in the global picture picture of like where uh we imagine the the future of staking going um yeah uh does anyone have any questions on this it's very Broad and large uh but there will probably be write ups and so some more specific things coming oh maybe another update is that we are like looking for someone to

actively work on on ZK fil prototypes uh both on the using generic snars but also maybe on using a specific linkable ringing schemes to to make it work and to make it a bit more implementable in protocol so yeah I mean that's advanc and it's obviously quite quite early still but um it would be very nice to see whether we make progress and also like whether the ideas we had in mind are actually efficient um especially if you want like very light FAL nodes in the future like yeah you you don't I mean the you don't want to introduce too many

requirements U because of the cryptography involved with some yeah with ZK for Sol or other idas um yeah so for me that was basically it um I know a lot of devs have also been really heads down trying to fix test net bugs and and and work on Petra but uh I wanted to get news from you all uh especially I I I think jiun made progress on Dora which was exciting if you want to talk about it yeah sure so app a modified prism to Ed event upon it

success successfully receive an IL over the pp Network then I made Dora to listen to those IL events to I and display them on the Explorer so you should be able to see them in inclusion list t as long as there is any inclusion list so if you want to try it out by yourself you could use this to this config let me share it in the chat Philip gave it a review and gave me a nice feedback to Mark whether whether an IL transaction is actually included in a block it sounds like a nice feature to have so I'm going to update the

UI and I've also found a buggy case that a slot with nonm ILS have a block with empty transaction I'm using a pair of prisman gas and as far as I know rorg is not implemented in prism yet but with current implementation the block should have all I transactions so I will be investigating this issue and once we have better understanding of conditions about I compliance I think we can leverage the knowledge to use author toour to testify cases nice is is there like a link uh we can just like click on and and see D the

Explorer like in terms of like the actual UI so you can use this pertois confit and wait until you reach um 96 slot but it's it overhead so uh maybe I can share my screenshot of the new UI um just give me a sec yeah that would be that would be great just to so so we have an idea of how it looks like yeah yes so this is the screenshot of it so when there is an inol list you can you should be able to

see in inion list Tab and in that tab you can see each of this inion list so it is place um who submitted that inclusion list in and and the content of basically all the transactions signature I committee rout and I forgot to mention that currently it the implementation doesn't assume any Fork so when there are any Fork uh I think we need to consider I committee route to make sure um we are displaying in col list of the canonical chain but currently we

just assume that there is no Fork just happy case okay cool yeah that's that's really really nice even just to be able to see the first steps in getting like a a UI with like all the inclusion lists and where they come from and their content is is actually super nice um so what's the what so plan next I guess is to investigate the issue and the bug you you just mentioned yes um yes so there should be no case and that the block doesn't any transaction but there is any IL transaction and um as I mentioned I'm

going to update the UI to somehow Mark which transactions are actually included so I hope that make um debugging much easier yeah great and uh just a question so you use the event stream now right or how is Dora getting the data yeah so Dora listening to the uh the ilil event um uh it is specified in the uh beon API spec I can share the link to the pr yeah yeah all good I mean I added it

to the beacon API I'm just wondering um uh yeah if we also need op pool API so you could yeah but I'm not sure if Dora needs that but but basically we also we just imit the event I think if we um if the IL passes gossip validation I'm just wondering if there are some edge cases where we would still um publish the IL for some reason uh I think we should uh because if someone has some duplicate publishing I think this still passes goip validation right because we emit at least the second one um so probably it's fine by the

event stream yeah so since Dora is listening to multiple clients so there must be some duplication of say of the same iil so Dora has its own D duplication mechanism so we don't need to worry about it and um when there is any equivocation stores all equivocated in colal L so that we can see who is the equivocator and what kind of equivocation occurred yeah right that was what I was wondering because I think load Star right now would only emit the second one and after that if we re receive a third

one we would no longer admit this because I think there's a gossip rule that prevents us from doing that so it doesn't pass gosip validation I think oh I see do you think we need to specify it in the uh in the in the spec uh so right now the I think the event stream spec just says uh in mid an event if there's a inclusion list that passes the gossip validation so I guess this is how all the event stream events work or most of them so so might be fine yeah I'm just wondering like do we need more data or is this good enough I think it is good enough for now

but if we found some other use cases then we can think about it later yeah I mean that that sounds good I think that's a good point um maybe wait until we stumble onto some hkcs when we would need to add like a pool way of getting the inclusion list but uh um yeah it sounds like even like if you do have like duplication from many clients as input already that sounds pretty good um cool ccha uh yeah hello everyone uh what I

just noticed that there is a commit uh in the ethereum package uh which is uh use of uh EAP 7780 five support image for Dora so uh I wonder if if this Dora is already implemented uh into etherum package so probably we we may use it uh under the hood or or Jun do you know anything about it or not this is what I'm trying to do right now to run it and but I have uh issues with prison image um yeah so this service stops occasionally

um yes so uh if you just use a default Dora image then you can still use eiip 7805 Fork activation we usually use Electra Fork as the first OC and then flu and then VIP 7805 and for for your prism isue I guess you can just set the the the um what was called the SEC the in the blog interval is like 12 seconds or 9 seconds uh it it would depend on your machine performance but if you're

struggling with sixc configuration then you might want to use nine or 12 seconds uh but what about uh Dora image um it was uh it was already pushed into into ethereum package is it the same door image do you know anything about it so the the one that displays IL yeah yes yes no it is the I I open the PR but it's not merged yet so if you want to use the pr then you you you should use the dura image that I specified in the curtois conf

but if you're not then you will just use the original one without IL display okay got it thanks yeah nice um and yeah I was wondering where we are in terms of testing edge cases like it's we've talked about it for a while and maybe having like a a list of uh I I mean I remember parents had a list of like a potential test we could we could check out and run but uh I was wondering where where that is and if we made progress on this because it

feels like the next natural step yeah I think we still excuse me I think we still need to enumerate all the test cases and um I mean teren has already done some good work on that as you mentioned um but yeah I think we could um add more and make it more well specified um I can mention um I was also uh at a retreat for the for the past week um so I didn't

have a ton of time but uh I was able to at least ver IFI that a sensoring builder wasn't able to land uh a block on chain it wasn't uh at least the Dora UI was telling me that it wasn't reorg it was just the slot would just be missed um and I did implement this in kind of the most naive way where the censoring Builder would just censor everything so just tried to propose an empty block um and if if there was a nonempty inclusion list then that slot would be uh missed um so yeah

that's for me no that's great do you have a what can we check check that out or like the results of like do do you actually just open up here and like added this in and checked what it gave onora or like uh yeah not even uh it's kind of I have the stock R fossil image and then I would make a local change to essentially just uh um yeah always construct an empty block uh I can push that out to a different image or different uh Branch sorry and uh yeah if people want to want to use it and then they they

can nice okay yeah I mean I think it's worthless like maybe maybe that's the way to go I can also like give it a try but yes as you said enumerate like tests in a more maybe nice way uh and also like get consensus around tests that actually need to be run and then we could actually sort of like link what people have tried uh like under like some of the the tests we mentioned so we can keep track of like what people tried and what fails what is resolved on on on different clients and different implementations so yeah I feel like it might be useful

because I feel like a lot of people are just intuitively trying things out and like seeing whether that works or not but um um yeah just pulling these resources together I guess will be quite nice right yeah I mean eventually uh we would like the uh something like the consensus back test factors or uh the eels test or something like more formal or more specified yeah you think we should move to that right away instead of like trying to do it ourselves first or like how how much value is there in like

actually sort of like trying to do it on our end compared to moving to the more formal way of doing things first um not yeah not entirely sure uh need to see what would be involved in creating those test vectors um I think uh to the extent that we can uh do yeah quick and dirty testing more manually I think that is okay and it's a

good start but um uh yeah once we're feel like we've picked the low hanging fruit so to speak then I think uh makes sense to work on uh actual test vectors and I guess I should probably yeah look at what pus and Terren and others have done for EIP um or the EPB epbs uh EIP I feel like uh we could maybe um yeah take some inspiration from from that and and see how they were testing

that because I think that's even more complicated set of things to test and um hopefully um hopefully yeah that can kind of inform us as how to how to construct these test factors nice yeah okay that makes sense yeah I mean I guess we could also well maybe not right now but a bit later like reach out to the what is it steel team the team that actually like in sh of testing um they can like help us out or figure out the best way to move forward yeah that that sounds good

okay nice yeah I can I can do this uh great um any other updates uh from from other client teams um I have a uh PR open to the EIP um which just adds some uh some information about the execution layer changes and and fixes some mistakes um so I've got a review from Jun uh but I'll just uh share in the chat and if anyone has a chance

could you please review it okay yeah great is that one also include the ilil construction suggestion um so I separated out into two PRS so one of them is just the sort of fixes and adding detail and the other one is the I building one gotcha yeah I can also definitely look at look at it uh very soon and so yeah I wasn't here last week but I guess consensus was I

mean I think it's a good idea to separate those out and we can focus on on the one you just sent on the chat um any any other things on your end mark like on the implementation side or where are you ad um so i' I've made some progress with uh updating to use the new endpoints um and supporting the various changes um but it's not fully working yet are there any blocker like or can any new one help is it on your end or do you need some some someone to to unlock some

some of the things for you um no I think everything's fine like I've kind of I think I hopefully with that PR I made it's kind of ironed out some bits of the spec that weren't completely clear um but I've just been mostly focused on some other um like Petra stuff and and various things so had too much time but hopefully soon I'll be ready okay awesome yeah no no no it wasn't yeah wasn't too rush it was just to understand if we could do anything uh but great thanks a lot uh any other updates um I got a quick question uh I remember uh prism and loar were having

State rout mismatch issues when they tried interop with each other um with ligh I tried interrupting both clients and I'm facing similar issues um is there any progress on that front or or prism and loadstar are able to interact with each other no we are still having that issue and actually I'm looking at into it at the moment uh but since that you also having maybe not the same issue but still there's a problem between interrupt with either of prism and low start could you share what your issue maybe we can yeah yeah uh I think it's a state rout mismatch as

well like once we hit the 7805 for keok um Lighthouse and the other either low star or prism end up uh like unsubscribing from each other like they're not subscribed to the same topics so I'm assuming that's a state rot mismatch so I'm not sure uh if NC was able to fix it but but I think he did not fix it with prism but I think one issue we might have I'm I haven't investigated but if we schedule two forks one Epoch after each other then there might be some issues how we subscribe to new topics as well uh we found this in the pise testing

so so I think for because we still don't have Electra Genesis right I mean the easiest testing right now would be Genesis and then just directly EIP 7 805 at like Epoch one or Epoch 2 or whatever and I think we even have like fulu in between now which uh yeah don't think this is good for testing I think there's a um there's an image somewhere that does have a lecture at Genesis I can um I could share it I think it was in the epbs channel that someone shared it with pus because he uh brib the panda guys with with with beer

so I think that does exist somewhere it hasn't been merged yet but we could maybe try using that yeah so yeah probably expect the buck in loar as well there I can't guarantee this works okay so what what will be the the easiest way forward you say eabs had some something you could use like yeah they have like an ethereum Genesis generator image that does electr Genesis if we wanted to try that I'm not sure if it'll help but it does exist I can share it um in the fossil channel in a bit when I find it okay and I think the second part would be that we don't base fossil on

top of fulu right now I think that would be good because the problem is um if we do it like this and we merge our pust changes which we which we plan to do in like the next month after Petra goes live then we will test fossil on top of pias which not sure that's wanted right now yeah I agree I mean at least until like P death is like sort of more finalized or like in the L later stages maybe um okay interesting also you save a whole Epoch worth of waiting when you

run kosis locally which I guess is nice yeah um okay so you think it would be better to test on top of Hulu then what do other people think about this no no I think it's better to test on top of Electra oh Electra sorry yeah yeah I agree i' rather test on top of a lecture as well I mean really the only reason this is no issue right now is because fu is a no op for loadstar right now because we haven't merged any P changes into the main branch right now okay I mean yeah does that make a

big difference or like what you what do you think about it maybe Jun Mark like other ones other people that are implementing well I think that will make our test life much much easier okay nice uh that sounds like a no-brainer then um cool so maybe yeah let let's say we do that from now now on um maybe once youve you guys have done it uh on your respective code bases uh if you can post it in the

public channel so everyone sort of can follow along what where you guys are at and see if that actually resolves some of the the issues we are having or if that comes from somewhere else uh great any other issues or updates or questions yeah gotcha yeah uh I just I built a draft uh dashboard but uh couldn't check it yet because they couldn't run the curtois but right now it seems it's running so I will

probably try with my local image and uh we'll share later uh the dashboard is for for the CL uh right now just initial set of metrics but probably could be interesting to look at some benchmarks we'll share it in the chat this I remember you had that's awesome yeah you you had a list of like metrics right you submitted to everyone and wanted to get feed back on yeah uh I will open a draft PR for for the list of the metrics um uh currently I just went through the prism code and tried to to build some metrics

based on this code but I think um it needs a view of course uh because probably we need to some of them may be not interesting and some of them maybe I should add later yeah I will share it nice yeah I mean even maybe this is just thinking out loud but like sometimes it's even easier or better to yeah get the list of metric but also like if you actually see the dashboard with the metrix display some sometime it's like very obvious whether that should be part of the metrics we care about or not so yeah I mean as soon as

you have something to share very happy to to take a look that's that's going to be really useful and maybe we can also find bugs uh using just like dashboard and visualizations around like how ILS are propagated TW nice yeah thank you right okay so sounds good um I'll try to at least make a bit of progress on where we are at testing wise uh maybe also context like the people in Char um and then yeah top uh building on top of

Electra nothing uh from now and yeah I mean if the state root issues or like like if inup still is like difficult between C clients like yeah don't hesitate to like really sort of like share it and and and post it in in the public channel so that I mean it does feel like it it's a problem that people need to solve all together so probably a good use case for for really trying to collaborate on on that issue uh and and find where it's at and yeah also if like it does have to use

some of the if P UPS uh I don't know is it a package like your Solutions I guess uh we could try that but uh yeah let me know and and happy to help uh either way are there is there anything else all right uh if not we can probably end this one early and um yeah see you thanks all for coming uh I'll try to prepare the next meeting a bit more and and uh hopefully

we have a bit more updates too but uh it's it's super nice that uh to see everyone making progress and and things moving forward and to I mean yeah it's also very nice for me to see even this little Dora Explorer screenshot with a with all the inclusion list and what it might look look like in the future I think that's very exciting so yeah thanks everyone and and and see you see you guys soon