*: fix exit sig agg#4542
Conversation
There was a problem hiding this comment.
Pull request overview
This PR fixes full-exit signature aggregation when returned partial signatures do not map directly to contiguous share positions by resolving share indices via BLS verification against validator public shares.
Changes:
- Requires beacon node configuration for
exit fetchso exit signing domains can be derived. - Passes validator public shares and an eth2 client through fetch/broadcast full-exit paths.
- Updates
obolapi.GetFullExitto verify partial signatures, recover share indices, aggregate, and validate the final signature; adds non-contiguous-share test coverage.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
cmd/exit_fetch.go |
Adds beacon-node flags/client creation and passes pub shares into full-exit retrieval. |
cmd/exit_fetch_internal_test.go |
Updates fetch tests/CLI args for required beacon-node endpoint configuration. |
cmd/exit_broadcast.go |
Threads eth2 client into Obol API full-exit retrieval and resolves pub shares from the lock. |
cmd/exit_broadcast_internal_test.go |
Updates broadcast tests for the new exitFromObolAPI signature. |
app/obolapi/exit.go |
Reworks full-exit aggregation to identify partial signature share indices via BLS verification. |
app/obolapi/exit_test.go |
Updates existing tests and adds coverage for non-contiguous share aggregation. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #4542 +/- ##
==========================================
+ Coverage 57.01% 57.08% +0.06%
==========================================
Files 245 245
Lines 32971 33055 +84
==========================================
+ Hits 18799 18868 +69
- Misses 11789 11797 +8
- Partials 2383 2390 +7 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|



Lagrange interpolation of non-contiguous shares was failing before...
With this change though, we do require beacon node endpoints to be set when calling the fetch exit, so that we can verify the signatures (we need the Domain from the BN's spec). We can think of storing mainnet, hoodi and sepolia specs in the charon repo, so we can reference them locally and skip this one.
category: bug
ticket: none