ePBS Breakout #8

ePBS Breakout · 30 Aug 2024 · 42:23

ePBS Breakout #8, held on 30 August 2024. Enshrined proposer-builder separation, or ePBS, would build the split between block proposers and builders into the protocol itself. These breakout calls cover the design, specs and client progress.

Topics

From ePBS Breakout, hosted by Ethereum Foundation.

Transcript

okay let's get started I don't think we'll get more people but yeah so welcome to breakout room number eight here are the agendas talk about EIP implementation free da with block aution I supposed we chat about that two weeks ago which I wasn't there but we can brief the touch based on that and Julian has two um documents to share and discuss and I also have one about BL proposal for etbs so um in terms of EIP I don't think there's much to touch based there the EIP is out anyone's welcome to review the consensus spec is out it's worth mentioning that Eon has been um leaving some reviews on the EIP

itself and iton is also um adding like client um testing and like client documentation to the EIP so if you see the Discord Channel you kind has to update on that so that is if you're interested in more like type of stuff but yeah so that's the EIP in terms of the implementation status um I can speak for prison team so we're working on implementation I'm currently working on the RPC endpoints that is for the proposer to submit blocks to sign the header and to sign the extion payload um pus is working on more like Core State transition fun and for choice that is

yeah so that's on the pris P side I think like we could have a I can't speak on personis team that we think we could have a local death net by um deathcon and by then if any clients want to join us and join us we can do a mul client that net but yeah besides prism I wonder if um other consensus Larry team wants to share their update um yeah sure um te is progressing um I leave I I say what what I've been working on now and then leave uh some updates from uh from stepan which is working on those things so me is

currently uh what I did is updating the valid I'm working on a valid client side currently I'm done with the um rescheduling of these events that uh changes because there's a lot Anatomy changes so we've done that and I'm working on implementing the new duties for the PTC um so so far so good and yeah I leave I leave Stefan updates from his side uh yeah okay so from my side uh the last week I worked on the Bon chain State transition changes that is done uh and um now I'm working on the P2P

specifically the uh Gossip topics uh all the validations the three new pools uh and the rpcn points as well uh and what's left I guess after that is po Choice which is the most complicated part I guess uh and yeah of course the validator side and proposing and yeah that's awesome yeah if you have any feedback on the P2P gossip rules because I I think that for us it's it's slightly weak in a way that we didn't really think it thoroughly before putting out

there there are definitely things that could be reordered such that it's better feel free to like raise that yeah I definitely curious for feedback for the P2P rules yeah yeah I have a couple of notes which I will a share on on on Discord yeah thank you so much I can go for lar and uh yeah so I've been working on straight transition and uh block uh processing architecture as such uh but uh yeah we'll share maybe a better update in the next breakout call thank

you any other clients want to share an update sure so so Nimbus has been it's a just going through the EPF program um and there's been progress on that we're still kind of at the stage of I'll be honest it kind of data types and Beacon chain helpers but progress nice awesome cool yeah guess that's all the client teams we have and um the next items is I see just put free da with block auction so like for those they are not like following closely I guess the

recap which this was also bought up two weeks ago is that that with a block auction this doesn't happen in slog auction this only happens in Block auction so in Block auction there's this I guess I can call this a phenomenon in a way that um a proposer or a builder could uh commit a block cash at the consensus space but at at the execution face the execution block that is revealed could be invalided right and that invalid block could for example contain F blobs could contain two megabytes of code data it could be like

for example a very expensive block um by the by the by the by the code data usage but that block is invalided but that block is also voted on time by the PTC Committee Member right and then so what can an attacker do with this block if I ask right um the attacker could for example build like a Rob like cheating Rob up that uses data availability as such but to to to some people this is not true da right because honest node will not serve this blog it's only you have to modify the client to save inv valid the block and then you have to

serve the block basically as a Dishonored client so in a way we like some people like agree that we cannot argue this as 3da because this doesn't really provide likeness to the r up that try to Che so now the open question is that um is this enough threat to um kill a block auction for example I mean there are many many reasons why slot auction is better than block auction which like we have consider theying doing smart aution for a while if you look at um this notion dot by re P out right there is the essentially uh let's see

this where is it yeah there's this page that compare slot auction versus like block auction and then slot aution is just like kind of better in o Avenue and then so I do think that we will like move to slot aution at some point but then the question is when um it is pretty trivial to change um to change the SL aution instead of committing to a Blog hatch you just commit to the Builder so when we want to change it I don't suspect it's that uh it's uh it is that much work for both client side and then the spec side but the question is that when do we put the trigger and yeah does anyone have any

