Skip to content

Introduce AggregatingAttestationPoolV2#9445

Merged
rolfyone merged 2 commits intoConsensys:masterfrom
tbenr:introduce-poolV2
May 20, 2025
Merged

Introduce AggregatingAttestationPoolV2#9445
rolfyone merged 2 commits intoConsensys:masterfrom
tbenr:introduce-poolV2

Conversation

@tbenr
Copy link
Copy Markdown
Contributor

@tbenr tbenr commented May 20, 2025

Introduces V2 which has:

  • better concurrency, removes synchronized methods
  • ELECTRA oriented: when producing aggregates for block production, it sorts them by rewards
  • a new aggregation for block production flow:
    1. it tries to produce all possible aggregates (timeboxed with maxBlockAggregationTimeMillis)
    2. it will sort them by rewards and select the top (8 for ELECTRA)
    3. it will try to improve the aggregations using single attestations that has not being part of the aggregates (so called fillUp, timeboxed with maxTotalBlockAggregationTimeMillis)
  • support parallel aggregation and fillUp stages

maxBlockAggregationTimeMillis might be in the order of 200ms
maxTotalBlockAggregationTimeMillis might be in the order of 500ms
leaving up to ~300ms to sorting and fillup.

This PR also introduces a AggregatingAttestationPoolProfiler interface. Implementation will come in later PRs.

Documentation

  • I thought about documentation and added the doc-change-required label to this PR if updates are required.

Changelog

  • I thought about adding a changelog entry, and added one if I deemed necessary.

Copy link
Copy Markdown
Contributor

