-
Notifications
You must be signed in to change notification settings - Fork 5
add draft plan for devnet-3 #56
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
One thing I havn't added is the timing for publishing the aggregation. The current spec is: |
| - Aggregators propagate their aggregated signatures to `aggregated_attestation` gossipsub topic | ||
| - **Proposer role:** | ||
| - Proposer listens to `aggregated_attestation` gossipsub topic | ||
| - Proposer MAY listen to `attestation_{subnet_id}` topics and aggregate gossiped signatures if the received aggregated signatures don't cover all desired votes |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
aggregate gossiped signatures if the received aggregated signatures don't cover all desired votes
Could you elaborate this? Does it imply that proposer will always be an aggregator, i.e., is_aggregator(proposer) == true?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My understanding is that if the proposer sees some attestations that are not yet part of the aggregated signature(s) that it received, the proposer could choose to aggregate those new attestations itself and include it as another aggregation in the block that it's about to propose.
This part of text was from @g11tech's chat message so feel free to correct me
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, makes sense. Maybe we can express it something like a proposer MAY include any attestation to a block that is not aggregated (and not equivocating). I guess the equivocation handling is not part of devnet-3's concern though.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated in c9fcad8
|
@unnawut my vision regarding timing of aggregation
|
Co-authored-by: JihoonSong <jihoonsong@users.noreply.github.com>
Co-authored-by: JihoonSong <jihoonsong@users.noreply.github.com>
|
|
||
| ## Notable exclusions | ||
|
|
||
| - Multiple aggregation subnets & committees - planned for the next devnet to derisk complexity |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| - Multiple aggregation subnets & committees - planned for the next devnet to derisk complexity | |
| - Multiple aggregation subnets - planned for the next devnet to derisk complexity |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I intentionally added this 😅 based on this chat, but I might have misunderstood @kamilsa @g11tech
- Devnet 4: Single subnet with multiple aggregation committees with recursive aggregation:
* We keep single subnet for attestation propagation but we split validators into multiple aggregation committees, so that they send attestation directly to aggregator from their committee
* Aggregators assign themselves to one or multiple aggregation committees (via ENR record)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for sharing the chat. Does validator sends attestation directly to the aggregator of their designated committee AND propagates attestation to the attestation subnet?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for sharing the chat. Does validator sends attestation directly to the aggregator of their designated committee AND propagates attestation to the attestation subnet?
I think that's what @kamilsa suggested yeah. But hmm I think I havn't incorporated "attestation directly to the aggregator" yet because I'm not sure what the channel should be
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It reads as there are the attestation global gossipsub topic and attestation subnets to me. Maybe the subnets are introduced for optimization, but then I'm not sure why we need the attestation topic then.
I've also found "aggregation committee" misleading as it consists of both aggregators and non-aggregators. I get that it produces aggregated signatures as a whole, but we call it a "committee" when all committee members have the same role.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As I see how we can do it:
We keep single global subnet for all attestations.
However attesters are now split into multiple committees.
We also introduce attestation_{subnet_id} subnets that are used as follows:
- Non-aggregating attesters only publish (without subscribing) to the attestation subnet corresponding to their committee
- Aggregators (subset of attesters from the committee) do both publishing and subscribing in the attestation subnet
That way we save traffic for attesters so that they do not receive same attestation twice (from global attestation subnet and from subnet that corresponds to committee).
(in reality though they will receive same attestation more than once due to lack of proper duplicates handling in gossipsub)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here is how I understand:
-
Attestation subnets
An attester should be able to calculate which subnet they are belong to and publish their attestation to that subnet. We can maybe call a group of attesters in the same subnet an attestation committee, i.e., attestation_committee[i] has attestation_subnet[i]. -
A global gossip topic for aggregated signatures
Aggregators of each subnet publish their aggregated signatures to this global gossip topic.
Am I on the same page?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Am I on the same page?
I think so.
We can maybe call a group of attesters in the same subnet an attestation committee, i.e., attestation_committee[i] has attestation_subnet[i].
Yes, should be fine and sounds similar to beacon spec
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, it is very similar to beacon chain although it is grouped by different reasons. Great, thanks a lot!
Added your suggestion to the doc. Not sure if I understood it correctly but let me know otherwise. I'll have a closer look at this later as well.
|
| - **Changes** | ||
| - **validator-config.yaml:** | ||
| - New field: `validator.attestation_subnet_id` - The subnet that the validator propagates the attestation to, assigned to all validators | ||
| - New field: `validator.aggregator_subnet_id` - The subnet that the validator will perform aggregator duty, assigned to a small subset of validators |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
should we specify a target of ~10% of subnet validators to have a measurable goal?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We want to start with just 1 aggregator in this devnet hence why I didn't put 10% even in the north star target, but could you correct me if I'm wrong @kamilsa
tcoratger
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Cool, just left a very minor comment, otherwise, looks good to me.
As soon as this is merged, I can decouple this into small issues for leanspec, for people to start working on it.
| - **Changes** | ||
| - **validator-config.yaml:** | ||
| - New field: `validator.attestation_subnet_id` - The subnet that the validator propagates the attestation to, assigned to all validators | ||
| - New field: `validator.aggregator_subnet_id` - The subnet that the validator will perform aggregator duty, assigned to a small subset of validators |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If a validator performs an aggregator role, validator.aggregator_subnet_id equals to validator.attestation_subnet_id anyway. In other words, the information we need is whether a validator is an aggregator or not. So I think using a flag is better such as validator.is_aggregator.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe we can add attestation_subnet_id field as proposed + optionally add is_aggregator: bool as ENR record.
Why ENR? because this information is something that the nodes will need to be aware of during peer discovery (when discovery is integrated). This gives flexibility for building topologies that optimize aggregation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we want to make a config so that non-aggregators directly connect to aggregators in their subnet, if possible?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated in 96669d8
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think non-aggregators from subnet with some subnet_id may simply publish their attestation to the gossipsub topic attestation_{subnet_id} (without subscribing). I believe no additional config required. At least for now
|
I’ll merge now but feel free to continue the conversations. I’ll be more than happy to follow up with new PRs |

No description provided.