proposals

package
v0.2.8-beta.0 Latest Latest
Warning

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

Go to latest
Published: Dec 9, 2021 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const NewProposalProtocol = "newProposal"

NewProposalProtocol is the protocol indicator for gossip Proposals.

Variables

View Source
var ErrZeroTotalWeight = errors.New("zero total weight not allowed")

ErrZeroTotalWeight is returned when zero total epoch weight is used when calculating eligible slots.

Functions

func CalcEligibleLayer

func CalcEligibleLayer(epochNumber types.EpochID, layersPerEpoch uint32, vrfSig []byte) types.LayerID

CalcEligibleLayer calculates the eligible layer from the VRF signature.

func GetNumEligibleSlots

func GetNumEligibleSlots(weight, totalWeight uint64, committeeSize uint32, layersPerEpoch uint32) (uint32, error)

GetNumEligibleSlots calculates the number of eligible slots for a smesher in an epoch.

func SerializeVRFMessage

func SerializeVRFMessage(beacon []byte, epoch types.EpochID, counter uint32) ([]byte, error)

SerializeVRFMessage serializes a message for generating/verifying a VRF signature.

Types

type Config

type Config struct {
	LayerSize            uint32
	LayersPerEpoch       uint32
	GoldenATXID          types.ATXID
	MaxExceptions        int
	EligibilityValidator eligibilityValidator
}

Config defines configuration for the handler.

type Handler

type Handler struct {
	// contains filtered or unexported fields
}

Handler processes Proposal from gossip and, if deems it valid, propagates it to peers.

func NewHandler

func NewHandler(f system.Fetcher, bc system.BeaconCollector, db atxDB, m mesh, opts ...Opt) *Handler

NewHandler creates new Handler.

func (*Handler) HandleBallotData

func (h *Handler) HandleBallotData(ctx context.Context, data []byte) error

HandleBallotData handles Ballot data from gossip and sync.

func (*Handler) HandleProposal

func (h *Handler) HandleProposal(ctx context.Context, _ peer.ID, msg []byte) pubsub.ValidationResult

HandleProposal is the gossip receiver for Proposal. TODO: register this gossip handler.

type Opt

type Opt func(h *Handler)

Opt for configuring BlockHandler.

func WithGoldenATXID

func WithGoldenATXID(atx types.ATXID) Opt

WithGoldenATXID defines the golden ATXID.

func WithLayerPerEpoch

func WithLayerPerEpoch(layers uint32) Opt

WithLayerPerEpoch defines the number of layers per epoch.

func WithLayerSize

func WithLayerSize(size uint32) Opt

WithLayerSize defines the average number of proposal per layer.

func WithLogger

func WithLogger(logger log.Log) Opt

WithLogger defines logger for Handler.

func WithMaxExceptions

func WithMaxExceptions(max int) Opt

WithMaxExceptions defines max allowed exceptions in a ballot.

type Validator

type Validator struct {
	// contains filtered or unexported fields
}

Validator validates the eligibility of a Ballot. the validation focuses on eligibility only and assumes the Ballot to be valid otherwise.

func NewEligibilityValidator

func NewEligibilityValidator(
	avgLayerSize, layersPerEpoch uint32, db atxDB, bc system.BeaconCollector, m mesh, lg log.Log) *Validator

NewEligibilityValidator returns a new EligibilityValidator.

func (*Validator) CheckEligibility

func (v *Validator) CheckEligibility(ctx context.Context, ballot *types.Ballot) (bool, error)

CheckEligibility checks that a ballot is eligible in the layer that it specifies.

Directories

Path Synopsis
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.

Jump to

Keyboard shortcuts

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