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

ePBS Breakout #024

2025-09-26 Agenda: #1735 canonical JSON

Transcript

00:02:57
Justin Traglia:Hi everyone. Welcome to EPBS Breakout Call 24.
00:03:02
Justin Traglia:Let me share the agenda in the chat real quick.
00:03:10
Justin Traglia:I think I'd like to start by announcing that there is a new, specs release, spec release, Beta.0, which has a bunch of updates for EPBS.
00:03:21
Justin Traglia:In the agenda, I've listed open PRs and merged PRs. Many of the merged PRs are included in this release.
00:03:31
Justin Traglia:Terrence, would you like to go over some of the open, testing PRs that you have for EPBS, and, like, what the status is of those?
00:03:41
terence:Yeah, so, I think the only one we don't have in block operation is process withdraw.
00:03:51
terence:And frankly, I was a bit hesitant to work on it a couple weeks ago because of… I wasn't sure if there would be changes or…
00:03:59
terence:on the, yet expected withdrawal function, and that function is pretty convoluted. Right now, there, there's a four, there's three, four, there's three, for loops within the same function, so I wasn't sure if there's gonna be any refactorial changes to that, but sounds like there's gonna be no change to that. Francesco mentioned that.
00:04:18
terence:And, so I can continue working on it, or anyone is willing to free to pick this up. It's a really…
00:04:26
terence:difficult unit tests to write. I have to be very careful.
00:04:30
terence:Given all the conditions, because there is, because besides builder withdrawal, there's also partial withdrawal.
00:04:37
terence:And then there's process withdraw right after. So there's edge cases you can think of, like, what happens if the balance run out, blah blah blah blah blah, right? So, yeah, I'm happy to continue working on it, but anyone more than free to pick this up.
00:04:51
terence:And 4 Choice Pass is another one that's,
00:04:55
terence:I wouldn't say it's low priority, but, like, I'd rather focus on prism work, implementation for DeathNet Zero than the for-sure test, but that's not some… but that's something that we should not neglect. It's also very important, given the…
00:05:11
terence:edge cases, that's because of… now you have this notion of anti-slaw. So, when a… when a proposal builds on the previous block.
00:05:23
terence:when a proposal builds on the head, there is, like, this option of, like, what is the root and what is the block hash, basically. And that's… and that also makes for choice tests a little tricky. You also have to consider the PTC status as well.
00:05:39
terence:And, yeah, so I have… last time I made sure I have a HackMD, I also shared that with all the edge cases. I want feedback, but I haven't gotten the feedback. And that's something that I think, like,
00:05:51
terence:Definitely, like, Mikel or, like, Roberto from the EF to also take a look as well, because they are the experts on that, yeah. So those are the two open ones.
00:06:02
terence:Yeah, and but right now, I'm focusing mostly on Prism Definite Zero work.
00:06:08
Justin Traglia:Oh, cool. Yeah, I forgot about the refactoring of process withdrawals. I'll need to talk with Stokes about whether or not he wants to do that soon, sooner or later.
00:06:19
Justin Traglia:And, I agree that focusing on PRISM implementation for DevNet Zero is probably a higher priority than the fork choice test at the moment.
00:06:30
Justin Traglia:Cool, thank you. And I guess this leads well into implementation updates from clients.
00:06:36
Justin Traglia:Terrence, again, at… what are the… what's the status?
00:06:39
terence:Yeah, so I'm just implementing Definite Zero. I have, like, a few PRs out, the porters need to review that, and, yeah, so, I mean, I don't know if we're on track, it's kind of too early to tell for our end of October, but, yeah, we're definitely working very hard to get there. So, yeah, so we're implementing everything that's Beta Zero right now.
00:07:02
terence:And, yeah, I think in two weeks we'll… I think in two weeks, we'll have a better idea of where we are.
00:07:11
Justin Traglia:Awesome, thank you.
00:07:12
Justin Traglia:I don't think there's anyone from Lighthouse here, is there?
00:07:18
Justin Traglia:Alright, in that case, Techyu, Stefan, what's the… do you have any status updates for your.
00:07:26
Stefan Bratanov:Yeah, sure. So… Yeah, we've done all the containers for Beta Zero.
00:07:32
Stefan Bratanov:And, most of the blog posting is done.
00:07:38
Stefan Bratanov:Passing the reference tests, most of them,
00:07:43
Stefan Bratanov:But yeah, there's still quite a lot of work, so…
00:07:47
Stefan Bratanov:In… I think in two weeks also, we'll have, more updates.
00:07:57
Justin Traglia:I don't think there's anyone from Nimbus here.
00:08:00
Justin Traglia:So Lodestar, Anka?
00:08:07
nflaig:We did a bunch of preparations, mostly, like, got the BPS changes done, was quite a big refactoring,
00:08:16
nflaig:In terms of EPBS stuff, we did the containers, what else? All the constants, a lot of boiler blading.
00:08:25
nflaig:I'm not sure if NC has more updates.
00:08:34
NC:No, I'm just fixing up, some of the types, in the lowest star code base.
00:08:41
NC:But yeah, it's still pretty early for us.
00:08:45
Justin Traglia:Okay. Yep, that seems… that's fine.
00:08:48
Justin Traglia:And then, I guess Grantine, do you guys have any status updates?
00:08:53
Justin Traglia:For your implementation?
00:08:55
Subhasish | Grandine(EPF):Yeah, so, mostly, the changes have been made, related to a beacon chain, so, I have, I've worked on, the, implementing the containers, and then the helper function, functions related to it.
00:09:12
Subhasish | Grandine(EPF):Apart from that, I'm, making some progress related to, the state transition functions.
00:09:20
Subhasish | Grandine(EPF):I think, the particular, one that was taken out of process block was giving a bit of trouble, but, yeah. And, we're,
00:09:31
Subhasish | Grandine(EPF):We're looking forward to, making sense of the folk choice changes, because, it's, our own implementation is, a bit different from others, so, yeah, we're working on that.
00:09:48
Justin Traglia:Great, great, thank you.
00:09:52
Justin Traglia:Yeah, I think the next two weeks will be… or in two weeks will be further along, and it'll be more interesting. And, welcome, POTUS, no worries about being late.
00:10:01
Justin Traglia:Next up on the agenda is just to reiterate… reiterate plans for EPMS DevNet Zero. It will be based on the Beta Zero specifications, and I've added a note here.
00:10:13
Justin Traglia:from Barnabas to, provide an ePBS-devnet-0 branch for ETH PandaOps, whenever you can, but preferably by the end of October.
00:10:29
Justin Traglia:Okay, moving on one more time,
00:10:32
Justin Traglia:There was a question in the EPBS Discord from Stefan about whether or not Datacom's headcar needed a slot field. Are there any updates on that?
00:10:44
Stefan Bratanov:Not really, it was just an observation, so in Datacom's sidecar object, in TechCo, we have a get slot, which basically gets the slot from the header right now, and it's used in
00:10:55
Stefan Bratanov:Quite a few places.
00:10:57
Stefan Bratanov:around tests and other places, so I'm not sure what the impact is yet for us,
00:11:04
Stefan Bratanov:But I think for now, it's okay to just ignore that and probably come back to it later. I think for DevNet0,
00:11:11
Stefan Bratanov:We're gonna run without any blobs anyways, so…
00:11:15
Stefan Bratanov:No, not a big issue for now.
00:11:20
Potuz:Yeah, actually, something that I raised a long time ago, but we still haven't had time to look into.
00:11:28
Potuz:I'm worried about the code from Fulu. When we designed the PBS, and when we implemented it, it was on top of Electra. And in Fusaka, the…
00:11:39
Potuz:I mean, we have all of these blobs that… with the KCG commitments, that are coming in the block.
00:11:46
Potuz:And the KCG commitments are no longer coming from the block… in the block. In the spec, this is not a problem, because we never need to access them. But in implementation, it seems to me… I looked briefly in PRISM, and it seems to me that it's very insidious, the fact that we look for the KCG commitments in the PICOM block.
00:12:06
Potuz:And this is not going to work on EPBS, so I suspect that this is also going to be a big pain when trying to rebase,
00:12:20
Stefan Bratanov:Oh yeah, for sure.
00:12:22
Stefan Bratanov:I think we've had the same…
00:12:24
Stefan Bratanov:issue. I mean, not an issue, but I remember when I did the EPBS interrupt for Teco, I changed it a lot of places.
00:12:32
Stefan Bratanov:To… Get it from the envelope rather than the block.
00:12:37
Potuz:Right, we could do this for blobs on Electra, because we already had it on Develop, but then all of the Fusaka branch, all of the Fusaka implementation was being carried in a different branch, which now merged into Develop.
00:12:50
Potuz:And changing all of that to get… to take the ACG commitments out of the block, I don't know how bad that's gonna be. Terrence probably has already worked that out, so I'm probably talking out of an empty statement. Perhaps Terrence already solved this.
00:13:12
Justin Traglia:Terrence says, haven't solved it yet.
00:13:15
Justin Traglia:Okay, interesting, we can follow up on that.
00:13:22
Justin Traglia:Okay, anything else about the data column sidecar, structure? I guess we can figure this out, if it's… if it's necessary to have the slot field and include that in the next release, and then for the next DevNet.
00:13:39
Justin Traglia:Okay, I guess there's one other item on the agenda, which is a note from POTUS about
00:13:46
Justin Traglia:The fact that it's impossible to keep latest execution payload header in the beacon state.
00:13:53
Justin Traglia:And POTUS, do you want to talk any… any more about that?
00:13:56
Potuz:This is just a notice for people that are implementing, if you're looking at this, the… well, the latest release already has this. It's a… it was a PR by Francesco.
00:14:04
Potuz:We had this discussion with 3 different options. Rename only the latest payload header to being latest payload bid. Then there was an option that Terrence implemented that was move the payload bid as a new member, and make the payload header empty.
00:14:24
Potuz:And then there was this other one that was trying to keep the payload header with all of the information, because having an empty one didn't make any sense, and I agree. We… everyone agreed that having an empty one didn't make any sense, so we say, okay, let's… last time we had a breakout, we agreed on keeping the full payload header, but it's still
00:14:43
Potuz:That was a stupid decision, because, the payload header commits to the root, to the stage root, which cannot be known before, so there's a circle… a circular dependency there, so we cannot really have the latest payload header with the current functionality.
00:15:02
Potuz:Therefore, the only two options are having an empty one, or just
00:15:08
Potuz:reusing the position, and we decided to just reuse the position. So this is more or less… this is more a heads up for Lodestar, because Lodestar complained about removing fields. This is changing the payload header by a different one, which is the bid. If this is too much of a problem to Lodestar, we can see what to do.
00:15:32
Justin Traglia:Cool, thank you. And, NC, thumbs up.
00:15:37
Justin Traglia:I guess that's it for the agenda. Is there anything else that anyone else would want to talk about?
00:15:46
Potuz:There was a comment today about SSN.
00:15:54
NC:Yeah, I was just trying to run, the Beta Zeros, as a Z static test.
00:16:03
NC:I saw there is a, fork choice node, container in the static test. I'm not sure if that's intentional.
00:16:17
Justin Traglia:But I can double check.
00:16:19
Potuz:Yeah, it was a good catch. I think it's probably… we need to remove it now. The only place where I can see it might be useful to have it as an SSS object is in the Beacon API when we dumped the fork choice.
00:16:31
Potuz:But currently, that's not even specified, so…
00:16:38
Justin Traglia:Yeah, we can… I think we can convert it to a data class.
00:16:41
Justin Traglia:So that it's not a SSC object.
00:16:45
Justin Traglia:I can look into it.
00:17:01
Potuz:The race is on, we already are merging to develop.
00:17:04
Justin Traglia:Yeah, absolutely.
00:17:05
Potuz:Now we need to… we're racing to see who implements first.
00:17:12
Stefan Bratanov:Is there a price, or…
00:17:19
Stefan Bratanov:Yeah, fair enough.
00:17:25
Justin Traglia:Okay, I'll let you guys get back to developing then.
00:17:29
Justin Traglia:I'll talk to you guys in 2 weeks.
00:17:33
Potuz:Thank you, guys, I'm sorry for being so late.

Chat Logs

00:03:07
Justin Traglia:https://github.com/ethereum/pm/issues/1735
00:13:11
terence:naaa havne't solved it yet

Summary

11 highlights · 2 action itemsExperimental

specifications and testing

  • v1.6.0-beta.0 spec release published with major EPBS updates00:03:10
  • Process withdrawals tests blocked; function complexity concerns raised00:03:41
  • Fork choice tests delayed; anti-slot edge cases documented in HackMD00:04:51
  • Fusaka KZG commitments access pattern incompatible with EPBS implementation00:11:20
  • Latest execution payload header removed; replaced with payload bid due to circular dependency00:15:08

implementation progress

  • Prism: Implementing beta.0; status assessment in two weeks00:06:39
  • Teku: Containers and block processing complete; passing reference tests00:07:26
  • Lodestar: BPS refactoring done; containers and constants implemented00:08:07
  • Grandine: Beacon chain changes complete; fork choice adaptation in progress00:09:12

devnet planning

  • DevNet-0 based on v1.6.0-beta.0; ETH PandaOps branch due end of October00:10:13
  • DevNet-0 will run without blobs; DataColumnSidecar slot field not critical00:11:11

Decisions

  • Replaced latest_execution_payload_header with latest_execution_payload_bid to resolve circular dependency00:15:08

Action Items

  • All client teams: Provide epbs-devnet-0 branch to ETH PandaOps by end of October00:10:13
  • Justin Traglia: Convert fork-choice node from SSZ container to data class00:16:11

Targets

  • End of October - epbs-devnet-0 branch delivery to ETH PandaOps00:10:13
  • Two weeks - Next EPBS breakout call with status updates00:18:51