SSZ Transactions Breakout #3
SSZ Breakout · 24 Jul 2026 · 30:58
SSZ Transactions Breakout #3, held on 24 July 2026. These calls cover using SSZ, the serialization format Ethereum's consensus layer uses, in more places across the protocol, including transactions and the Engine API. An SSZ model was being added to the existing execution fixtures, and a minimal list of non-engine methods to expose on the engine port was emerging: eth_syncing, eth_getBlockByNumber, eth_getBlockByHash and eth_chainId.
Speakers
Topics
From SSZ Breakout, hosted by Ethereum Foundation.
Transcript
Justin Traglia: Good morning.
Tamaghna Choudhuri: GM, GM, how are you doing? How's it cold?
Justin Traglia: I'm doing fine. I think I'm getting, better. I don't think I'm as sick anymore. I was coughing a bunch. Sneezing a bunch, yesterday. Or, sorry. Two days ago, and yesterday was better. Today, I think I'll be fine.
Tamaghna Choudhuri: Oh, that's right.
Justin Traglia: Yep.
Tamaghna Choudhuri: I guess I'll stop then. Welcome to the Assisted Engine API Breakout Number 3. So… The agenda is pretty light today. I have dropped it in the… So, I'll begin with my update. So, from the testing side, we… I have… What have this PR, and it's currently in review. Sold. After this, the idea would be, like, I'd be adding the new SSZ model into all of the existing execution, let's say the fixtures, and then we can… we'll use the hasht to verify if anything changes in the existing fixtures, and then we can have
a release with them, maybe. The next item on the agenda would be, about the pop-up sync, but, like, I… does anyone have any updates or any views of the TopUpSync? Also, something that, came up was, how would we like to include top-up sync? Would that be made in EIP, and then we'd propose it for inclusion, or would we go the… just the route of adding the… requested engine endpoint, and do that. So, that's the question.
Dustin Brody: Right, I… I think that as long as it ended up being, sort of, in a meaningful way, part of the Engine API, per se, part of that. Package of functionality. And that, that's so that, a EL could simply assume an EL rest, Engine API, implementing EL supported it. I mean, it would be the same way Both choice updated, or any of the… any of the others. So, I mean, at that point, logistically, how to navigate that through the spec process, EIPs, or… Including it in this, I… I think, discussed.
Tamaghna Choudhuri: And then I guess, like, maybe we can get started on adding the EIP, and, like, I'd also like to have, if any other clients have any, let's say, discussions regarding the top-of-sync or the engine the new engine endpoint. Morris is not here today, but, like, if any other person has anything, maybe you can… you guys can bring it up. And also, a follow-up question to this would be, like, in the previous call, we had asked, like, which exa- which non-engine methods would be exposed on the engine port, and Maurice had already asked it in yesterday's call, but, like. I guess, Jun has already dropped their viewpoint, Maybe if any other client… Lighthouse will also drop, if any other client has any use points on this.
Dustin Brody: I mean… I'm not sure. So, Nimbus, it looks like, uses CHAINID and syncing at this point, and I can't tell that it uses anything else other than mine, aside from the chain namespace ones.
Tamaghna Choudhuri: Oh, alright, then, I guess this is the list that's coming up, like, the minimal list, let's say, common list that everybody uses, and then I guess maybe we can give it a couple more weeks and then finalize on this, and… Other than that, anything else, like, the floor is open, like, I don't have much on the agenda, maybe it can be a… Quick call, if any other person has any other questions or anything to discuss, maybe the floor is open.
Dustin Brody: Yeah, so one, one, another, or, yeah, a question for the, the… HTTP, Point. So, so the, the, currently, it requires HTTP2, Which is… and it gives a reason for this, right? And it's in the rationale, head of wine blocking. Effectively. how… I mean… I guess I'd like to open that as a, as a sort of… as a potential… Hmm… I guess it's not that clear to me how much one… the head of line blocking… I guess, is there… maybe I'll phrase it this way. How… how empirically… confirmed, is it an issue that head of blind blocking matters in this particular context, where there's intrinsically a kind of A serialness to a lot of the… EPI, like, like…
It will… and anything that changes the head, or introduces a new block and things like this can invalidate other responses along the way.
Tamaghna Choudhuri: That's a good question, do the other coins have any views on this? But, like, yeah, like, this is a good point to think about. Hmm… June… Do you have anything to say, or… Anyone else? Or I guess this will be a question is… People don't have an EV… Answers to this, maybe we can carry forward it to the next call, or… So that's what it seems like.
Jun Song: I think, Casey from Prysm, is… Pro with the HTTP2, but I think I need to, talk with Casey to align, as a Prysm team, so, yeah, I can bring up at the next call.
Tamaghna Choudhuri: What are the views from Lighthouse, or… Never mind. Dustin, could you please repeat,
Dustin Brody: Yeah, sure. The question is, given that, the… And I will just go copy-paste, or a little bit of… More fit? We'll find out. Okay, here's the snippet from the… from the PR. And, and sort of saying, why… why HTTP? It's ahead of YMBlock? So, the question is. given that a lot of the nature of the Engine API, I mean. RPC, SSE, conceptually, what it does is it's a stateful protocol which… which changes things, which sort of changes the EL state, each time Often, when it's invoked, let's say. is… how much value, I mean, has… or how empirical is the value, of… of the HTTP2, sort of. Avoidance of head of wine walking.
Nimbus. Is this benchmarked? Are there specific… Scenarios people have in mind.
Jun Song: So I guess, Nimb doesn't support HTTP2 at this moment, so that's the… reason you bring up, right?
Dustin Brody: Well, ni- oh, okay. Sure, there's a motivation here, yeah, but also… I guess there's both a principled motivation and, yes, a practical one. Well, I mean, Nimb the language, I mean, I guess it's pedantic. Nimb the language supports whatever, so general language. The Nimb libraries we use, indeed, do not support HTTP2 right now. So… If it's necessary, it's necessary, and we can book it. implementing it, of course. But part of the kind of trying to hash out a spec is figuring out, I mean, what is a value add because it adds value, and what is a value add because people think it Looks nice, or something. And… because this is the… essentially, maybe I'll frame it this way. My concern is a little bit that this is a completely generic pick for HTTP2.
the same thing, like, it works great on web browsers, because web browsers fetch a thousand different JavaScript and CSS files and… Images for… for a website. It's a perfect use case. This is not typically the use case that happens with the EnginePI. And I'm not super convinced that it carries over.
Alexey Osipov: It seems like, we, have a lot of benchmarks which is based on measuring HTTP responses. We could try easily to, Like… To, to compare bus transports. And I guess even in the case of Ethereum, it might be indeed useful to have HTTP, too.
Dustin Brody: Yeah, and it might be useful, and I guess, ultimately, what I'm looking for is kind of a quantitative basis for this. Rather than the kind of hand-waviness that the… That the spec currently includes. But yeah, benchmarks would be… would be great.
Alexey Osipov: Would you please raise this question, in the chats? Maybe EL or maybe common networking channel, or somewhere else, because, as far as I remember, Marius mentioned that in the SSZ transport, like… Specification, and, maybe, he will bring very solid arguments.
Dustin Brody: which channel… you mentioned 2 or 3 channels, or sorry, which, like, the networking channel, or EL networking, or which ones, or… yeah, sorry.
Alexey Osipov: Let me read in the chat, I will check. Maybe just the SS EVM channel.
Dustin Brody: Okay. Right. There is an SS… like.
Jun Song: Yep, so, I believe a benchmark should be helpful. So, as far as I know, most of the other languages, can be natively, support HTTP2, so… if there's, no good reason to, downgrade or choose HTTP one point, yeah, so I think the number matters, for here to decide.
Dustin Brody: Yeah, sure.
Tamaghna Choudhuri: It's helpful.
Dustin Brody: is helpful. Oh, sorry, go ahead, sorry.
Tamaghna Choudhuri: Yeah, Sugu, you can.
Dustin Brody: I just think, if it's helpful, it's helpful. I mean, that's… I mean, if it has utility, it has utility, that's fine, but I… actually measuring it. Anyway, sorry, yeah, Tamaghna.
Tamaghna Choudhuri: Yeah, I was going to say the exact same thing, like, it would be best to, let's say, measure it, and let's see… let's get the conversation started regarding the benchmarking. I… let me see who does it. If not, maybe I can pick this up. Other than that, any other things maybe we'd like to discuss? Anything else? Like, the benchmarking comes to mind. Benchmarking for the HTTP2, HTTP 1.1 comes to mind. Anything other than that, I'd like to add to the next course agenda, maybe also reviewing the, list that Marius wanted, and yeah, that seems all.
Jun Song: So I have just one small question about pop-up sync. So, I think the concept is so cool, and From my understanding, we only, need to add one more endpoint that provides from the EL that, hey, my, latest BlockNumber is here, and, for that BlockNumber, I have state, or I don't have state. Am I understanding correctly?
Dustin Brody: Approximately, yeah. I mean, I think one of the questions, and I've just tried… discussed this also with Yasek, who is, I know Tamaghna posted this somewhere else as well, I think, but, this is the pop-up saying. hack I'm DNS, or I'm sure you've seen it, okay. Anyway, but… and so, anyway, him as author, right? So when I mentioned, you know, his… the salience here, I've also… So anyway, approximately yes. The question, is it state, or is it block? And I think… and this is something I'm… one or… one or the other, at least, yes. That is… that… that is… The question is that the… that… are the ELs going to be in a position where they have blocks that can be synced from? Well, let's say they have the first 1,000 blocks in the chain.
And, you know, notionally, like, chains are much bigger, I guess. But… and then… but they don't really have the state for any of those blocks, and they've never bothered to build it. In theory, for syncing that you can argue that isn't all that important, and yet I think, Marius, brought up, before, in the previous call, that there is some relevance here, because the ELs have to be able to know that there's some validity to the box, and if they don't have a state, then there has to be some other way to determine some minimum validity, and these ways exist, but it becomes a different sort of security model at some level. So, yeah, that… So, approx… yes, basically.
I also want to actually highlight… I know this is at a… okay, this was the… the root cause was a Nimbus EL bug, and sort of not super relevant overall to this, but it wasn't getting peers in one of the dev nets. And DevNet 7. And the one EL, or sorry, the one CL which could sync it, actually, Teku turned out to be doing something Very, very similar. We didn't really look into exactly what the mechanics on the Teku side was, but, but it was able to work around this. So this was actually a really interesting, like, in-the-wild case of this happening, where Nimbus EL was, again, its own bug, not getting peers, and yet was able to participate in the network in the end, because Teku, fed it the blocks
in the correct order. Like, it didn't just do optimistic sync like a lot of clients will do. So… and so it actually… that was an accidental demonstration of the EL as library approach. And in a context… I know I talked before about, oh, unified client, this or that. Obviously not… I mean, this is a pre-existing, separate CLs and ELs, and it's still useful.
Tamaghna Choudhuri: Yeah, I actually think that, yeah, like, if this has something that has already happened, then this already does show that how valuable this can be, as its usefulness has already been demonstrated, and I guess adding it would just be, Pretty good to, with there. Any other questions? Or else then, I guess we can call it a close. Maybe not, I'll leave the floor for a minute, and then we can call it a day.
Justin Traglia: So I have a question, actually. Do you guys… or, how do you guys feel about moving the call to an earlier time? That works better for Asia and Europe. I think… I think I'm the only one here that joins from the US, and… I'm not, like, an important… person to join. I can always just follow up afterwards.
Tamaghna Choudhuri: So I guess, how early do we want to move the call? An hour or two from now, what's… what's the take?
Justin Traglia: I was… I was thinking, like, 4 hours or something, just, maybe reach out to Marius and see what time works for him, because I would like for him to be able to join the call, too, and this time. Well, sorry, this time slot, he has conflicts. It's also just late for you guys.
Tamaghna Choudhuri: Alright, alright, then I'll maybe reach out to Marius, and also I'll ask a general question in the chat, like, what would be the better timing? Sure. That, that just seems good, Moving it 4 hours does seem fine with me, and… Oh. Sure.
Justin Traglia: Yeah, now it's just, like, a rough, like, suggestion, like… It could be… Yeah, even more than that. Like, 6 hours. Whatever you guys think is best.
Tamaghna Choudhuri: Yep, all right, all that, then maybe we can take that offline, and sure, definitely we can move it to a… previous time, then I guess it's a day. Bye guys, thank you for coming, and see you on the next call.
Jun Song: Bye, cheers.
Justin Traglia: Hi, everyone.
Dustin Brody: Bye.
Transcript adapted from ethereum/pm, CC BY-SA 3.0.