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

Fast Confirmation Rule #006

2026-04-14 Agenda: #1982 canonical JSON

Transcript

00:06:49
Will Corcoran:Alright, well, should we get started? Mikael,
00:06:53
Will Corcoran:Or maybe, Mercy, do you want to start with a… we normally go with client updates first. Do you just want to give us a lay of the land of where Grandine's at with things?
00:07:03
Mercy Boma Naps-Nkari:Yeah, so we've… we have, like, a PRR which implements FCR in gradients, so…
00:07:09
Mercy Boma Naps-Nkari:it also has the validated end-to-end against Lodestar in a live devnet, and then…
00:07:15
Mercy Boma Naps-Nkari:Also the update on the specification side, which has to do with tightening the FFG conflict check.
00:07:21
Mercy Boma Naps-Nkari:for street inequality, and then, the division and community with safety adjustments, I've also, like, implemented it, which I ran a devnet which criticisms using low star grinding, and then gets… the two clients agreed on, the same, confirmed route, so…
00:07:41
Mercy Boma Naps-Nkari:So far, so good.
00:07:47
Will Corcoran:Good to hear. Any questions or blockers, with the rest of the implementation?
00:07:53
Mercy Boma Naps-Nkari:No, I think I'll just have to pick up, as we go on.
00:08:03
Will Corcoran:Mikhail, do you want to… I know that you've merged in a lot of work with the specs. I'm sure you've got a lot to provide updates on. I also know that you tend to have pretty good context on other client teams that might not be on the call.
00:08:19
Will Corcoran:Maybe just… do you want to give us a… An update from your perspective?
00:08:27
Mikhail Kalinin:Yeah, but yeah, first, just a question about Lodestar to Mercy, is it already in Lodestar's master, or is it, like, you run a branch with that implementation?
00:08:38
Mercy Boma Naps-Nkari:Yeah, there is a branch by NASA, it's still a drafts branch, I think. I had to, like, check it out and build a local image of it.
00:08:46
Mercy Boma Naps-Nkari:I was trying to build from, from Nimble's branch, but the Docker image, I was having issues with it, so I just had to, like, work with only Lodestar, the branch NAS I was working on, and then…
00:08:59
Mercy Boma Naps-Nkari:My own branch, also.
00:09:02
Mikhail Kalinin:I see, okay, thank you. Will, do you think we should, continue with… start with the spec?
00:09:09
Mikhail Kalinin:Or just share some client updates as well.
00:09:14
Will Corcoran:I think starting with the spec.
00:09:16
Will Corcoran:would be best. I think, yeah, that's probably where…
00:09:20
Will Corcoran:Being work that you've been doing directly, and then if there's any, like, other observations about client updates that you want to share, that'd be great, just to, like, help socialize, the status for everyone else.
00:09:34
Mikhail Kalinin:Alright, cool. So, on the spec side.
00:09:38
Mikhail Kalinin:I'll probably start from the end, from where we are, from the current status, and then we'll go through the recent changes that we had made to the spec.
00:09:49
Mikhail Kalinin:Just to, you know, announce them here.
00:09:54
Mikhail Kalinin:So, the status of the SPAC, it's on the final round of reviews, Now?
00:10:01
Mikhail Kalinin:And, we made a decision to…
00:10:06
Mikhail Kalinin:Yeah, there is no gloss support yet, in this spec, in the current… in this VR, and we decided to first merge this PR.
00:10:16
Mikhail Kalinin:And then come with, with another PR that actually will…
00:10:22
Mikhail Kalinin:Make bus confirmation gloss compatible.
00:10:25
Mikhail Kalinin:The reason for that is, that The clause… Implementation introduces some…
00:10:33
Mikhail Kalinin:Some backwards incompatible changes to the Fuoc Choice abstractions.
00:10:39
Mikhail Kalinin:So we need to sort this out in the first place, and then update fast confirmation rule.
00:10:46
Mikhail Kalinin:You know, to… to make it,
00:10:50
Mikhail Kalinin:Basically, work with those new abstractions.
00:10:53
Mikhail Kalinin:So that's the status of the spec, and yeah, let's probably go with…
00:11:01
Mikhail Kalinin:the recent changes, but I see a question from Barnabas.
00:11:12
Will Corcoran:But any reason why confirmation Byzantine threshold is a config and not a preset? Do we expect to tune this value in devnets, or should we assume that it's going to stay at 25 going forward?
00:11:26
Will Corcoran:In terms of the adversarial threshold.
00:11:29
Mikhail Kalinin:Yeah, actually, it's a configurable parameter, so the algorithm can work from, you know, with these thresholds, starting from 0 to up to 25%. The 25 is the max, the 0 is the main value.
00:11:45
Mikhail Kalinin:So… Theoretically, someone can actually override this config parameter.
00:11:52
Mikhail Kalinin:If that user, that consumer of the fast confirmation rule thinks that, you know.
00:12:00
Mikhail Kalinin:15% adversarial threshold is fine, or 10%, so…
00:12:04
Mikhail Kalinin:Yeah, and yeah, reducing this threshold affects safety, so you have a different assumption on the adversarial power, but also it improves,
00:12:15
Mikhail Kalinin:Liveness, in terms that the potential delay, potential confirmation delay, can be reduced with the lower threshold. So…
00:12:27
Mikhail Kalinin:That's why it's kept in, you know, in a config, rather than preset.
00:12:33
Mikhail Kalinin:All right, so… Quickly going over… The recent…
00:12:43
Mikhail Kalinin:Changes that we had made before, you know, since the last time.
00:12:48
Mikhail Kalinin:We had a call, so…
00:12:54
Mikhail Kalinin:Yeah, but test analysis is around 25, so we are quite conservative on that.
00:12:59
Mikhail Kalinin:And, yeah, we actually… Stick at 25, and, you know, like, when we are talk… speaking about delay.
00:13:07
Mikhail Kalinin:We also consider the 25 threshold.
00:13:13
Mikhail Kalinin:Like, we do analysis… delay… analysis of confirmation delay, so, yeah.
00:13:20
Mikhail Kalinin:All right, so the first… yeah, there is a number of changes, so I'll try to be quick.
00:13:26
Mikhail Kalinin:This one is, like, basically…
00:13:30
Mikhail Kalinin:Switching from strict, from greater or equal to one-third to strictly greater than one-third.
00:13:38
Mikhail Kalinin:And we'll no conflict and checkpoint be justified.
00:13:41
Mikhail Kalinin:That's the, like, the correct…
00:13:45
Mikhail Kalinin:Strictly greater is the correct one, the previous, like.
00:13:50
Mikhail Kalinin:computation, the previous comparison was just incorrect. The PR has a description on that.
00:13:56
Mikhail Kalinin:So… I don't know what to add to here, add here, so here is the other change.
00:14:04
Mikhail Kalinin:To the restart conditions, we previously used justified
00:14:11
Mikhail Kalinin:Justify Checkpoint eBook, so we used the,
00:14:16
Mikhail Kalinin:Justify each point observed at the end of the previous epoch as a starting point, or restarting point.
00:14:24
Mikhail Kalinin:And in one of conditions, we checked, the epoch of the checkpoint itself, But it could…
00:14:30
Mikhail Kalinin:But the block of that checkpoint could be from the epoch we go, if we have, like, an empty slot in the first slot of the epoch from which this checkpoint is.
00:14:40
Mikhail Kalinin:That could cause further issues, downstream issues, like with the…
00:14:45
Mikhail Kalinin:Well, actually, it could lead if, you know, if this is the case, and the block is from… not from the…
00:14:52
Mikhail Kalinin:Is older than the, Checkpoint epoch?
00:14:54
Mikhail Kalinin:Then we'll get a restart, like…
00:14:59
Mikhail Kalinin:sorry, fall back to finality at the next run of the fast confirmation rule. So, now we check, the epoch of the block itself to… to start from…
00:15:10
Mikhail Kalinin:Per merge, like, from… to have a stronger starting condition and not falling back.
00:15:19
Mikhail Kalinin:Yeah, the next one is, like, a small adjustment to the,
00:15:24
Mikhail Kalinin:Adjust committee weight, estimate, computation. It's… it used floor before, now we switched to seal.
00:15:32
Mikhail Kalinin:Because it makes more sense, basically.
00:15:36
Mikhail Kalinin:The next one is the, change.
00:15:40
Mikhail Kalinin:like… It's more… it's not a change to the algorithm, it's more a change to how the… the store
00:15:47
Mikhail Kalinin:is manage it. We introduced the fast confirmation store to actually Split to actually have a…
00:15:56
Mikhail Kalinin:Even less dependency, in the main spec.
00:16:00
Mikhail Kalinin:like, on the FCR, and vice versa, so FCR, like, this change.
00:16:05
Mikhail Kalinin:Makes no changes, introduces no variables to the store itself, to the folk tree store.
00:16:11
Mikhail Kalinin:Which decouples the spec, the fast confirmation spec, and just makes things cleaner.
00:16:18
Mikhail Kalinin:And implementations are free to… to do whatever they want, with the store, so they, yeah, can take this,
00:16:27
Mikhail Kalinin:path, or extend the store, the forkture store, either would work.
00:16:35
Mikhail Kalinin:Yeah, and the last bit of changes was about optimistic sync.
00:16:40
Mikhail Kalinin:We have this in the merge, it helps to sync a client, while EL is
00:16:48
Mikhail Kalinin:get… getting up to speed with the, head of Canonical Chain. And,
00:16:56
Mikhail Kalinin:Simply, simply… in simple words, we don't want to… confirm,
00:17:02
Mikhail Kalinin:a blog that was not yet validated by the EL.
00:17:07
Mikhail Kalinin:So, this PR, this last bit of changes, introduces, like, a notion of optimistic sync, and basically,
00:17:15
Mikhail Kalinin:Says that, do not, yeah, do not confirm a blog that hasn't yet been proved to be valid by the execution layer client.
00:17:24
Mikhail Kalinin:The CL spec is not aware of the Optimistic Sync, it's, like, a different thing. It's kind of a side.
00:17:31
Mikhail Kalinin:And, the main… the executable part of the fast confirmation rule spec is not aware of it as well, but, you know, this comment will help to…
00:17:40
Mikhail Kalinin:To pay attention to this,
00:17:43
Mikhail Kalinin:this part. So that's… that was the changes.
00:17:56
Will Corcoran:Nice work, Mikael. And if anyone's listening, yeah, all these,
00:18:01
Will Corcoran:PRs and links from the chat will show up in the forecast notes, and so you can find
00:18:07
Will Corcoran:all those individual PRs.
00:18:19
Mikhail Kalinin:Cool, and, yeah.
00:18:21
Mikhail Kalinin:Regarding the, other client updates,
00:18:25
Mikhail Kalinin:haven't Nimbus released their fast confirmation rule implementation?
00:18:33
Mikhail Kalinin:Let me share the link to the release, which has it. So it's, like, already a… Already in place
00:18:43
Mikhail Kalinin:So, Nimbus users can start… Benefiting from fast confirmations already.
00:18:50
Mikhail Kalinin:Which is great. Congratulations to Nimbus team.
00:19:10
Mikhail Kalinin:Also, I would like to encourage
00:19:15
Mikhail Kalinin:everyone who is interested to go to the PR.
00:19:20
Mikhail Kalinin:Probably find time to review it.
00:19:23
Mikhail Kalinin:We need more approvals.
00:19:25
Mikhail Kalinin:To get this… to get it merged, and more eyes on it now.
00:19:36
Mikhail Kalinin:And also, yeah, especially, specifically from client implementers as well, that'd be great.
00:19:42
Mikhail Kalinin:To get approvals.
00:19:55
Will Corcoran:That's great. And then, are you able to speak to any of the
00:20:02
Will Corcoran:The backtesting and additional analysis work that's been going on,
00:20:08
Will Corcoran:I know Sam from PandaOps is working on that, Anton from Consensus and Jahoon has been doing
00:20:16
Will Corcoran:Some benchmarking. None of them were able to make this call, but if you…
00:20:21
Will Corcoran:I don't know, have a sneak preview of any sorts that you want to communicate in terms of what's being worked on, that'd be…
00:20:29
Will Corcoran:Interesting for some people, I would bet.
00:20:34
Mikhail Kalinin:Yeah, I can do a quick summary.
00:20:40
Mikhail Kalinin:So basically, there was, Sam and Anton, worked, independently on, and they, took a bit different methodologies to
00:20:50
Mikhail Kalinin:Basically, do analysis on the post-confirmation delay, so how much
00:20:55
Mikhail Kalinin:So we usually, in the best case, we get confirmations in one slot.
00:21:00
Mikhail Kalinin:And the goal of this analysis was to figure out
00:21:05
Mikhail Kalinin:How frequent we get confirmations delayed, like in 2 slots, 3 slots, and 4s.
00:21:11
Mikhail Kalinin:We did this before, so…
00:21:14
Mikhail Kalinin:If you look at the PR,
00:21:16
Mikhail Kalinin:There is the performance measurement as well, there.
00:21:19
Mikhail Kalinin:And, Anton and, Sam were, looking at different,
00:21:26
Mikhail Kalinin:A different span of times, a different span of epochs on the mainnet.
00:21:31
Mikhail Kalinin:We're… as far… as far as I…
00:21:35
Mikhail Kalinin:As far as I recall correctly, Anton was running for about a month's period. I know what Sam is about the same.
00:21:43
Mikhail Kalinin:At the same run. And the numbers that they get are pretty much, pretty close to those that we have,
00:21:52
Mikhail Kalinin:in the PR, description?
00:21:57
Mikhail Kalinin:Yeah, that's what I can share, which is great. More on that will be shared.
00:22:05
Mikhail Kalinin:Not distant future.
00:22:09
Mikhail Kalinin:So that's kind of, like, the update on it.
00:22:20
Will Corcoran:Excellent, very cool. Yeah, hopefully we can, share some of that on the next breakout call.
00:22:30
Will Corcoran:Roberto, Luca, anything that you wanted to…
00:22:35
Will Corcoran:throw in, in terms of, I know you've been finalizing some
00:22:40
Will Corcoran:Some proofs in, in an updated research post.
00:22:45
Will Corcoran:I don't know if there's any updates there that you wanted to give?
00:22:53
Luca Zanolini:Oh, yes, the paper, as we mentioned, is done from our point of view. We are… we share the technical paper with someone, and we are gathering
00:23:06
Luca Zanolini:Very important feedbacks, very interesting feedbacks, and we will then address all of these feedbacks, and…
00:23:13
Luca Zanolini:ideally then soon release this, this paper. And, yeah, so everything is going actually very well. We… we got
00:23:22
Luca Zanolini:Great reviews. So, yeah.
00:23:27
Will Corcoran:That's great. And then maybe just…
00:23:31
Will Corcoran:for people's awareness, Mikel, Luca, do either of you anticipate that once that paper is done, that it would then, sort of cause revisions to the spec? Or, Michael, do you believe that the spec is
00:23:46
Will Corcoran:Like, pretty well baked at this point.
00:23:53
Mikhail Kalinin:I think the spec is… If it's final.
00:23:58
Mikhail Kalinin:version, so I don't expect any changes.
00:24:02
Mikhail Kalinin:For this pack, so far.
00:24:05
Mikhail Kalinin:Yep, so, you know.
00:24:14
Will Corcoran:Any other updates or discussion topics that… Folks might have.
00:24:48
Will Corcoran:I think maybe that…
00:24:51
Will Corcoran:does it for this call, and we will be back for FCR Breakout Room 7 in 2 weeks.
00:24:59
Will Corcoran:What's the holdup on merging the sun, barbecass?
00:25:06
Mikhail Kalinin:So… So we're… review by Justin.
00:25:13
Mikhail Kalinin:And, yeah, his points addressed.
00:25:17
Mikhail Kalinin:And we also… we are also waiting for approvals, from… from client developers.
00:25:27
Mikhail Kalinin:That's… that's one of the things. Yeah, the other one, like, is just, you know, get approval from Justin.
00:25:43
Will Corcoran:Alright, sounds good.
00:25:48
Will Corcoran:Yeah, hopefully all that resolves itself here in the next couple weeks.
00:25:56
Mercy Boma Naps-Nkari:Sorry, I wanted to ask, do we have, like, client images that, we can use? I only have, like, Lodestar. I'm unable to use,
00:26:06
Mercy Boma Naps-Nkari:get other images from other clients so that I can properly test, although the… definite criticism I did.
00:26:14
Mercy Boma Naps-Nkari:came out well, so… but I just want to, like, increase the clients and then see what happens.
00:26:32
Will Corcoran:I don't know the answer to that question.
00:26:38
Mikhail Kalinin:It's a good… Yep, burners?
00:26:44
Barnabas:That Rikal already posted.
00:26:48
Barnabas:I think that's true, that one.
00:26:54
Will Corcoran:your audio's a little garbled, Barnabas.
00:26:58
Will Corcoran:But it sounds like… You're referring, Mercy, to the PR from Nimbus that Mikhail already posted?
00:27:14
Barnabas:Does my sound a bit better now?
00:27:26
Will Corcoran:Antoine had asked in chat, do we have a time frame for when to expect client teams to have
00:27:32
Will Corcoran:FCR implemented after merging it. I'd also like to start reviewing client implementations.
00:27:40
Will Corcoran:After merging the spec, I'm guessing.
00:27:46
Mikhail Kalinin:So… We actually have, Ready to go implementation, and…
00:27:52
Mikhail Kalinin:Lighthouse, and I believe in Lone Star as well.
00:27:56
Mikhail Kalinin:My gut, I can't speak, on their behalf, but my gut is that, they just… they're just waiting for, probably, for the spec to be merged.
00:28:08
Mikhail Kalinin:as a signal, you know, for… yeah, that's… that's the final one, and we are ready to merge the implementation as well, but probably there are some other reasons that are holding them from… holding them off from merging the APRs.
00:28:24
Mikhail Kalinin:Yeah, Barnabas, that's a fair comment, yeah.
00:28:29
Mikhail Kalinin:There is a lot of work on the ePBS in progress.
00:28:33
Barnabas:Yeah, I'm just a bit worried that if they start merging this, they might have some conflicts with their ePBS implementation.
00:28:41
Barnabas:And maybe that's why they were also not, do proactive.
00:28:46
Barnabas:Yeah, everything else seems to be on the… Back burner.
00:28:50
Barnabas:When it comes to implementing, Chances.
00:28:55
Barnabas:But yeah, I think once the PBS is pretty stable, then all these, side projects can take,
00:29:06
Barnabas:I think there will be a few more, not just FCR.
00:29:11
Will Corcoran:Or am I… was the goal for ePBS to have net zero at Interop, or have they already, reached that?
00:29:20
Barnabas:Yeah, we already are done at 0 and then at 1, and then at 2 is, sometime next week.
00:29:32
Mikhail Kalinin:Also, I've heard about Prysma implementation as well, but… It's work in progress.
00:29:41
Mikhail Kalinin:So, and I believe here, with Prysm, we have, you know.
00:29:47
Mikhail Kalinin:the ePBS, like, is the highest priority for all teams, and for Prysm as well, so…
00:29:55
Mikhail Kalinin:One of the reasons that, like, why they don't have the FCR implementation yet.
00:30:03
Barnabas:Do you expect to have a glossary-based version as well, soon, open for the content spec?
00:30:12
Mikhail Kalinin:I hope so, but… Not… not really, because before we do these.
00:30:21
Mikhail Kalinin:I would like… before we open up the FCR,
00:30:27
Mikhail Kalinin:APR to the FCR to make it compatible with clause. I would like to revisit some abstraction changes on the main spec.
00:30:37
Mikhail Kalinin:So that's on the critical path to it. I… I see some of the, ways to improve.
00:30:46
Mikhail Kalinin:the Foc Choice spec in loss.
00:30:50
Mikhail Kalinin:So, I don't know, it will take time. It's not going to be soon, definitely. And for the FCR itself, it's, there will be a change as well.
00:30:59
Mikhail Kalinin:I guess… Like… Because we can confirm a payload from the current slot and some… In some cases.
00:31:09
Mikhail Kalinin:In most of the cases, these payloads, the confirmed payloads will be from the From the previous slide. So…
00:31:18
Mikhail Kalinin:thing. Like, not from the previous, sorry, like, from the previous slots in some of the cases, and from two slots ago in most of the cases.
00:31:30
Barnabas:Can you talk a bit about the fractures changes that, you're planning to do?
00:31:37
Mikhail Kalinin:It's just basically… yeah, it's just basically… you know, may get had
00:31:45
Mikhail Kalinin:To work, you know, to not introduce, like.
00:31:49
Mikhail Kalinin:backwards incompatible changes, because now get had in gloss.
00:31:54
Mikhail Kalinin:has a different signature. It returns the book choice node instead of root, as it was before.
00:32:02
Mikhail Kalinin:Which actually makes, you know.
00:32:05
Mikhail Kalinin:Specs like fast confirmations, I know that probably just one fast confirmation spec, that depends on the main protocol.
00:32:12
Mikhail Kalinin:It's… it makes it… Work-aware, so we'll have to…
00:32:18
Mikhail Kalinin:In terms of, like, abstractions, so we will have to distinguish between One and the other.
00:32:24
Mikhail Kalinin:In this bag, which is not good, I think.
00:32:28
Mikhail Kalinin:So, sort of this, you know, no, no, like, no changes to the semantics, no design changes, but basically changing the spec itself, how it's written.
00:32:43
Barnabas:So, no actual spec change from plan… plans.
00:32:49
Mikhail Kalinin:Right, right, no semantics changes, it's just, you know, this back, I think.
00:33:23
Will Corcoran:Alright, good stuff. Yeah, I believe that probably does it for this week, and…
00:33:32
Will Corcoran:See you guys all in another week? Or sorry, in two weeks.
00:33:41
Will Corcoran:Antoine, Luca, Julian, and Roberto. I'm gonna drop a link to another meeting room for us to join to talk about some administrative items.
00:33:58
Will Corcoran:See you soon. Thank you.

