Ethereum Protocol Fellowship (EPF) Cohort 7 — Applications open until May 13

ePBS Breakout #029

2025-12-19 Agenda: #1835 canonical JSON

Transcript

00:04:07
Justin Traglia:Hello, everyone. Welcome to EPBS Breakout Call 29. This is the final breakout call for ePBS.
00:04:16
Justin Traglia:After which, starting in 2026, EPBS discussions will take place at ACDT.
00:04:24
Justin Traglia:Yeah. Let's just get right into maybe updates from client teams. Is anyone from… here from PRISM that could give us an update?
00:04:35
terence:Not much. We're just waiting for the PR for the, state builder to be merged, so we continue making progress. I'm implementing part of it, the business state.
00:04:48
terence:And, the… and the SSD status structure.
00:04:54
terence:So, yeah, so I'm just waiting for the PR to merge, and hopefully we can get the release, and after the release, I can merge the PR, which should unblock the rest of the progress.
00:05:06
Justin Traglia:Awesome, yeah. And, did you have an opportunity to check the reference tests?
00:05:11
terence:I have not. It's much… it's much harder to do that versus just having, like, an official release, so I think I would just wait for an official release, and the… and the… also, no rush on that as well.
00:05:26
Justin Traglia:And, I guess we could plan on making a new release pretty much as soon as we get, like, this group of PRs merged. So maybe next week?
00:05:37
Justin Traglia:Okay, thanks. Is there anyone here from Lighthouse that can give us an update? If any update?
00:05:47
Justin Traglia:Shane Moore just joined. Shane, are you from Lighthouse? Could you give us an update?
00:05:52
Shane Moore:Hey! Hey guys. Yeah, on the Lighthouse side, we just, merged the containers branch into our Unstable, so pretty, good milestone there. Then, I think Michael and Manas have actually just started taking a look at the fork choice-related changes, which is nice.
00:06:08
Shane Moore:Mark is still, handling some, like, payload separation-type changes, and I'm tackling, payload attestations.
00:06:17
Justin Traglia:Awesome. And that is a good milestone. Congrats.
00:06:21
Shane Moore:Thank you, thank you.
00:06:22
Justin Traglia:Okay. Anyone from TechQu here? I see a couple.
00:06:32
Enrico Del Fante (tbenr):Yeah, not that much. Updates. This week has been…
00:06:36
Enrico Del Fante (tbenr):Along with Raz, Stephanie is off, and yeah, the only… the last thing we were working on… actually, Mehdi was working on it.
00:06:47
Enrico Del Fante (tbenr):Still related to, gossip validation rules that needs to be…
00:06:54
Enrico Del Fante (tbenr):Redesigned a little bit to make it a better cross-fork.
00:07:00
Enrico Del Fante (tbenr):Aware…
00:07:02
Enrico Del Fante (tbenr):And, yeah, not that much progress still on that, so I don't know if Meli wants to add anything.
00:07:08
Enrico Del Fante (tbenr):Probably.
00:07:10
Mehdi Aouadi:No, that's basically it, yeah, I've been working on the Gossip player, so, yeah.
00:07:15
Enrico Del Fante (tbenr):So, yeah, that's it.
00:07:17
Justin Traglia:Okay, and Stefan's been on vacation, right?
00:07:20
Enrico Del Fante (tbenr):Yeah, it is, yeah, I think Lee will be back next year.
00:07:26
Enrico Del Fante (tbenr):And most of us will be starting…
00:07:30
Enrico Del Fante (tbenr):Going off from… from today, so… Yep.
00:07:35
Justin Traglia:Expected. Same for me.
00:07:39
Justin Traglia:Okay, thank you for the update. Is there anyone here from Nembos that can give us an update?
00:07:52
Justin Traglia:I don't think anyone from members sits here. Okay.
00:07:59
NC:From Lostar's side, we got, concept topic, concert validation.
00:08:06
NC:We got the opt for… Seen cash, done.
00:08:12
NC:And I'm… I'm personally looking at, data column sidecar and how to make that change, and also the block import, flow.
00:08:25
Justin Traglia:I'm sorry, the blocking portfolio?
00:08:33
NC:Yeah, just basically, instead of just importing, like, a single block, you import the consensus block.
00:08:40
NC:And then you have, like, this intermediate beacon state that we need to store somewhere.
00:08:46
NC:And then you have the execution payload, come in, and do the remaining of the state transition.
00:08:51
Justin Traglia:I… okay, I misunderstood. Thank you, that makes sense now.
00:08:57
Justin Traglia:That's been help.
00:08:59
Caleb:Oh, hi, sir. Yeah, sorry, from Limbus. I missed that, sir.
00:09:05
Justin Traglia:August. Sorry, August, you can give an update now if you want to.
00:09:09
Caleb:Yeah, so we've been working on integrating the payload attestations to the validator duties, basically. Then, on the one hand, we are waiting for the new spec release.
00:09:21
Caleb:And also, we have somebody working on… looking at the fork choice side of things, so basically, that's just it from us.
00:09:36
Justin Traglia:And last, but not least, granting.
00:09:49
Subhasish:Anyang, would you like to take it?
00:09:55
hangleang:No, y-you can, you can… We can't speak.
00:09:58
Subhasish:Okay. Yeah, so, mostly, most of the PRs are in place, and we're in the process of, reviewing them. A new PR from the last week was, including the
00:10:11
Subhasish:block at stations, and, I am personally answering, reviews on, some of the corrections, pointing at, food choice changes, and, yeah, so it's mostly, correcting and, reviewing the changes.
00:10:36
Justin Traglia:Okay, thank you, everyone.
00:10:39
Justin Traglia:I guess we can get started on some of the other agenda items now. The first one is code for HTTP endpoint.
00:10:46
Justin Traglia:This is something that POTUS wanted to bring up. It's essentially the…
00:10:50
Justin Traglia:the builder API endpoints that would be necessary for a validator to submit bids and stuff. I'm not actually sure if this makes sense anymore, if we plan on
00:11:01
Justin Traglia:Using, like, mountain…
00:11:03
Justin Traglia:If we end up making builders not validators. I'm not the most up-to-date on this one. Maybe, Nico, could you give some more insights on whether or not this is something that
00:11:13
Justin Traglia:Like, what is this, and… Should we be doing this?
00:11:17
nflaig:Yeah, personally, I'm not that convinced it makes sense, to be honest, because usually, like, where you run your validators, so if you assume a solo stake as a beacon node.
00:11:28
nflaig:I don't think you wanna pause that note to submit bits each slot.
00:11:33
nflaig:Because there's, like, if you force the EL to build payloads each slot, it's gonna be a hit on performance.
00:11:41
nflaig:Especially if you think, like, long-term, if blocks are harder to produce, like the payloads, I really don't…
00:11:49
nflaig:Know if that even makes sense.
00:11:54
Justin Traglia:Yeah, I… that makes sense to me.
00:11:58
Justin Traglia:I think it's coming up.
00:11:59
nflaig:Otus was mostly in favor of this, right? And Enrico, I think.
00:12:07
Francesco:Yeah, sorry, could you just restate exactly what is the question?
00:12:14
Justin Traglia:Nico, maybe you'd be able to phrase it better than I could.
00:12:18
nflaig:So basically, the idea is that the beaker node would implement the builder functionality, where you implement the server side of the builder API, like the get header and the submit block API.
00:12:33
nflaig:So that's basically a case if you're a solo staker, or maybe, like, a group like Eve Staker, and you want to act as a builder.
00:12:41
nflaig:That it's more accessible, or they can just run a client and don't need to run any relay or builder software.
00:12:52
Francesco:I mean, it seems nice maybe as an opt-in, like, anyway, you would need to be, even without the, fully staked builders, you would anyway would need to opt-in to the whole thing by depositing a builder.
00:13:04
Francesco:So if there was, like, just a flag or something to do this, it seems nice. It definitely seems weird if you were just building blocks for no reason without even having a builder.
00:13:14
Francesco:That you control, but… I don't know.
00:13:24
terence:Anyway, and we also have this today already, so I don't think it's, like, each… today we have the flag, right, that's such that you can, like, signal the CL client to basically prepare a payload every slot.
00:13:42
terence:And the builder's already using something like this today, and the difference is that we're actually implementing, like, this… we're opening the port, or…
00:13:51
terence:having to handle it for the server, that's the only difference. But I think this could be optional. I don't think it's, like, a requirement that client must do this, but, like, if today, say, Nimbus or Lighthouse do it, then Buda can just use the Nimbus and Lighthouse
00:14:14
Bharath:Yeah, I mean, I would assume, like…
00:14:17
Bharath:for clients, if they want to implement, like, I would assume, like, you know, proposers are not gonna whitelist, like, like, ETH Taker, like, solar validators and stuff, right? Because you… you would directly… the builder API would probably, like, whitelist the builders
00:14:32
Bharath:Who, who you're gonna, like…
00:14:34
Bharath:call getHeader and get bid or whatever, right? I would still assume, like, a lot of the…
00:14:40
Bharath:solo builders would… and you kind of need to trust the builder that, okay, like.
00:14:44
Bharath:it's a big enough builder that you know the URLs. Maybe in a future where the URLs are more, like, on-chain, like, I think the builder registry, which people are working on, maybe in that case, like, everyone can publicize the URLs, but today I would assume you would use the builder API for bigger builders?
00:15:01
Bharath:So, I mean, to me, like, I would… I imagine, like, small solo stakers would probably use the P2P gossip topic.
00:15:10
Bharath:And, yeah, I mean, again, for the…
00:15:13
Bharath:feels kind of weird for clients to implement, the Builder API, like…
00:15:18
Bharath:the server side of the builder API.
00:15:20
Bharath:I think the bigger question for me is, like, whether clients want to implement the… whether the clients want to absorb the entire, like, MavBoost, client-side implementation into
00:15:31
Bharath:The client, or, like, how they would want to do that So, yeah, just…
00:15:41
Bharath:like, the clients can build blocks, but I'm not sure the implementation of the builder API, the server side, to send headers and the beacon block back, makes, like, sense to me, but yeah.
00:15:54
Bharath:Because I'd assume, like, the smaller validators are not going to be whitelisted by most proposers, so yeah.
00:16:01
terence:I think this is just probably optional, like, people can do it if they want to do it, so yeah.
00:16:14
nflaig:Would be if we separate the builders now, and they are no longer validators, you would not import the keystore and the validator client.
00:16:24
nflaig:So in my mind right now, it's probably a separate process that you can run.
00:16:29
nflaig:like, whatever, Lodestar Builder, and then…
00:16:32
nflaig:that only uses the SSE from the beacon node and, submits bids only via P2P. I'm not really sure about the API part, to be honest.
00:16:54
Justin Traglia:Terrence, you're still unmuted, do you want to say anything?
00:16:56
terence:No, I think… yeah, I don't think this is, like, really that big a discussion point. Like, people can do it if they want to do it, but I can support that, so yeah, I mean, this is not, like, this is not meant to be a requirement at all.
00:17:11
Justin Traglia:Okay. Do we still need to standardize this, or specify it?
00:17:17
terence:I think it's a very low priority to do that.
00:17:22
terence:It's a very… it's… yeah, it's a nice to-have.
00:17:28
Justin Traglia:Okay, cool. Let's just move on to the next topic, then.
00:17:31
Justin Traglia:Unless anyone has anything else.
00:17:35
Justin Traglia:Okay. The next topic would be, a PR on proposer preferences. I will share the link right now.
00:17:45
Justin Traglia:Sorry, yeah, this is a way for, validators, proposers, to share their fee recipient and gas limit preferences to builders before
00:17:59
Justin Traglia:The proposal slot.
00:18:01
Justin Traglia:I think it's pretty simple. It's via a gossip topic.
00:18:06
Justin Traglia:Fair, The structure is pretty minimal. It includes the proposal slot, the proposer index.
00:18:14
Justin Traglia:Few recipient gas limit, and maybe something else I forget.
00:18:18
Justin Traglia:You would only submit these to the network,
00:18:24
Justin Traglia:The epoch before you're proposing, so it'd be, like, 32 messages per epoch.
00:18:30
Justin Traglia:Which is fairly minimal.
00:18:33
Justin Traglia:And, I recently changed it from Proposal Epoch to Proposal SWOT, so now if…
00:18:40
Justin Traglia:You're lucky enough to have,
00:18:43
Justin Traglia:multiple, proposals in the same epoch, you would send two messages now, or multiple messages now.
00:18:50
Justin Traglia:It just kind of makes it a bit easier to check and to verify.
00:18:55
Justin Traglia:I guess this is just a request for people to review the PR, and maybe on this call right now we can come to an agreement on whether or not this is something we…
00:19:06
Justin Traglia:Or intend to merge.
00:19:08
Justin Traglia:After it's been properly reviewed.
00:19:13
Justin Traglia:What do people think about this?
00:19:22
Justin Traglia:Nico says, in favor of having this.
00:19:30
Enrico Del Fante (tbenr):Yeah, I mean, it makes sense to me to complete the whole protocol.
00:19:37
Enrico Del Fante (tbenr):Right, this is a… this is a missing piece to be everything without any API.
00:19:42
Enrico Del Fante (tbenr):Cool, right.
00:19:49
Enrico Del Fante (tbenr):Yeah, so, I mean, it makes total sense to me.
00:19:56
Bharath:adding one thing about this is… so we send the… I think it's not an issue, but we send the preferences for epoch E plus 1. If a builder, like, comes, like, if a builder is live, like, becomes active in the previous epoch, like…
00:20:10
Bharath:and hasn't received the preferences, the builder won't be able to build… won't know the preferences for Epoch E Plus One. And I guess that's fine, I mean…
00:20:19
Bharath:Like, unless we want to have a way for that builder to be able to fetch those preferences, but that just seems too complicated to me.
00:20:28
Justin Traglia:I agree. I think it'd be better just to, like.
00:20:30
Justin Traglia:Force them to wait another epoch before actually submitting bids.
00:20:34
Justin Traglia:Or they could… yeah, that's… really, that's the easiest solution.
00:20:39
Bharath:Yeah, otherwise I'd assume, like, you'd have… clients would have to store the preferences, and you'd have to, like, have a request response or something, which just doesn't make sense.
00:20:47
Bharath:But, yeah, I just wanted to…
00:20:49
Justin Traglia:to put… I suppose you could spin up the, like, builder node before the, builder actually becomes active.
00:20:57
Justin Traglia:So, I mean, maybe it would have this information anyway.
00:21:02
Bharath:Yeah, I mean, it's just subscribing to a gossip topic, right?
00:21:05
Justin Traglia:Yeah, there's not too much.
00:21:13
Justin Traglia:I was… I'm sorry, I was gonna say that,
00:21:17
Justin Traglia:Non-staked builders could also use this gossip topic if they wanted to.
00:21:21
Justin Traglia:But I guess it's not as useful.
00:21:27
Bharath:Yeah, but… Yeah, I don't think we know if they'll even, like, exist, or we'll even support them.
00:21:35
Bharath:I think that's probably a different problem, but… but yeah, I mean, it's just like listening to a gossip topic, so you have to do that.
00:21:41
Bharath:Just wanted to raise that, like…
00:21:45
Justin Traglia:It sounds like there's support for this, so please take some time to review it when you can, and I'll try to merge it after I…
00:21:52
Justin Traglia:After it's properly reviewed and approved, and I, making these suggested changes.
00:22:03
Justin Traglia:Okay. The next topic is, a bid forwarding threshold. I just shared the link in the chat.
00:22:11
Justin Traglia:This is kind of like a DOS prevention method, or like a… something to help with, like.
00:22:17
Justin Traglia:Preventing DOSes.
00:22:19
Justin Traglia:This PR would change the forwarding threshold, so, like, currently it's, is the bid value greater than the current, or the previous highest bid value? And this could be as small as… as small of a change as, like, one way.
00:22:34
Justin Traglia:This PR would make it to where the new bid would have to be, like, n percent more valuable than the previous highest bid. In the PR, I have 3%, but we could change that to 1, 2, 5, like, whatever makes sense to us.
00:22:49
Justin Traglia:I think it should be fairly low, though, so… Keep that in mind.
00:22:57
Justin Traglia:I forget what the remarks about it were.
00:23:00
Justin Traglia:I know Quasar Builder had some…
00:23:05
Justin Traglia:What do people think about this? Maybe builders? Lorenzo, do you have any opinions?
00:23:11
Lorenzo:Yeah, I think maybe 3% would be a bit high.
00:23:15
Lorenzo:I don't have a good feeling, it's just when there is a very, like, high-value blocks, then…
00:23:21
Lorenzo:You know, bidding in increments of, like.
00:23:24
Lorenzo:3% seems very high. I mean, I do see the anti-dose vector, but… Yeah.
00:23:31
Lorenzo:Not sure if there's, like, a set number that is ideal.
00:23:38
Justin Traglia:I'm not sure what the correct number could be, either.
00:23:41
Justin Traglia:Okay. How do other people feel about this? Is this something that we want, or…
00:23:47
Justin Traglia:Aren't we fine without it?
00:23:53
Enrico Del Fante (tbenr):I think something like that needs to be in.
00:23:59
Enrico Del Fante (tbenr):Definitely in favor.
00:24:14
Justin Traglia:Please take… or Francesca said, does it matter if the increase is high, the expected usage of this is more just a fallback?
00:24:25
Justin Traglia:I'm not sure. I mean, I think it sort of matters.
00:24:30
Justin Traglia:Did you answer that?
00:24:33
Lorenzo:No, I think… well, if the goal is just to have an anti-DOS, then… because we bid so frequently anyways, and likely wouldn't use P2P anyways, so yeah, it's just a fallback.
00:24:46
Lorenzo:it's still… I can imagine some cases where we have to use it. In that case, it would matter. It's just…
00:24:52
Lorenzo:It's something maybe you don't use for, you know, 99% of blocks, and then you use for that single case.
00:24:59
Lorenzo:So that's why the… Yeah, yeah, it wouldn't happen for high frequency reading, definitely, it's just…
00:25:06
Lorenzo:you know, the proposal set will be quite varied in general, so I could imagine some blocks will have to use it.
00:25:12
Lorenzo:Even though that's not ideal.
00:25:17
Justin Traglia:Okay, thank you. Terrence?
00:25:20
terence:Yeah, so I think on the implementation side, this is also, like, highly configurable in a way that, like, we can just quick hit once it goes live. I mean, we can start, like, seeing it with a reasonable number, and then once we see DOS, then we just…
00:25:37
terence:notify everyone to tweak the number to be higher, and that will likely solve it as well. So that's another way, yeah.
00:25:47
Justin Traglia:Yeah, that might be a good suggestion, too. We could decide to, yeah, keep it in our pocket and only use it.
00:25:52
Justin Traglia:Or only, suggest people use this if necessary.
00:25:57
terence:Oh, I mean that we have to use it, but it's just a number, it's like, we can always change it to a higher number later on, yeah.
00:26:06
Justin Traglia:Oh, I see. Okay, sorry.
00:26:10
Justin Traglia:Okay, it sounds like there's general support for this. Maybe we can chat about it some more on the PR. Please take some time to review it.
00:26:18
Justin Traglia:Enter, approve it.
00:26:23
Justin Traglia:Okay, let's move on to the final topic, the non-validator builders.
00:26:28
Justin Traglia:I'll share the link in the channel.
00:26:30
Justin Traglia:We're in the chat.
00:26:33
Justin Traglia:Okay, this is the big change that we've all been sort of working on this week.
00:26:39
Justin Traglia:After speaking with builders, like, for the past couple weeks.
00:26:44
Justin Traglia:We learned that they prefer to avoid the deposit queue and, rather than receive rewards on staked,
00:26:54
Justin Traglia:state to ETH. Like, faster deposits is more important to them.
00:26:59
Justin Traglia:And also, I guess, minimum, or sorry, smaller, staking requirements. So, like, 1 ETH versus 32 ETH is more capital efficient.
00:27:09
Justin Traglia:Yeah, so we spent a bunch of time working on a PR for this.
00:27:13
Justin Traglia:I think a lot of people have reviewed it. I'm generally in favor of it.
00:27:18
Justin Traglia:What do you all think?
00:27:33
Justin Traglia:Aaron's thumbed up, Nico's thumbed up.
00:27:38
Shane Moore:When I read the non-validator builders, description on the GitHub Ethereum PM, it does say, like, however, we don't want to lose the fallback of P2B biz from actual validators. I'm just curious why we would lose that if we did this design.
00:27:55
Justin Traglia:Yeah, that is the one negative of this, I guess.
00:27:58
Justin Traglia:Yeah, so, like, normal validators wouldn't be able to submit bids like they were… like they could in the current spec.
00:28:05
Justin Traglia:Is your question, like, why is that? Or, like, why.
00:28:10
Justin Traglia:Because, they wouldn't be part of the builder set, like, in this state, so they would have a different set of indices.
00:28:19
Justin Traglia:And, the only thing they could do is self-build.
00:28:25
Shane Moore:lose the fallback mechanism of, being able to do P2P bids, basically.
00:28:34
Justin Traglia:I mean, the builders would still be able to submit peer-to-peer bids.
00:28:39
Justin Traglia:To be clear. Like, it would just be a… a different staking actor type.
00:28:44
Justin Traglia:Like, it just wouldn't do… it wouldn't have validator duties, pretty much.
00:28:50
Shane Moore:Okay, yeah, I'm following you.
00:28:54
Justin Traglia:Yes, correct. Francesca said anyone could put down 1 ETH and become a builder.
00:29:01
Justin Traglia:And it would be, very quick. Nika?
00:29:05
nflaig:Yeah, just to me, it's not really clear, this argument, that any validator would be a builder. Just from technical perspective, it doesn't make a lot of sense for your validated client node to also produce blocks each slot.
00:29:20
nflaig:Because really, I mean, right now, to me, it makes way more sense to have this separated, and it's also cleaner from a key management perspective.
00:29:29
nflaig:And, run this on a different server, or at least different process.
00:29:33
nflaig:So, I'm really wondering, like, who would be that… those validators that… that we are talking about? Because I don't really even see who would be doing that.
00:29:45
nflaig:And if they want, they, yeah, they can just deposit the one EVE, which should be small enough, for people running early days.
00:29:58
Enrico Del Fante (tbenr):Yeah, I see the argument that the hardcore…
00:30:02
Enrico Del Fante (tbenr):Ethereum guys that really wants to do that anyway won't be.
00:30:07
Enrico Del Fante (tbenr):blocked by… The need of a depositing…
00:30:14
Enrico Del Fante (tbenr):an if, and essentially spin up the validator, well…
00:30:19
Enrico Del Fante (tbenr):new week. Be careful for that.
00:30:23
Enrico Del Fante (tbenr):Probably the only downside would be that…
00:30:26
Enrico Del Fante (tbenr):Since this use case is very… would be…
00:30:31
Enrico Del Fante (tbenr):Less use and require in…
00:30:35
Enrico Del Fante (tbenr):Some implementation on client side, probably very few clients will be implementing this.
00:30:42
Enrico Del Fante (tbenr):While the other world… Would have been much easier, but… Yeah, aye, aye.
00:30:52
nflaig:But is it really easier? Because for me, like, I don't want the node that is validating to also doing the bidding.
00:31:00
nflaig:I kind of find it nice that it's separate now.
00:31:03
Enrico Del Fante (tbenr):Yeah, I get this argument, but technical… the technical implementation would be…
00:31:09
Enrico Del Fante (tbenr):Different, because then you have to, handle this new special…
00:31:15
Enrico Del Fante (tbenr):validator, and you have to have this additional key management on the validator client that is delegated to that only, so it's…
00:31:25
Enrico Del Fante (tbenr):I don't know if the detail, but my gut feeling now seems that
00:31:30
Enrico Del Fante (tbenr):This is a more special case than before.
00:31:38
Enrico Del Fante (tbenr):I might be wrong.
00:31:40
nflaig:Yeah, I mean, I'm also not sure if the code for that should even live on the beacon node side, because then you need to handle different cases.
00:31:49
nflaig:only needs to do the proposal concern, right? Acting as proposer.
00:31:56
Enrico Del Fante (tbenr):just needs to expose the API for sending stuff over the B2B.
00:32:04
Enrico Del Fante (tbenr):Man, only that.
00:32:07
Enrico Del Fante (tbenr):it's currently self-bending doesn't require to send anything on the P2P side, so a Bitcoin node won't even…
00:32:16
Enrico Del Fante (tbenr):Doesn't even require to have, the… bid gossiping.
00:32:23
Enrico Del Fante (tbenr):I mean, descending part.
00:32:25
Enrico Del Fante (tbenr):If… Doesn't want to support, builder.
00:32:34
nflaig:Yeah, I guess the idea could be that it's just a sidecar software, the builder, and we could still implement that as a client, and then you just use the Beacon API to submit the bid and listen to SSE events and stuff.
00:32:48
Enrico Del Fante (tbenr):Yeah, it just… we just probably need to standardize the API on that side.
00:32:55
Enrico Del Fante (tbenr):the bid API for the publishing bid API on the Beacon node.
00:33:01
Enrico Del Fante (tbenr):And, yeah, maybe events, related events.
00:33:05
Enrico Del Fante (tbenr):Once we do that, becomes much easier.
00:33:20
Justin Traglia:Francesca has asked for me to summarize the open questions left on the PR. The first one that comes to mind is, it's not really open anymore, but we just made a decision.
00:33:31
Justin Traglia:on whether or not builders should use withdrawal requests or voluntary exits, and I think we've come to this decision that we want them to do voluntary exits, because it's a bit simpler and less risky.
00:33:44
Justin Traglia:For them, so that they can continue using their,
00:33:48
Justin Traglia:Execution address, wallet, account, whatever you want to call it.
00:33:52
Justin Traglia:For other stuff, too.
00:33:54
Justin Traglia:The other questions would be…
00:34:01
Justin Traglia:One second… POTUS said something about git index for new builder.
00:34:07
Justin Traglia:He said, flagging this function as a possible problem, don't have it clear yet, but it's something that clients may want to discuss in the breakout. We typically have a global public key to index mapping cache for signature validation, and this type of reusage would make it… make this cache a little more sensitive to be in sync with the head view.
00:34:26
Justin Traglia:Not against this, just flagging as a possible shot in our foot.
00:34:31
Justin Traglia:Or… I don't entirely understand, I will share a link.
00:34:42
Justin Traglia:I'm not sure if there are any other open questions, Nico?
00:34:47
nflaig:Yeah, I was also looking at that, when looking how to implement the builder separation, and
00:34:53
nflaig:In my mind, like, if we have the index reuse, it might be fine to just get the pub key and the index conversion from the state directly.
00:35:02
nflaig:And not use our pub key to index cache.
00:35:05
nflaig:I think it might be fine if the list is not too large.
00:35:09
nflaig:So I guess that's the concern.
00:35:11
nflaig:Because our pub key to index cache is basically append only.
00:35:16
nflaig:While I think that doesn't work if you have index reuse.
00:35:20
nflaig:Or it gets more complicated.
00:35:26
Justin Traglia:In the chat, Francesco said, builder exits take 18 days, so not sure that really counts as sensitive to be in sync.
00:35:34
Justin Traglia:Yeah. Also, I guess that's a good question, or a good question to bring up, like, is 18 days reasonable?
00:35:42
Justin Traglia:Like, could this be less or more?
00:35:44
Justin Traglia:And it's just, like, a nice round number, 4096 epochs.
00:35:57
Justin Traglia:Review that in the PR.
00:35:59
Justin Traglia:I guess the only other…
00:36:01
Francesco:Sorry, maybe just one thing to say here is just to say, like, why do we even have this number? Because in principle, like, builders are not actually state, and you could think that they could exit immediately. So just for, you know, other people, they maybe didn't, like, read the whole discussion, the purpose of this exit period.
00:36:17
Francesco:is mostly to… Basically, Put at least some cost to someone just depositing a bunch of
00:36:27
Francesco:stake and then withdrawing it, like, to kind of just blow up the stake, which, I mean, in part, that's mitigated by the… if we have this reusing of the indices, that somewhat mitigates it.
00:36:37
Francesco:But still, like, you could still, I don't know, deposit, like, 100,000 ETH in, like, one ETH increments, and just create, like, 100,000 indices, which may or may not be reused.
00:36:48
Francesco:And kind of permanently… Potentially pollute the state.
00:36:52
Francesco:And so at least this puts, like, some cost that you can just immediately withdraw it, and just have loaded the state, for, like, you know, one day of depositing and withdrawing. But it's not clear that this is the best way to do this, or, you know, this number is kind of…
00:37:06
Francesco:yeah, just pulled out of a hat, so I don't know. It feels like this is something that maybe we should still… I mean, it's fine for it to be like that, but…
00:37:14
Francesco:Keep it in mind, this purpose, maybe it's still worth discussing, like, is this actually the best way to do this? And, you know, otherwise, what could we do?
00:37:22
Justin Traglia:Yep, and worth mentioning that this is possible with validators today as well.
00:37:27
Justin Traglia:You just send one ETH to the deposit contract, and it would create the validator indexey and keep it in the state.
00:37:37
Justin Traglia:How do people feel about this? Clients, Debs?
00:37:56
Justin Traglia:There was one other open question, I suppose. A comment from Mikhail.
00:38:04
Justin Traglia:About whether or not we should add,
00:38:08
Justin Traglia:Check prior withdrawals in the builder's… in the builder withdrawals loop.
00:38:13
Justin Traglia:I was arguing that… It's unnecessary, because, like, it's impossible that… Wow.
00:38:22
Justin Traglia:Their balance would be lower than the expected amount.
00:38:25
Justin Traglia:And, I've read the entire argument, but he's suggesting we add it. If you have an opinion on this, please comment on the PR.
00:38:44
Justin Traglia:I think that's it. Maybe, Francesco, am I missing anything?
00:38:52
Francesco:Not that I can think of right now. About the point from before, I just wanted to add, I think, one difference with the validator loading thing is that
00:39:03
Francesco:I think, if I remember correctly, like, you can't withdraw validators unless it's become active first, so you do need to deposit… like, you can blow the state with one ETH, but if you do want to get it out, you have to first deposit another 31 ETH.
00:39:17
Francesco:So that makes it a bit, like, at least if you want to get the money out, you will need, like, more of a… more of a budget to make this attack. But yeah, it's not like…
00:39:26
Francesco:Fundamentally different, I guess.
00:39:29
Justin Traglia:No, I forgot about that, you are correct.
00:39:33
Francesco:But yeah, other than this, I'm not sure, I don't have something else in mind.
00:39:45
Francesco:Actually, sorry, Lee, I want one more thing. Let me just say… I mentioned this on Discord, but just in case to say it here, so I think…
00:39:51
Francesco:Most of the four-choice pack.
00:39:53
Francesco:is what it is, and it's gonna stay how it is. I mean, of course, you know, people are welcome to review and point out problems, but, like, at least I wouldn't expect it to…
00:40:02
Francesco:to change greatly. It's been like that for a while. There is some sort of, like, things around the edges that I do plan to change, and yeah, someone asked me to link the changes today. I didn't get to that yet, but it's somewhere on Discord, I'll link to it after.
00:40:18
Francesco:the call. They're kind of old, so it's… yeah, I think they still pretty much…
00:40:23
Francesco:like, the fortress pack hasn't changed, so it's still gonna make sense, but things around it have changed. But yeah, it's more stuff around, let's say, edge cases of the trustless payment stuff.
00:40:36
Francesco:But at least the main, you know, get head and, how the, basically Block 3 works with payloads and all this stuff, like, should stay as is. And most of, also, pretty much all, yeah, most of the stuff around,
00:40:51
Francesco:how do you use the PTC, and, like, all these things are changing… are the same, just what should change is…
00:40:57
Francesco:some things around, like, what exactly do proposers do, and a little bit of, like, how a testers interact with this, but yeah, I would say don't worry about it too much. Just, like, maybe don't…
00:41:09
Francesco:You know, maybe think too much yet about the defined details of this interaction, because some things will… will…
00:41:16
Francesco:yeah, will change in this, in this PR. And, I mean, yeah, I can also, like, I can link to the discussion that existed about this before, where it's already kind of explained why these changes are, and yeah, what the purpose is.
00:41:38
Justin Traglia:There is one more open question, I suppose. It's about whether or not a builder should have a withdrawable epoch field.
00:41:44
Justin Traglia:personally, I don't think this makes sense, but again, please.
00:41:51
Justin Traglia:I'll share link, one second, sorry.
00:41:58
Justin Traglia:I think a builder… sorry, I'm quoting Kyle here. I think a builder should also have a withdrawable epoch. Once the exit epoch is reached, the builder becomes inactive, cannot bid, and then until withdrawable epoch, the balance is frozen on the beacon chain.
00:42:11
Justin Traglia:Without that… without that freeze, the DOS protection isn't as strong as it can be.
00:42:17
Justin Traglia:And I stood something like,
00:42:21
Justin Traglia:The builder can't submit a bid if it's initiated an exit, which is sort of a freeze. So, should be the same thing.
00:42:36
Justin Traglia:For that PR, that's all. Seems like there's support, so if…
00:42:41
Justin Traglia:If you have time, please review the PR, approve it if you agree. If there's a sufficient number of approvals, I'll merge it.
00:42:49
Justin Traglia:I still do need to make the withdrawal request versus voluntary exit change, but I can do that, like, probably in 20 minutes, like, after this breakout call.
00:43:00
Justin Traglia:And then, yeah, after these PRs get merged, I'll make a release.
00:43:05
Justin Traglia:I can do that just whenever… whenever it's ready, pretty much.
00:43:12
Justin Traglia:That's all of the planned agenda items. Is there any other topics?
00:43:17
Justin Traglia:People want to bring up.
00:43:27
Bharath:we do have, like… like, I've been working on the initial, like, builder API specs, but…
00:43:33
Bharath:But yeah, it's… it's in… I think it's in, like, a decent chip for a review, but I believe, like, people can start reviewing it after the…
00:43:42
Bharath:stake builder's PR gets merged, because there's some dependencies with that, especially the builder index and stuff, so…
00:43:49
Bharath:Yeah, but just, like, want to put that out, like…
00:44:12
Justin Traglia:Okay, let's end the call, then. Happy holidays, everyone. Enjoy the time off, and see you at ACDT in 2026.
00:44:31
Justin Traglia:Alright, bye, everyone.
00:44:32
Enrico Del Fante (tbenr):I'll…

Chat Logs

00:11:42
Justin Traglia:Also sorry, forgot to share the agenda: https://github.com/ethereum/pm/issues/1835
00:12:22
terence:+1 im confused what the request is
00:14:31
Justin Traglia:Is this something we need to standardize/specify?
00:17:42
Justin Traglia:https://github.com/ethereum/consensus-specs/pull/4777
00:22:08
Justin Traglia:https://github.com/ethereum/consensus-specs/pull/4792
00:24:15
Francesco:Does it matter if the increase is high? The expected usage of this is more just a fallback
00:25:00
Francesco:Yeah that’s what I mean, I wouldn’t expect high-frequency bidding to happen there
00:25:12
Francesco:Replying to "Yeah that’s what I m..." And if there’s a case when bidding must happen through p2p, I guess we take the hit
00:26:31
Justin Traglia:https://github.com/ethereum/consensus-specs/pull/4788
00:27:37
Lorenzo:strongly in favour from the builder side
00:28:26
nflaig:just deposit 1 ETH if you want that
00:28:52
Francesco:And anyone could now put down 1 ETH and become a builder
00:30:16
Francesco:Hopefully client teams can run 1 ETH builders 👀
00:30:28
Francesco:Replying to "Hopefully client tea..." At least Potuz lol
00:30:39
Colin Kelly:For the X% greater than the previous bid, are block builders fine with having to potentially "cancel" prior blocks by submitting a higher bid?
00:31:12
Lorenzo:Replying to "For the X% greater..." Yes that's expected
00:31:53
Colin Kelly:Replying to "For the X% greater..." oh I'm surprised they're fine with it. But thats great then.
00:32:27
Lorenzo:Replying to "For the X% greater..." Unless I'm misunderstanding your question, this is exactly what happens every time you bid higher no?
00:32:37
Francesco:@Justin Traglia could you summarize open questions on the PR, if any?
00:32:45
Justin Traglia:Replying to "@Justin Traglia coul..." Yes
00:34:38
Justin Traglia:https://github.com/ethereum/consensus-specs/pull/4788#discussion_r2629133388
00:35:07
Francesco:Builder exits take 18 days, so not sure if that really counts as “sensitive to be in sync"
00:36:10
NC:It really depends how much this p2p bids mechanism is used if we need to have pubkey/index cache for builder
00:37:24
Colin Kelly:Replying to "For the X% greater..." Oh some builders exposed to CEX txs might need to quickly remove the CEX txs from their blocks if the tx is no longer wanted by the CEXs. And since the block no longer contains the CEXs its at a much lower value.
00:38:01
Justin Traglia:https://github.com/ethereum/consensus-specs/pull/4788#discussion_r2634599814
00:39:21
Lorenzo:Replying to "For the X% greater..." I see, but the issue is that actual cancels would not be enforceable anyways in p2p. Since there's no way to invalidate your prior bid
00:41:56
Justin Traglia:https://github.com/ethereum/consensus-specs/pull/4788#discussion_r2622901736
00:43:29
Bharath:https://github.com/ethereum/builder-specs/pull/138

Summary

8 highlights · 4 action itemsExperimental

organizational

  • Final EPBS breakout call; discussions move to ACDT in 202600:04:06

client updates

  • PRISM awaiting state builder PR merge to continue implementation00:04:48
  • Lighthouse merged containers branch into unstable; major milestone achieved00:05:24

protocol changes

  • Proposer preferences gossip topic PR ready for review and merge00:17:42
  • Bid forwarding threshold (3% minimum increase) proposed for DOS prevention00:22:08
  • Non-validator builders: 1 ETH deposit, no validator duties, separate indices00:26:31
  • Builder index reuse may complicate pubkey-to-index caching across clients00:34:38
  • 18-day builder exit period prevents state bloat from rapid deposit/withdraw cycles00:39:04

Decisions

  • Builders must wait one epoch after activation to submit bids00:16:10
  • Builders use voluntary exits instead of withdrawal requests for simplicity00:33:29

Action Items

  • All client teams: Review proposer preferences PR (4777) for gossip-based fee recipient/gas limit sharing00:18:11
  • All client teams and builders: Review bid forwarding threshold PR (4792) and comment on appropriate percentage00:26:11
  • All client teams: Review non-validator builders PR (4788); comment on open questions00:32:45
  • All teams: Review builder API specs PR after staked builders PR merges00:43:29

Targets

  • Next week - New consensus-specs release after current PRs merge00:04:22