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

Fast Confirmation Rule #004

2026-03-03 Agenda: #1939 canonical JSON

Transcript

00:09:15
Will Corcoran:Thanks, everyone, for coming. This is Fast Confirmation Rule FCR breakout room number 4.
00:09:23
Will Corcoran:We normally start with client updates.
00:09:27
Will Corcoran:I don't see any client devs on the call, please correct me if I'm wrong.
00:09:32
Will Corcoran:But Mikhail had a couple of spec changes that we were gonna start with.
00:09:37
Will Corcoran:I will drop the… Links in the chat, and Michael…
00:09:43
Will Corcoran:If you wanna take it away.
00:09:48
Mikhail Kalinin:Thanks, Will. So… Yeah, the first one… Was the,
00:09:56
Mikhail Kalinin:the fix for the edge case found by Ethan from Nimbus?
00:10:01
Mikhail Kalinin:This is, like, the edge case with the first block in the reconfirmation part of the spec, so that's the spec issue.
00:10:09
Mikhail Kalinin:It's addressed, there is a test already written to cover the such case.
00:10:14
Mikhail Kalinin:Great credits to Ethan for finding this out.
00:10:21
Mikhail Kalinin:Also, there were… a side of… the second change, the second change is about,
00:10:29
Mikhail Kalinin:Yeah, it's just, like, the most recent one.
00:10:33
Mikhail Kalinin:So… This changes the way we compute the adversarial threshold for
00:10:41
Mikhail Kalinin:like, the adversarial wait for the, compute and honest FFG support, for the honest FFG support that we have.
00:10:49
Mikhail Kalinin:It's kind of like, this PR, this change, introduces, like, a similar way of
00:10:57
Mikhail Kalinin:processing locations, so a similar way to is1Confirmed, method. In is1Confirmed, we have this,
00:11:07
Mikhail Kalinin:discount for validators who already equocated. We discount these from the adversarial weight. So basically, if, like, say 20% of letters got slashed, we assume that honest validators never slashed, and we basically subtract
00:11:25
Mikhail Kalinin:these 20% from the 25% of the potential adversarial weight, which basically increases the liveness of the FCR,
00:11:35
Mikhail Kalinin:without compromising security. So this was,
00:11:39
Mikhail Kalinin:from the beginning in the spec for ES1 confirmed, but it was not for this honest FFG support.
00:11:46
Mikhail Kalinin:And now they are similar, in that regard, so that's basically it.
00:11:52
Mikhail Kalinin:what's left to do is to fix tests. Some of the tests are broken by this change, but yeah, just please take a look and be aware of this change. I hope this… this is, like, one of the last changes to the spec.
00:12:05
Mikhail Kalinin:Except for potential issues with the spec or box, but… Yep.
00:12:12
Mikhail Kalinin:That's about it. There were a few changes that also landed the main branch after the previous call, and also we were, after the previous call, we were exploring
00:12:28
Mikhail Kalinin:The… the way of, like, reusing fork choice weights in the first confirmation rule.
00:12:33
Mikhail Kalinin:But after, like, some conversations with developers.
00:12:38
Mikhail Kalinin:We decided not to do this, and because, yeah, it's… it's not possible as is to reuse the fork choice weights, and will require some additional tweaks.
00:12:50
Mikhail Kalinin:And also, the positive thing is that, if the fast confirmation rule implementation is independent on the FOC choice.
00:12:58
Mikhail Kalinin:So these two components can be changed independently, and yeah, the work can happen in parallel. So we decided not to do this.
00:13:07
Mikhail Kalinin:And, yeah, this back is moving towards, like, its final state.
00:13:13
Mikhail Kalinin:That's it about this track.
00:13:16
Roberto Saltini:So, Mikai, do you mean that we…
00:13:18
Roberto Saltini:We can new… we can compute the fork choice… sorry, the…
00:13:23
Roberto Saltini:The, yeah, the fork choice waits for the fast confirmation route using
00:13:28
Roberto Saltini:The violence is coming from this.
00:13:34
Roberto Saltini:No, not just… Not just considering the… Most recent justified checkpoint.
00:13:43
Mikhail Kalinin:So that's… That's my take.
00:13:46
Mikhail Kalinin:So we can use, like, not arbitrary, but a different
00:13:50
Mikhail Kalinin:balance source for the fast confirmation that we use for the fork choice.
00:13:56
Mikhail Kalinin:This whole thing.
00:13:59
Roberto Saltini:Can reach that checkpoint that we intend to use originally, which is the… Credit has justified?
00:14:06
Roberto Saltini:at the beginning… at the beginning of the last slot of the previous epoch.
00:14:15
Roberto Saltini:That's good from a… Okay, algorithm point of view.
00:14:38
Roberto Saltini:So that's the… Ugh.
00:14:42
Roberto Saltini:Lion, lighthouse implementation of the first confirmation rule, implement this.
00:14:48
Roberto Saltini:the algorithm, as we had, like, in the paper, were usually justified from the…
00:14:54
Roberto Saltini:Last slot of the previous ebook.
00:14:57
Mikhail Kalinin:Yeah, I think so. To be more specific, it's, like, in the spec, but the spec is, like, this… yeah, the spec is very close to the paper.
00:15:09
Mikhail Kalinin:So, yeah, I think that implementation,
00:15:14
Mikhail Kalinin:I believe it uses the algorithm as…
00:15:17
Mikhail Kalinin:In the spec. Well, sorry, in the paper.
00:15:31
Will Corcoran:I just dropped a link to the Lighthouse implementation Roberto was referring to in the chat.
00:15:48
Will Corcoran:Great. Any other updates? Spec-related, testing-related, research-related?
00:16:00
Will Corcoran:Or discussion topics.
00:16:02
Will Corcoran:On the paper side, We're resuming work after a short pause last week. Tomorrow.
00:16:08
Will Corcoran:I will have a meeting with Roto to plan the next steps towards finalizing it. Thanks, Luca.
00:16:17
Mikhail Kalinin:On the testing side… we had…
00:16:24
Mikhail Kalinin:Yeah, this… let me link to the PR. This is the PR with the… is one confirmed function test.
00:16:30
Mikhail Kalinin:Made by Luca, it has a… quite good coverage.
00:16:35
Mikhail Kalinin:Also, currently, we are working on the…
00:16:41
Mikhail Kalinin:Like, rigorous testing of the cases where we need to confirm the block from the previous epoch.
00:16:49
Mikhail Kalinin:To… to… to remind, we have these… we have…
00:16:53
Mikhail Kalinin:I see a similar test suite done for the current epoch blocks. Now, the previous epoch block case
00:17:00
Mikhail Kalinin:Okay, all cases need to be covered.
00:17:02
Mikhail Kalinin:So it's like… I would say more than a hundred of tests to be… finished soon, so… Yeah.
00:17:11
Mikhail Kalinin:The goal is to have them done by
00:17:14
Mikhail Kalinin:By the end of next week, something like that.
00:17:19
Mikhail Kalinin:And, after this is done, it's like, it will be, like, 90% of test coverage, maybe 95% will need, probably, to try to cover some edge cases and some
00:17:30
Mikhail Kalinin:More than 100, yes, for this particular stuff, for this particular, previous epoch block test.
00:17:39
Mikhail Kalinin:So we, we currently have, like, around 100 tests.
00:17:43
Mikhail Kalinin:Maybe something like that.
00:17:59
Mikhail Kalinin:Yeah, and a good test coverage will allow us to,
00:18:04
Mikhail Kalinin:to say that the devnet implementation that passes all the tests, if it passes all the tests that,
00:18:10
Mikhail Kalinin:He'll give us some… Assurance that it's likely correct.
00:18:46
Will Corcoran:Great. Any other topics?
00:19:05
Will Corcoran:Alright, well, we might just… have, A short call today.
00:19:14
Will Corcoran:And… that's okay. Seems like we're making a lot of progress, on the testing.
00:19:20
Will Corcoran:Cover side, the research is about ready to wrap up, and on the specification side, so…
00:19:26
Will Corcoran:Seems like things are all moving in a positive direction, and…
00:19:30
Will Corcoran:yeah, I'm sure we'll start getting more client, participation as things… I know that they just hit, DevNet Zero with
00:19:41
Will Corcoran:So there's probably a lot of effort focused on that right now.
00:19:50
Will Corcoran:If there's nothing else, I say we call to call.

Chat Logs

00:09:55
Will Corcoran:Fast confirmation: Fix is_confirmed_chain_safe when epoch(GU) < prev_epoch mkalinin/eth2.0-specs#29 Fast confirmation: Reduce adversary by slashed balance in FFG computation mkalinin/eth2.0-specs#30
00:15:30
Will Corcoran:https://github.com/sigp/lighthouse/compare/unstable...dapplion:lighthouse:fcr?expand=1
00:15:56
Luca Zanolini:On the paper side, we’re resuming work after a short pause last week. Tomorrow I have a meeting with Roberto to plan the next steps toward finalizing it.
00:16:29
Mikhail Kalinin:https://github.com/mkalinin/eth2.0-specs/pull/28
00:17:31
Will Corcoran:Did you say more than 100?
00:19:53
Mikhail Kalinin:I am seeing a decent progres from client side as well

Summary

9 highlights · 2 action itemsExperimental

spec updates

  • Edge case fix merged for first block reconfirmation (found by Ethan/Nimbus)00:09:48
  • Equivocation discount now applied to FFG support computation, matching is1Confirmed behavior00:12:28
  • Spec approaching final state; no major changes expected beyond bug fixes00:12:52
  • Decision: FCR won't reuse fork choice weights—keeps components independent for parallel work00:13:07

testing progress

  • is1Confirmed function tests merged with strong coverage00:16:30
  • Previous epoch block confirmation tests in progress—100+ tests targeting end of next week00:16:49
  • 90-95% test coverage expected after previous epoch tests complete00:17:43

client implementation

  • Lighthouse EPF implementation uses justified checkpoint from last slot of previous epoch00:14:42

research

  • Paper work resuming; Roberto/Luca meeting tomorrow to plan finalization steps00:16:08

Decisions

  • FCR will not reuse fork choice weights; maintains independence between FCR and fork choice00:12:38

Action Items

  • All client teams: Review latest spec PRs #29 (epoch boundary fix) and #30 (FFG slashing discount)00:12:05
  • Mikhail/Luca: Complete previous epoch block confirmation test suite (100+ tests)00:16:57

Targets

  • End of next week (March 14) - Previous epoch block test suite completion00:17:17