[LN Decentralization E] Proof of Collection Finality
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 575
- Forks
- 217
- Avg merge
- 4d 20h
- Merged PRs (30d)
- 9
Description
A collection guarantee is an assertion about collection c . From the protocol perspective, a collection guarantee must prove two aspects: (i) the cluster block that embodies collection c was finalized and (ii) which collectors promised to provide the collection data to other nodes in the network (they will be slashed if c goes missing).
We currently trust the collectors to only send finalized collections to consensus but for BFT, finalization would need to be verified by all consensus nodes.
Details
Groups of collectors (known as ‘collector clusters’) use a mini-version of HotStuff to agree on which transactions to include in their collections. This ensures robust data availability and mitigates resource exhaustion attacks by preventing individual collectors from including garbage or repetitive transactions. As long as the fraction of Byzantine collectors in each cluster is less than one-third, malicious collections proposed by permissionless collectors will not be finalized by the cluster consensus, and the proposing collector will eventually be slashed.
Important terminology:
-
collection is a batch of transactions
Note that it does not contain any signatures of other evidence for its validity.
-
Cluster blocks are produced by each cluster consensus. Essentially, a cluster block’s payload is a collection. In other words, the cluster block header carries the information about who proposed the block, votes for the parent collection, signatures, etc.
-
A Collection Guarantee is a cryptographic proof about collection
c- the cluster block that embodies collection
cwas finalized - which collectors promised to provide the collection data to other nodes in the network (they will be slashed if
cgoes missing).
- the cluster block that embodies collection
The Flow protocol mandates that collectors may only send finalized collections to the consensus nodes for inclusion in blocks. However, we have a shortcut in our implementation assumes only honest collectors and hence never checks whether collections are finalized. However, a single byzantine collector could submit collection guarantees to consensus nodes lying that they are finalized, when intact they are not.
Before admitting permissionless collectors, this shortcut must be removed by adding proofs of collection finality.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with model/flow/collection.go, model/cluster/block.go, and model/flow/collectionGuarantee.go to understand the collection, cluster-block, and guarantee structures. Trace where collection guarantees are admitted by consensus and determine how finalized-collection evidence can be verified; done means consensus nodes reject guarantees without valid collection-finality proofs.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- blockchain, distributed-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100