In protocol CL triggerable consolidation#12
Conversation
Co-authored-by: fradamt <104826920+fradamt@users.noreply.github.com> Co-authored-by: Roberto Saltini <38655434+saltiniroberto@users.noreply.github.com>
| if source_validator.exit_epoch > current_epoch: | ||
| source_validator.exit_epoch = current_epoch |
There was a problem hiding this comment.
| if source_validator.exit_epoch > current_epoch: | |
| source_validator.exit_epoch = current_epoch | |
| source_validator.exit_epoch = min(source_validator.exit_epoch, compute_activation_exit_epoch(current_epoch)) |
There was a problem hiding this comment.
compute_activation_exit_epoch logic is already incorporated in process_consolidation:
|
Overall the approach looks solid! Aggregating the source and targets keys for the same Consolidation message is a neat trick
I want to note that the trade-off is not free. Now you need a way to propagate the Consolidation message to the proposer, so we need a new gossip topic with poor DoS properties + beacon API routes. Doable, but definitely something to consider. |
Given that consolidation is mainly useful for pools, and not something you need to be doing all the time anyway, we could perhaps consider not having a gossip topic, and just having each pool rely on its own proposers to get the messages on chain |
That could fly maybe, with 900k vals 1 index proposes every 125 days, 32 indexes every 3.9 days. We would be putting some min expected consolidation size, or forcing smaller player to coordinate off-protocol with bigger ones |
|
Closing in favour of #14 |
Originated from and incorporates discussions around the following PR:
The key difference to the original proposal is allowing consolidation only when withdrawal credentials of the source and the target have the same Execution layer withdrawal address. This allows to avoid dependency on EL and process consolidation on the Consensus layer.
Although, this change restricts consolidation space it significantly simplify the mechanics and can become an acceptable middle ground between the protocol and engineering complexity and consolidation capabilities.
Full change set:
Consolidationbeacon chain operation:ETH1_orCOMPOUNDING_credential prefixPendingConsolidationthat is appended to thepending_consolidationsqueue,PendingConsolidationkeeps anepochduring which it was createdconsolidated_toindex in both proposer and attester slashing processing, then apply slashing to consolidated validatorsconsolidated_toallows to slashtargeteven in the case when a conflicting vote has been submitted by thesource, more on this below:Finalizing consolidation changes the above to the following:
val n -> mconsolidation initiated onA,Bhas not observed such consolidationBfinalized:Ahas to finalize a conflicting checkpoint to finishval m -> nconsolidation, finalizingAis already slashable onBAfinalized:Abecomes canonical,val n on Bandval m on Avote on conflicting checkpoints andval mcan be slashed onAbecause slashing processing resolvesn -> m