Fork Wishlist
Opened this issue · 5 comments
GalRogozinski commented
Description
This issue keeps track for changes devs and community would like to be seen included in a fork.
olegshmuelov commented
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:
- Split Duty Struct into Specific Duty Types: The current
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.
- Example Proposed Structs:
- AttesterDuty
type AttesterDuty struct { PubKey phase0.BLSPubKey Slot phase0.Slot ValidatorIndex phase0.ValidatorIndex CommitteeIndex phase0.CommitteeIndex CommitteeLength uint64 CommitteesAtSlot uint64 ValidatorCommitteeIndex uint64 }
- ProposerDuty
type ProposerDuty struct { PubKey phase0.BLSPubKey Slot phase0.Slot ValidatorIndex phase0.ValidatorIndex }
- SyncCommitteeDuty
type SyncCommitteeDuty struct { PubKey phase0.BLSPubKey ValidatorIndex phase0.ValidatorIndex ValidatorSyncCommitteeIndices []phase0.CommitteeIndex }
- Remove Version from ConsensusData: The
Version
field in theConsensusData
struct is only relevant for proposer duties. Therefore, I suggest removing it from theConsensusData
struct to streamline the data structure.
We can pass theVersion
viaDataSSZ
Edit:
Both Version
and Duty
fields can be omitted.
They can be retrieved without consensus data...
GalRogozinski commented
GalRogozinski commented
Use SSZ encoding for SignedSSVMessage
GalRogozinski commented
SignerID
should be taken out of PartialSignatureMessage
MessageID should have the same field types for all runners
GalRogozinski commented
Currently we send fullData in proposal justification (RC messages). This just takes up needless space.