prysm-pulse/shared/aggregation/aggregation.go
Victor Farazdagi 90542c21dc
Implements max k-coverage greedy algorithm (#6305)
* implements max k-coverage greedy algorithm
* updates go-bitfield dependency
* gazelle
* update base aggregate
* re-arrange to shared
* clean references to atts in max cover
* max_cover: updates visibility
* fixes tests
* attestations related methods
* Merge branch 'master' into attaggregation-max-cover
* better op order
* fix comments
* removes debug stringer methods
* Merge refs/heads/master into attaggregation-max-cover
* log random seed
* Merge branch 'attaggregation-max-cover' of github.com:prysmaticlabs/prysm into attaggregation-max-cover
* Merge refs/heads/master into attaggregation-max-cover
* adds more comments
* Merge branch 'attaggregation-max-cover' of github.com:prysmaticlabs/prysm into attaggregation-max-cover
* fixes typo
2020-06-18 20:56:23 +00:00

31 lines
976 B
Go

// Package aggregation contains implementations of bitlist aggregation algorithms and heuristics.
package aggregation
import (
"errors"
"github.com/prysmaticlabs/go-bitfield"
"github.com/sirupsen/logrus"
)
var log = logrus.WithField("prefix", "aggregation")
var (
// ErrBitsOverlap is returned when two bitlists overlap with each other.
ErrBitsOverlap = errors.New("overlapping aggregation bits")
// ErrBitsDifferentLen is returned when two bitlists have different lengths.
ErrBitsDifferentLen = errors.New("different bitlist lengths")
// ErrInvalidStrategy is returned when invalid aggregation strategy is selected.
ErrInvalidStrategy = errors.New("invalid aggregation strategy")
)
// Aggregation defines the bitlist aggregation problem solution.
type Aggregation struct {
// Coverage represents the best available solution to bitlist aggregation.
Coverage bitfield.Bitlist
// Keys is a list of candidate keys in the best available solution.
Keys []int
}