@rolfyone rolfyone left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@rolfyone rolfyone merged commit 67c23a4 into Consensys:master May 20, 2025
16 checks passed
@tbenr tbenr deleted the introduce-poolV2 branch May 21, 2025 08:41
zilm13 added a commit that referenced this pull request May 21, 2025
* Add read functionality to blobs archiving (#9318)

* Schedule Gnosis Pectra hard-fork (#9340)

* Updated ref tests v1.5.0-beta.5 (#9341)

* Created Fulu skeleton (#9325)

* Made checkpoint-state-url and initial-state mutually exclusive (#9342)

It's hard to reason on how these two should interact, and logically they're mutually exclusive, so this just solidifies the theory that they shouldn't be used together.

Signed-off-by: Paul Harris <paul.harris@consensys.net>

* partial 3rd party updates and errorprone updates (#9351)

I ended up disabling the instanceof errorprone, as it's very very common for us to be doing it apparently. I started changing things but in the interest of time will raise a ticket

Signed-off-by: Paul Harris <paul.harris@consensys.net>

* Make builder timeouts only for the HTTP call (#9353)

Co-authored-by: Lucas Saldanha <lucas.saldanha@consensys.net>

* more 3rd party updates (#9355)


Signed-off-by: Paul Harris <paul.harris@consensys.net>

* KZG updates from das branch (#9335)

* Avoid combining validators by aggregating committee when using DVT (#9357)

* builder json format, make media type more compatible (#9360)

* refactored expected withdrawals and added test cases (#9361)

Signed-off-by: Paul Harris <paul.harris@consensys.net>

* Use `URI.create(...).toURL()` removing URL constructor deprecation (#9364)

* clear-changelog (#9366)

* New infra stream module (#9362)

* feat: Add support for reading static peers from file (#9328)

Co-authored-by: Paul Harris <paul.harris@consensys.net>

* Start cleaning up `api/schema` (#9376)

* Start cleaning up `api/schema`

 - moved `ValidatorStatus`
 - Removed `Version`
 - Moved `PublicKeyException`
 - Moved `EventType`

Signed-off-by: Paul Harris <paul.harris@consensys.net>

* cleanup the rest of api/schema (#9377)

Signed-off-by: Paul Harris <paul.harris@consensys.net>

* Added KZG computeCells method (#9375)

* Added KZG computeCells method
* Moved KZG no-operation logic into testFixture class

* Fulu Schemas (ssz + datastructures) - including fulu ssz ref tests (#9363)

* Added context to the sync committee duties error (#9380)

Signed-off-by: Paul Harris <paul.harris@consensys.net>

* Returning custody_group_count on node/identity Beacon API (#9381)

* may 3rd party updates (#9388)

Signed-off-by: Paul Harris <paul.harris@consensys.net>

* Added snakeyaml to allow more complicated config reading (#9390)

 - added tests to show reading lists of objects (BPO related)
 - added a testcase to show that hex is read correctly
 - added testcase to show specConfigReader isnt filling defaults when we read local config files

 Partially addresses #9365

Signed-off-by: Paul Harris <paul.harris@consensys.net>

* Add FULU to the Spec Factory (#9373)

* Improve attestation bits aggregator electra (#9393)

* added a DeserializableConfigTypeDefinition (#9396)

- Tests demonstrate that this should at least be very close to what we require for reading BPO schedule.

 Partially addresses #9365

Signed-off-by: Paul Harris <paul.harris@consensys.net>

* Updating ref test to 1.5.0 stable (#9398)

* uniforms the AggregatingAttestationPool interface (#9401)

* Avoids potential mutability of the result of getCommitteeBits (#9402)

* Adding DataColumnsByRootIdentifier container (#9399)

* Added an info message for the highest milestone (#9405)

Also added a sanity check that will fail if the specFactory hasn't defined the highest milestone correctly, which has flow on effects.

fixes #9400

Signed-off-by: Paul Harris <paul.harris@consensys.net>

* Introduce `PooledAttestation` and `PooledAttestationWithData` (#9407)

* Improve jdk 24 support and add docker-jdk24 (#9410)

* add docker-jdk24 support

* solves jdk 24 startup warning

* rename AttestationBitsAggregator to AttestationBits (#9412)

* Introduce aggregating pool interface (#9414)

* [docker-jdk24] SIGHUP handler fix (#9413)

* Optionally include validator indices in `PooledAttestation` (#9418)

* Improve committeesSize retrieval in `AggregatingAttestationPool` (#9419)

* Batch attestation duty scheduling for an epoch (#9374)

* Updated MiscHelpersFulu + Added Gossip Logger (#9422)

* Updated MiscHelpersFulu
* Added GossipLogger and DAS related changes

* Gossip DAS related changes (#9423)

* added bpo parsing to configuration (#9406)

Signed-off-by: Paul Harris <paul.harris@consensys.net>

* BPO - remove max blobs from fulu spec (#9427)

Signed-off-by: Paul Harris <paul.harris@consensys.net>

* Introduces `RewardBasedAttestationSorter` (#9428)

* DAS storage changes (#9432)

* Added config defaulting to the Config loader (#9439)

Signed-off-by: Paul Harris <paul.harris@consensys.net>
Co-authored-by: Gabriel Fukushima <gabrielfukushima@gmail.com>

* Introduce `AttestationMatchingGroupV2` (#9438)

* Introduce `AggregatingAttestationPoolV2` (#9445)

* Introduce `AggregatingAttestationPoolProfiler` implementations (#9447)

Co-authored-by: Paul Harris <paul.harris@consensys.net>

* PeerDAS RPC related changes (#9444)

* Added a development flag to enable strict config loading (#9449)

Strict loading was the default until yesterday, but it's caused a number of problems because if we push changes too fast etc it causes support issues.

The new default permissive loading would mean that if a passed config file is missing an entry, we default it and print a warning.

This new flag `--Xstartup-strict-config-loader-enabled` defaults to false, but if turned on will revert to failing on startup if a config being loaded doesn't include all of the expected configuration attributes.

We could potentially start using this in AT to specify minimal changes to a configuration for a test, but for now I've left acceptance tests using strict loading.


Signed-off-by: Paul Harris <paul.harris@consensys.net>

* Updating reference tests to 1.6.0-alpha.0 (#9450)

* Updating reference tests to 1.6.0-alpha.0

* Added Fulu networking tests

* rename

* Refactoring networking ATs

* Add peer via api (#9431)

* add initial impl of endpoint

Signed-off-by: Gabriel Fukushima <gabrielfukushima@gmail.com>

* add catch to cover address conversion failure

Signed-off-by: Gabriel Fukushima <gabrielfukushima@gmail.com>

* add tests for 200, 400 and 500

Signed-off-by: Gabriel Fukushima <gabrielfukushima@gmail.com>

* spotless

Signed-off-by: Gabriel Fukushima <gabrielfukushima@gmail.com>

* add test for when discovery is not enabled

Signed-off-by: Gabriel Fukushima <gabrielfukushima@gmail.com>

* spotless

Signed-off-by: Gabriel Fukushima <gabrielfukushima@gmail.com>

* fix name of test after changing exception returned for invalid peer

Signed-off-by: Gabriel Fukushima <gabrielfukushima@gmail.com>

* add json def to paths

Signed-off-by: Gabriel Fukushima <gabrielfukushima@gmail.com>

* add changelog

Signed-off-by: Gabriel Fukushima <gabrielfukushima@gmail.com>

* PR review

Signed-off-by: Gabriel Fukushima <gabrielfukushima@gmail.com>

* spotless caught me again

Signed-off-by: Gabriel Fukushima <gabrielfukushima@gmail.com>

* change impl and tests to handle a single peer per api call

Signed-off-by: Gabriel Fukushima <gabrielfukushima@gmail.com>

* spotless

Signed-off-by: Gabriel Fukushima <gabrielfukushima@gmail.com>

---------

Signed-off-by: Gabriel Fukushima <gabrielfukushima@gmail.com>

* `AggregatingAttestationPool` new CLI params (#9452)

* poolV2-CLI

* fix arity

* getBits method names clearer (#9453)

* Validate electra attestationData index received by BN (#9430)

* fix integration test

---------

Signed-off-by: Paul Harris <paul.harris@consensys.net>
Signed-off-by: Gabriel Fukushima <gabrielfukushima@gmail.com>
Co-authored-by: Stefan Bratanov <stefan.bratanov93@gmail.com>
Co-authored-by: Lucas Saldanha <lucas.saldanha@consensys.net>
Co-authored-by: Paul Harris <paul.harris@consensys.net>
Co-authored-by: Enrico Del Fante <enrico.delfante@consensys.net>
Co-authored-by: crStiv <cryptostiv7@gmail.com>
Co-authored-by: Mehdi AOUADI <mehdi.aouadi@consensys.net>
Co-authored-by: Gabriel Fukushima <gabrielfukushima@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants