attestations

package
v1.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 4, 2021 License: GPL-3.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrInvalidAttestationCount = errors.New("invalid number of attestations")

ErrInvalidAttestationCount is returned when insufficient number of attestations is provided for aggregation.

Functions

func Aggregate

func Aggregate(atts []*ethpb.Attestation) ([]*ethpb.Attestation, error)

Aggregate aggregates attestations. The minimal number of attestations is returned. Aggregation occurs in-place i.e. contents of input array will be modified. Should you need to preserve input attestations, clone them before aggregating:

clonedAtts := make([]*ethpb.Attestation, len(atts))
for i, a := range atts {
    clonedAtts[i] = stateTrie.CopyAttestation(a)
}
aggregatedAtts, err := attaggregation.Aggregate(clonedAtts)

func AggregatePair

func AggregatePair(a1, a2 *ethpb.Attestation) (*ethpb.Attestation, error)

AggregatePair aggregates pair of attestations a1 and a2 together.

func MaxCoverAttestationAggregation

func MaxCoverAttestationAggregation(atts []*ethpb.Attestation) ([]*ethpb.Attestation, error)

MaxCoverAttestationAggregation relies on Maximum Coverage greedy algorithm for aggregation. Aggregation occurs in many rounds, up until no more aggregation is possible (all attestations are overlapping).

func NaiveAttestationAggregation

func NaiveAttestationAggregation(atts []*ethpb.Attestation) ([]*ethpb.Attestation, error)

NaiveAttestationAggregation aggregates naively, without any complex algorithms or optimizations. Note: this is currently a naive implementation to the order of O(mn^2).

func NewMaxCover

func NewMaxCover(atts []*ethpb.Attestation) *aggregation.MaxCoverProblem

NewMaxCover returns initialized Maximum Coverage problem for attestations aggregation.

Types

type AttestationAggregationStrategy

type AttestationAggregationStrategy string

AttestationAggregationStrategy defines attestation aggregation strategy.

const (
	// NaiveAggregation is an aggregation strategy without any optimizations.
	NaiveAggregation AttestationAggregationStrategy = "naive"

	// MaxCoverAggregation is a strategy based on Maximum Coverage greedy algorithm.
	MaxCoverAggregation AttestationAggregationStrategy = "max_cover"

	// OptMaxCoverAggregation is a strategy based on Maximum Coverage greedy algorithm.
	// This new variant is optimized and relies on Bitlist64 (once fully tested, `max_cover`
	// strategy will be replaced with this one).
	OptMaxCoverAggregation AttestationAggregationStrategy = "opt_max_cover"
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL