Help us shape the future of Go! Take the 2026 Go Developer Survey

quorum

package
v1.3.10 Latest Latest
Warning

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

Go to latest
Published: Apr 29, 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