Skip to content

Aggregate BLS signatures for votes #1319

@UnitylChaos

Description

@UnitylChaos

Using BLS signatures for validator votes would also allow for smaller IBC packets in Cosmos, as the Tendermint headers will only require one signature. It would also be possible to do the aggregation while the votes are being gossiped, which could reduce total bandwidth and possibly allow better scaling.

The mechanism for aggregation in the gossip process, without introducing extra overhead, is an open design problem. Current idea I'm working with is to treat the set of possible votes as a binary tree, and only aggregate when you have a complete subtree. That way you won't ever receive two partially overlapping aggregations and have to double count some signatures. Signatures can be double counted safely, but it would require using integers to track validators votes, rather than a single bit, and complicates the verification process.

@ValarDragon and I have been working on a go implementation of these signatures: bgls
Review and feedback would be very much appreciated.

Metadata

Metadata

Assignees

No one assigned

    Labels

    C:consensusComponent: ConsensusC:cryptoComponent: CryptoT:enhancementType: EnhancementT:perfType: Performancestalefor use by stalebot

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions