quorum

package
v1.3.8 Latest Latest
Warning

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

Go to latest
Published: Apr 27, 2020 License: MIT Imports: 13 Imported by: 3

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Decider

type Decider interface {
	fmt.Stringer
	SignatureReader
	DependencyInjectionWriter
	SetVoters(subCommittee *shard.Committee, epoch *big.Int) (*TallyResult, error)
	Policy() Policy
	IsQuorumAchieved(Phase) bool
	IsQuorumAchievedByMask(mask *bls_cosi.Mask) bool
	QuorumThreshold() numeric.Dec
	AmIMemberOfCommitee() bool
	IsAllSigsCollected() bool
	ResetPrepareAndCommitVotes()
	ResetViewChangeVotes()
}

Decider ..

func NewDecider

func NewDecider(p Policy, shardID uint32) Decider

NewDecider ..

type DependencyInjectionReader added in v1.3.0

type DependencyInjectionReader interface {
	MyPublicKey() func() (*multibls.PublicKey, error)
}

DependencyInjectionReader ..

type DependencyInjectionWriter added in v1.3.0

type DependencyInjectionWriter interface {
	SetMyPublicKeyProvider(func() (*multibls.PublicKey, error))
}

DependencyInjectionWriter ..

type ParticipantTracker

type ParticipantTracker interface {
	Participants() []*bls.PublicKey
	IndexOf(*bls.PublicKey) int
	ParticipantsCount() int64
	NextAfter(*bls.PublicKey) (bool, *bls.PublicKey)
	UpdateParticipants(pubKeys []*bls.PublicKey)
}

ParticipantTracker ..

type Phase

type Phase byte

Phase is a phase that needs quorum to proceed

const (
	// Prepare ..
	Prepare Phase = iota
	// Commit ..
	Commit
	// ViewChange ..
	ViewChange
)

func (Phase) String added in v1.3.0

func (p Phase) String() string

type Policy

type Policy byte

Policy is the rule we used to decide is quorum achieved

const (
	// SuperMajorityVote is a 2/3s voting mechanism, pre-PoS
	SuperMajorityVote Policy = iota
	// SuperMajorityStake is 2/3s of total staked amount for epoch
	SuperMajorityStake
)

func (Policy) String added in v1.3.0

func (p Policy) String() string

type Registry added in v1.3.2

type Registry struct {
	Deciders      map[string]Decider `json:"quorum-deciders"`
	ExternalCount int                `json:"external-slot-count"`
	MedianStake   numeric.Dec        `json:"epos-median-stake"`
}

Registry ..

func NewRegistry added in v1.3.2

func NewRegistry(extern int) Registry

NewRegistry ..

type SignatoryTracker

type SignatoryTracker interface {
	ParticipantTracker
	SubmitVote(
		p Phase, PubKey *bls.PublicKey,
		sig *bls.Sign, headerHash common.Hash,
		height, viewID uint64,
	) (*votepower.Ballot, error)
	// Caller assumes concurrency protection
	SignersCount(Phase) int64
	// contains filtered or unexported methods
}

SignatoryTracker ..

type SignatureReader

type SignatureReader interface {
	SignatoryTracker
	ReadAllBallots(Phase) []*votepower.Ballot
	ReadBallot(p Phase, PubKey *bls.PublicKey) *votepower.Ballot
	TwoThirdsSignersCount() int64
	// 96 bytes aggregated signature
	AggregateVotes(p Phase) *bls.Sign
}

SignatureReader ..

type TallyResult added in v1.3.0

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

TallyResult is the result of when we calculate voting power, recall that it happens to us at epoch change

type Transition added in v1.3.2

type Transition struct {
	Previous Registry `json:"previous"`
	Current  Registry `json:"current"`
}

Transition ..

Jump to

Keyboard shortcuts

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