Chat Logs

00:10:02
Barnabas:nitpick but any reason CONFIRMATION_BYZANTINE_THRESHOLD is a config and not a preset? Do we expect to tune this value in devnets, or should we assume that its gonna stay 25 going forward ?
00:12:41
Will Corcoran:And all of the backtesting / analysis is based around 25, right?
00:12:50
Mikhail Kalinin:https://github.com/mkalinin/eth2.0-specs/pull/33
00:14:03
Mikhail Kalinin:https://github.com/mkalinin/eth2.0-specs/pull/34
00:15:22
Mikhail Kalinin:https://github.com/mkalinin/eth2.0-specs/pull/35
00:15:39
Mikhail Kalinin:https://github.com/mkalinin/eth2.0-specs/pull/36
00:16:39
Mikhail Kalinin:https://github.com/mkalinin/eth2.0-specs/pull/38
00:18:42
Mikhail Kalinin:https://github.com/status-im/nimbus-eth2/releases/tag/v26.3.1
00:24:57
Barnabas:whats the holdup in merging this in?
00:26:03
mushow:Do we have a timeframe for when to expect client teams to have it implemented? After merging it
00:26:15
mushow:I’d also like to start reviewing client implementations
00:26:20
Barnabas:nimbus should have a stable release already no?
00:26:36
Mercy Boma Naps-Nkari:https://github.com/grandinetech/grandine/pull/656
00:28:20
Barnabas:Lots of CL teams are full steam working on epbs.

Summary

12 highlights · 2 action itemsExperimental

spec status

  • FCR spec PR in final review; Gloas support deferred to follow-up PR00:09:41
  • FFG conflict check tightened to strict inequality (>1/3 vs ≥1/3)00:14:03
  • Restart condition now checks block epoch, not checkpoint epoch00:15:22
  • FCR store abstraction separated from main fork choice store00:16:39
  • Optimistic sync handling added: won't confirm unvalidated EL blocks00:17:02

client updates

  • Grandine FCR PR validated end-to-end with Lodestar on devnet00:06:27
  • Nimbus v26.3.1 released with FCR enabled by default00:18:42
  • Lighthouse and Lodestar have ready-to-go implementations awaiting spec merge00:27:55
  • ePBS work prioritized across CL teams; FCR implementations on hold00:29:32

testing progress

  • Backtesting confirms ~1-month mainnet analysis matches PR performance estimates00:21:00

organizational

  • Client implementer approvals needed to merge FCR spec PR00:19:14
  • Gloas-compatible FCR requires fork choice abstraction changes first00:31:17

Action Items

  • CL client teams: Review and approve FCR spec PR #474700:19:36
  • Reviewers (in progress): Provide feedback on FCR technical paper00:23:10

Targets

  • ePBS devnet-2 launch targeted for next week00:03:00