Open GalRogozinski opened 3 months ago
Suggestion for ConsensusData
and Duty
Struct Changes
I'd like to suggest some changes to the ConsensusData
and Duty
structs to improve efficiency and reduce unnecessary data broadcast over the network.
Current ConsensusData
struct:
type ConsensusData struct {
Duty Duty
Version spec.DataVersion
PreConsensusJustifications []*SignedPartialSignatureMessage `ssz-max:"13"`
DataSSZ []byte `ssz-max:"4194304"`
}
Proposed Changes:
Duty
struct is a one-size-fits-all solution that includes fields irrelevant to specific duty types (attest, propose, sync committee contributions). I propose splitting this into separate structs for each duty type, which would allow us to only include relevant fields for each specific duty. This could lead to a reduction in unnecessary data being transmitted and processed.type AttesterDuty struct {
PubKey phase0.BLSPubKey
Slot phase0.Slot
ValidatorIndex phase0.ValidatorIndex
CommitteeIndex phase0.CommitteeIndex
CommitteeLength uint64
CommitteesAtSlot uint64
ValidatorCommitteeIndex uint64
}
type ProposerDuty struct {
PubKey phase0.BLSPubKey
Slot phase0.Slot
ValidatorIndex phase0.ValidatorIndex
}
type SyncCommitteeDuty struct {
PubKey phase0.BLSPubKey
ValidatorIndex phase0.ValidatorIndex
ValidatorSyncCommitteeIndices []phase0.CommitteeIndex
}
Version
field in the ConsensusData
struct is only relevant for proposer duties. Therefore, I suggest removing it from the ConsensusData
struct to streamline the data structure.
We can pass the Version
via DataSSZ
Edit:
Both Version
and Duty
fields can be omitted.
They can be retrieved without consensus data...
Use SSZ encoding for SignedSSVMessage
SignerID
should be taken out of PartialSignatureMessage
MessageID should have the same field types for all runners
Currently we send fullData in proposal justification (RC messages). This just takes up needless space.
Description
This issue keeps track for changes devs and community would like to be seen included in a fork.