like inputs when I add on to this so the 3D the real 3da will be only just 32 bytes of the block HH correct yes and then you rely a node that serve you invalidate data such that you can prove against it assuming that this is not the case the only true um 3da is 32 bytes per block right which is nothing a little useless people will say exactly um generally I would say that if slot auction is any way better and spec change is not that big why not

doing soon instead of that's my so what are the C argument for not doing that uh is there any more complex outside the protocol more complexity outside there yeah probably I have to go through no yeah so um definitely curious to hear if back from Julia and Thomas but like the biggest counter argument that I have understood so far is that he makes local block building at a disadvantage and po didn't really like that at all so for example today when you request a slot or a block at second zero you get this local value right and you compare this

local value with the Builder's value and then um you can essentially add some boost to it you have a sensorship oral flag but then if today there is a sixc l lag between your local value and the actual value that uh for example G Mano um it may be harder to valuate like that from your local perspective so that's probably the only counter argument that I have heard besides for Choice which like J can space on that later yeah yeah now I'm connecting back to the discussion that that previous breakout session has been widely discussing that yeah I I

understand yeah I mean my uh I sort of agree with andrio that if for example U the complexity does not increase multia then it makes sense to have more flexibility and GL go with slot options and even if uh for example it might put local block building at a disadvantage but it could happen that even local engines might uh sort of get this feature and of predicting uh what value they can pack by the time it's time to emit the payload uh so in that way I mean I don't

actually see that it hinders any capability even for local engines it just matter of people building that module and if if we have this open source Community uh so maybe this problem is isn't hard enough and for example if there is open-source Builder code that is available out there then it could also be easier easy to import it as a module inside local engine so in that way I don't see that in long term local engines would be could be at any any

disadvantage but uh if for example we have PL Rarity of uh of Builders out there and you get very competitive bids it basically makes sense to go with some feature that can improve the flexibility and that can improve uh the economic value of the block yeah that that makes sense to me um any more feedback on this topic I add on to the arguments against I think so why not the advantage is it's

difficult to compare the value of your block to the value of block six seconds from now but potentially this problem also exists in Block options because we're just changing the structure of the aution and when the time of delivery happens and secondly there only um is relevant for um proposers that have a preference for their local value that has some relative value compared to the public value so low value boost and prism um would maybe suffer from this but it's been shown that these values up until now don't contribute super much to this sensor resistance of the network whereas parameters like M and boost uh they don't suffer from this problem and

they currently have a bigger adoption but this could change of course yeah that makes sense cool okay so my meeting notes later I will put like slot auction is basically prefer at this point and supported by uh two client teams and let's see how we go from there but I suspect we'll move to slot auction fa quickly now and uh let's see okay so the next topic uh Julia you want to take you over yeah thanks um so I'd like to discuss two post that I recently made uh

one is about the equation in s options so I'll go through that one first and then talk about the second one um so in s auction since the um be proposer doesn't commit to a specific execution payload um the Builder could release one execution payload and release another one later and thereby confusing the P committee um or other the next proposer um and this could be bad so in this post I present two proposals for Fort Choice uh that ensure that Builders have the same build of reveal safety and proposers have the same unconditional payment guarantees uh in SCH sections as

compared to the current in glob epds and also I put the D in that if a builder equivocates then no payload should become and then these two proposals satisfy this and one of them was get rid of the 3da problem with functions um I was passing reporters about this and he is questioning whether the second digit of is truly necessary because potentially there's just not that much to gain as a builder from equivocating uh even with the current which specifications so next steps for this are to explore whether this is truly in necess say digm um and see if there's FFG safety

concern uh yeah so that's it for the notation PS send uh and then the second post is about the P2P market and epds basically I was wondering what's the value of this through the protocol and parents and poos have done great work on this and they've highlighted a view uh potential advantages so it would allow for anyone to set the floor price for the auction it can be used uh for me bur and future protocal updates if necessary and it lowers the entry barriers for very long fill Builders who may only bid very infrequently so don't want to keep up safe RPC Noe um I explore what the value of this is to the protocols um and see

if there are any other advantages and disadvantages I would say that the TDR is um the PTP Market is definitely a very nice to have and it could be very valuable for something to express their preferences um for example allowing them to set a dynamic uh reserve price gra the aution which was Society uh and also it seems like it's fairly implementable um so it doesn't serve to many downsides yeah so that's it if there are any questions I'd have to hear it and otherwise you can always reach to you as well thank you Junior any questions foran nice okay no question that's

good okay so the next one on the agenda is that um blah blah blah I've been working on this documentation um basically trying to figure out how the endtoend um blog proposal Works under epbs because currently um blog proposal is very simple you have a validator as Aigner and then you have a beacon node that provides the blog so the validator get the blog from the beacon node signs it and then send it back to the bigon note it is a very simple process right but then in the epbs that it is a commit and review approach meaning that as a um blog proposer for a local blog you will

have also to sign a header itself self right and then so there is this extra run trip of signing basically so the question is that how do we like optimize it in a way that like in the happy pth say that if you're using the Builder it doesn't delay the uh blog proposal timeline right so like definitely open to feedback on this I mean I'm still working on this documentation but here are just like a few ideas right you can think of like the first idea is that proposer you can just call the prepare block endpoint first and then when the prepare block endpoint is code that the beon node is preparing everything in

parallel that is the consensus data that is getting all the execution compare that and then essentially just basically have the block prepare then the this prepare block endpoint will essentially return like a local true like booing and then if the local true boo is returned then as a proposer you know to whether could get headed or get blocked if it's get blocked that's just the Builder case you you get a block you sign a block and you're done but then if it's a local block boo is true then um as a proposal you will call the G header first then you will sign the G header return the G header and then and then and then c a g

block and then again right and the reason that is that you need to C again header first because the header of the blog is has uh is basically related to the state rote right and then because of that there is this dependency that like we we cannot do we we don't know the state of the block unless the header is signed and then we and then we also cannot have I guess like for me I I don't want the proposer to do it because proposer shouldn't um do the hatch root thing so this is kind of the first proposal sorry the first idea the second idea that I had is that just kind The

Proposal called the G block as today but the G block will either return a full block or a head or a header if it's a header or if it's a full block then it's the same business as usual today right but if it's a header then the proposer will um sign the header submit the header and then once he submits a header then the Bon will return the block and then the proposal will sign a block and submit the block right and then I mean I guess like my takeaway is that like because of we want to give this options of like a local block building there is no nice way of doing things like like the like basically the basically the API

gets reallyy ugly and I'm also not like a API expert so I'm probably like doing things way more complicated than shoo here but it's worth noting that since that we are moving to slot Au with high confidence that this issue does not exist in for example in the slot auction because of like proposal just need to sign once and which is nice but yeah I wonder if anyone have any like feedback on this or if anyone run into like similar issues when they design validate their client signing today okay I take no

feedback yeah go ahead yeah yeah so um I think a general maybe use something I would look at here as a well I sorry throat clearing over I the idea that the idea to seems to have to bake into more wees of the stack um or say uh policy questions like like user preferences uh and also some people are running obviously staking pools require some set of uh you know uh choices I'm presumably will continue to do so um any of these policies or preferences end up

need needing to be baked into more of the protocol an idea to style away uh idea one has I mean this is just looking at your specific two kind of maybe somewhat STW man proposals but um at least comparing those idea one um the proposer has sort of more directly controls a lot of this policy ands it and to me that's an advantage because it reduces Co costs across the layers which have proven problematic uh or High I see that makes sense yeah so the so yeah so some side yeah want give

proposal more control but giv proposal more control we need to have the end point for that and then the end point is basically just a get header and then yeah yes sure um but I think that sort of pays off sort of I I think having in C certain ways it's a simpler end point too so that's sort of the um it's a semantically simpler endpoint simpler to test um decomposes more readily I my tendency is to right and and as well yeah sorry my tendency is to look at that is probably a more overall straightforward system um uh between those two particular um options um

the I mean even to the extent of the should local header be used I mean that that's an example of the kind of policy question that in theory the proposer itself could could choose um right but fact that it goes through that that cycle of the proposer can in theory if you I mean there's another variant of idea one which is idea one but the proposer just ignores the you know local header flag and does whatever it wants um I mean again Better or Worse the point is that that flexibility is is there um and and as sort of indicated in chat I think that one of the maybe a concrete guideline is does it support proposed block B3 um I'm not

I have look I have my issues with that API my quibbles with it but I broadly speaking I think it it speaks to a set of um two things first it's a higher level API it's something that validator clients are expecting to call and they should be de as insulated from a lot of this as possible most the as many of these changes should occur in the beacon layer Beacon node and blow for EPS in general stages hopefully um that that the beacon API should be able to be at least somewhat conceptual on this point secondly um that we have seen the discussion and and and that has been sort of litigated what do people want out of these apis what what kind of choices do people want in terms of

picking block and and you know that that a no that API I don't want to just get too much into that because that will need it need its own discussions at some point it it makes a lot of assumptions effectively that the choice is either local or Builder API specifically need needs judment sorry needs adjustment but but I think at least the discussion around it points to has has a lot of specific evidence of what do people want and what people want I think idea 2 is not flexible enough to accommodate that see that makes sense thank thank you any other feedback cool so that is all I have in

the agenda items are there anything else people want to cover um so I have a general question I guess because it's been coming that um let's say on well uh this is related to the testing and it appears like what is the this is a question what is the overall priority of having this be testable or I understand there's a chicken and egg thing to some extent of saying like I know pus is on record saying he doesn't you know wants to spend uh to bound to amount of time he spends on sort of

fully ready test for the EF test Suite unless it's clear this can go in at some point um and at the same time what that means is I know Ethan discovered in the last you know has been discovering but discovered more in the last few days yeah and you've you've seen this right I know you and he have interacted and and all that Discord I guess as well so but my my question is going soort of starting starting from that is this a priority or what what what is the plan around maybe frame it in a a more open-ended positive way what is the plan around testability of as this develops I mean or changes going from block sorry block to slot auctions or or any of the other changes that are are being

discussed of epbs as a whole is there a is there a road map even a very very informal road map towards um devet I know podus has talked about I wanting something by Devcon great I I would love for that to happen but like so far it doesn't look super likely yeah so um I guess one question to you is when you mention testing are you implying the testing for the python spec or you imply testing for like a client code like unit test death net nqn like what type of testing is this well I would say both they have different purposes obviously

right one is but so so for the EF consensus spec tests those are a good kind of let's say model checking in a way and they are not obviously realistic tests in the sense of running n different clients and network traffic and anything else but they but but they show some of these assumptions and about like when do you do Rand out or whatever you saw that right so that that's one and and in fact I think pus himself has discovered many things working through the fork Cho and he's talked about them in previous meeting or and he working in the Discord Channel working through some of the fork Choice tests discovering that um or discovering why why he added the merge

stuff to the spec which is like and it so it it just discovers these edge cases which which otherwise are are easy to maybe not see or ignore that's point one I I think my know e and I are different people uh despite both working on Nimbus and so I would say he's working on the consensus spec and he's a little more focused on that at the moment and what he happens to be doing the this this these days um I personally am more so I I acknowledge his concerns and they are real my personal I think the more likely schedule blocker or schedule hindrance for is going to be having the the dev Nets and local test Nets and

infrastructure for that and and I think one really concrete thing is um is is e is this something eth hand Ops is at at all ready I I I think that they've been very helpful and kind of um just be able to set up infrastructure that allows for this kind of testing to become um right practic and easy they they they do the hard work to you know set set that up right so yes I definitely agree with you so the reason I asked that is that I think like for the spec testing I think like just personal opinion I think pus may agree with me that it's just like I

think like we should put less emphasis like pus for example so JY EIP 7732 so the feature is merged into the main develop Branch but there's no testing around it right we don't we haven't written any new test for the python back and then and then that's and that is also by Design because I guess like I mean we don't know how to do it we can learn how to do it but they will take time but we rather do what we're good that that is writing client code that that is uh having a death net that is having an end to end test we should spend time on writing this Python's SP test but the question is that like we

probably don't want to do it unless we are confident that this EIP will get in post Petra but the but then but then to gain confidence we have to have a death net beforehand that and that is kind of where our thinking is to spend less time on the python spread testing but more time on just writing client code having a death net so so I guess between PS and I um this is basically our full-time thing right now without doing anything else so basically having a death net is a priority I mean I mean say if today it fails it doesn't get in we from some breaking bug and that is great but then we don't know what this breaking bug is

unless we have a death net unless clients start implementing it so that's just my take I wonder if anyone have any takes well I mean I I agree broadly with that I'll I'll say in terms of overall I think the defit practically speaking is um more immediately important let's say shortterm important than than this the spec tests um so I I per yeah sure um yeah and if I remember correctly one of the objective to actually having something really working in practice is also to test if we have uh good performance when we have less time for aggregation so

lot uh Anatomy changes so we really want to run those stuff in practice Yeah it's not something that is tested by just running python test checks on the specs you really want clients to run and deal with networking and slowness in general yeah and and it also speaks to devet specifically I mean one of the strengths and weaknesses of of curtosis is that Well they um it can aert tour can can certainly add and and other technique can had sort of known issues largely they're kind of discovered after the

fact sort of what are the what are the ways in which this this specker protocol can I don't fail can weird message ordering or or kind of it's a it's a kind of fuz testing and but but you have to kind of know how to fuz and yeah and so there's a that means that you're kind of have to learn how to do that first by running I mean Dev Nets in a more I think natural way is the most productive Direction and then otherwise um curtosis and similar techniques um often are they're testing kind of very happy path setups they the network works perfectly there's no latency uh every everyone starts on time nobody has to ever sink

uh like I mean it's so and Dev Nets really hit uh I think are are a good way to hit a lot of these um sort of test what what are the the first things that people going to run into in terms of of testing it so yeah yeah yeah I guess also speaking for prison like I think like we are not we fairly confident to have something before death con I think like four choice is by by far the hardest part but other than that it's also a very interesting part as well that like it's actually so like I'm personally pretty

excited to see it progress I think at the minimum we could just have like a solo validator we don't even need actually Builder just solo validator signs its own header included broadcast a block then broadcast a payload opor for a local definite I think that's fairly doable but yeah well and this is the kind of thing that pus has discussed in the past as what are these sort of minimal intermediate steps which are not the system that will be built out overall but would show structurally how epbs the protocol can still work broadly with the existing players and assumptions and so exactly if you can show and and especially for people who want to see

that it can still work uh appr propo your the discussion earlier about slot auctions and local building and things like this that that EP that epbs does not buy its adoption exclude currently um relevant youth cases so I think it's it's still a useful exercise even if it's not sort of yeah yes as will be seen by the world eventually yeah for sure so it is fair to say that transition to slot auction will be after the first uh round of

implementation because if we are especially you uh guys in prism if you are in rush to implement something for Devcon maybe switching back switching uh to slot aution may be slowing down even more uh and um we want to really test something that is really not um not relevant from from from the way you got the the block maybe is just testing the overall structure of things maybe is less important to change the slot auction quickly what what's your feeling what are you feeling there SL probably just like two to three

days of work I mean I would if want to change we should just do it now but then I guess like the reason that haven't done I wasn't at the last meeting which just there wasn't that many like signals to thumbs up but things like today we got more thumbs up I guess eventually we'll reach over the threshold and someone will do it but yeah I will make the me notes saying that like tuu nimas and the low Star both support it and yeah we'll go from there okay SC anyone else so one final thing I maybe is that

I think it would be useful to have a a slightly codified a version I know pus has mentioned this a couple of times and I have I know off hand what some of the steps he has in mind are like a like a scaffolding steps basically I I mean I I guess practically I'm really I'm looking at this as the um person implementing this for for Nimbus currently you know right now it doesn't really matter there they're implementing some their computational algorithms more or less and that but there will be come a point at which we start getting to you know how can we kind of keep having minimal VI minimum viable kind of constructions I don't say products here

but to to tests constructions and I know pus has again he's suggested some in the past I know what they are and I can I can you know relay those uh and and help Implement those but um but I think having having that scaffolding be I don't know some suggested not the only possible but be written or or or H having some examples uh minimal examples of what a um an epbs setup might look like that does not depend on having a full I don't know e panda Ops multi client Etc infrastructure might might look

like so is this just more like the testing that Al you were thinking about roughly or even more development and tested I mean this is I'm thinking back to a little bit you know how like or the engine API or we had these sort of staged development of where long before the inter what we achieved how basically and and the the purpos that the consensus sort of have now which is kind of everyone comes to the table with like maybe they have bugs but everyone passes the consensus spest and so it kind of the scope of issues here I I guess why I'm suggesting I mean it it doesn't have to I don't know if it can be as codified

we don't have a you know a bunch of convenient unit tests for everyone to on right that that's not it's not un that uniform yet or nor maybe nor will it ever be but but something where uh maybe some possible scenarios that are known to be simpler um yeah or known to be achievable in the scope of one client you know maybe starting starting you know with the the kind of what you're describing right the kind of local block building only so but but because one of I'll be I'll provide a concrete example of the kind of thing I'm thinking about it is possible to start with like one of the major refactorings is going to be the slot timings and and and when things happen within a slot that's fine that's

how this works right but but that needs testing and that needs that needs sort of ideally that we can start testing that in an isolated way on its own and means testing with like locally built blocks using the existing engine API and things like this and and that's that's kind of what I'm getting as having a um example um I don't know I I guess we use the word milestones in Kenya a little bit in previous SAR meeting to to kind of to kind of kind of scaffolded Milestones um and so far I mean they clearly exist in different people's minds I have some in mind I know pus definitely has a bunch of spefic he's he's been able to Rattle

off off hand like I know they exist but like having those written down right right right so I I guess before even for every hard for we had this m0o M1 M2 like those milestones we basically do the same thing here yeah yeah that yeah exactly exactly that's sorry I was not very good at expressing this but no worries yeah I was getting I was that's going to get yeah for sure awesome yeah that makes sense definitely yeah I I will add notes to that as well Co anything else for me no okay well thank you guys happy Friday you guys around the

internet bye guys bye all bye by thank you bye