Documentation ¶
Overview ¶
nolint
Index ¶
- type Body
- type CommitteeUpgrade
- type Config
- type ConsensusOutput
- type Hare
- func (h *Hare) Coins() <-chan hare4.WeakCoinOutput
- func (h *Hare) Handler(ctx context.Context, peer p2p.Peer, buf []byte) error
- func (h *Hare) IsKnown(layer types.LayerID, proposal types.ProposalID) bool
- func (h *Hare) OnProposal(p *types.Proposal) error
- func (h *Hare) Register(sig *signing.EdSigner)
- func (h *Hare) Results() <-chan hare4.ConsensusOutput
- func (h *Hare) Running() int
- func (h *Hare) Start()
- func (h *Hare) Stop()
- type IterRound
- func (ir IterRound) Absolute() uint32
- func (t *IterRound) DecodeScale(dec *scale.Decoder) (total int, err error)
- func (ir IterRound) Delay(since IterRound) uint32
- func (t *IterRound) EncodeScale(enc *scale.Encoder) (total int, err error)
- func (ir IterRound) Grade(since IterRound) grade
- func (ir IterRound) IsMessageRound() bool
- type MalfeasanceHandler
- type MalfeasanceOpt
- type Message
- func (t *Message) DecodeScale(dec *scale.Decoder) (total int, err error)
- func (t *Message) EncodeScale(enc *scale.Encoder) (total int, err error)
- func (m *Message) MarshalLogObject(encoder zapcore.ObjectEncoder) error
- func (m *Message) ToBytes() []byte
- func (m *Message) ToHash() types.Hash32
- func (m *Message) ToMalfeasanceProof() wire.HareProofMsg
- func (m *Message) ToMetadata() wire.HareMetadata
- func (m *Message) Validate() error
- type Opt
- type Round
- type Tracer
- type Value
- type WeakCoinOutput
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CommitteeUpgrade ¶ added in v1.6.2
type Config ¶
type Config struct { Enable bool `mapstructure:"enable"` EnableLayer types.LayerID `mapstructure:"enable-layer"` DisableLayer types.LayerID `mapstructure:"disable-layer"` Committee uint16 `mapstructure:"committee"` CommitteeUpgrade *CommitteeUpgrade Leaders uint16 `mapstructure:"leaders"` IterationsLimit uint8 `mapstructure:"iterations-limit"` PreroundDelay time.Duration `mapstructure:"preround-delay"` RoundDuration time.Duration `mapstructure:"round-duration"` // LogStats if true will log iteration statistics with INFO level at the start of the next iteration. // This requires additional computation and should be used for debugging only. LogStats bool `mapstructure:"log-stats"` ProtocolName string `mapstructure:"protocolname"` }
func DefaultConfig ¶
func DefaultConfig() Config
func (*Config) CommitteeFor ¶ added in v1.6.2
func (*Config) MarshalLogObject ¶
func (cfg *Config) MarshalLogObject(encoder zapcore.ObjectEncoder) error
type ConsensusOutput ¶
type ConsensusOutput struct { Layer types.LayerID Proposals []types.ProposalID }
type Hare ¶
type Hare struct {
// contains filtered or unexported fields
}
func New ¶
func New( nodeClock nodeClock, pubsub pubsub.PublishSubscriber, db sql.StateDatabase, atxsdata *atxsdata.Data, proposals *store.Store, verifier *signing.EdVerifier, oracle oracle, sync system.SyncStateProvider, patrol *layerpatrol.LayerPatrol, opts ...Opt, ) *Hare
func (*Hare) Coins ¶
func (h *Hare) Coins() <-chan hare4.WeakCoinOutput
func (*Hare) Results ¶
func (h *Hare) Results() <-chan hare4.ConsensusOutput
type IterRound ¶
func (*IterRound) DecodeScale ¶
func (*IterRound) EncodeScale ¶
func (IterRound) IsMessageRound ¶
type MalfeasanceHandler ¶ added in v1.6.0
type MalfeasanceHandler struct {
// contains filtered or unexported fields
}
func NewMalfeasanceHandler ¶ added in v1.6.0
func NewMalfeasanceHandler( db sql.Executor, edVerifier *signing.EdVerifier, opt ...MalfeasanceOpt, ) *MalfeasanceHandler
func (*MalfeasanceHandler) ReportInvalidProof ¶ added in v1.6.0
func (mh *MalfeasanceHandler) ReportInvalidProof(numInvalidProofs *prometheus.CounterVec)
func (*MalfeasanceHandler) ReportProof ¶ added in v1.6.0
func (mh *MalfeasanceHandler) ReportProof(numProofs *prometheus.CounterVec)
type MalfeasanceOpt ¶ added in v1.6.0
type MalfeasanceOpt func(*MalfeasanceHandler)
func WithMalfeasanceLogger ¶ added in v1.6.0
func WithMalfeasanceLogger(logger *zap.Logger) MalfeasanceOpt
type Message ¶
type Message struct { Body Sender types.NodeID Signature types.EdSignature }
func (*Message) DecodeScale ¶
func (*Message) EncodeScale ¶
func (*Message) MarshalLogObject ¶
func (m *Message) MarshalLogObject(encoder zapcore.ObjectEncoder) error
func (*Message) ToMalfeasanceProof ¶
func (m *Message) ToMalfeasanceProof() wire.HareProofMsg
func (*Message) ToMetadata ¶
func (m *Message) ToMetadata() wire.HareMetadata
type Opt ¶
type Opt func(*Hare)
func WithConfig ¶
func WithLogger ¶
func WithResultsChan ¶ added in v1.7.0
func WithResultsChan(c chan hare4.ConsensusOutput) Opt
WithResultsChan overrides the default result channel with a different one. This is only needed for the migration period between hare3 and hare4.
func WithTracer ¶
func WithWallClock ¶ added in v1.7.0
type Value ¶
type Value struct { // Proposals is set in messages for preround and propose rounds. // // Worst case scenario is that a single smesher identity has > 99.97% of the total weight of the network. // In this case they will get all 50 available slots in all 4032 layers of the epoch. // Additionally every other identity on the network that successfully published an ATX will get 1 slot. // // If we expect 7.0 Mio ATXs that would be a total of 7.0 Mio + 50 * 4032 = 8 201 600 slots. // Since these are randomly distributed across the epoch, we can expect an average of n * p = // 8 201 600 / 4032 = 2034.1 eligibilities in a layer with a standard deviation of sqrt(n * p * (1 - p)) = // sqrt(8 201 600 * 1/4032 * 4031/4032) = 45.1 // // This means that we can expect a maximum of 2034.1 + 6*45.1 = 2304.7 eligibilities in a layer with // > 99.9997% probability. Proposals []types.ProposalID `scale:"max=2350"` // Reference is set in messages for commit and notify rounds. Reference *types.Hash32 }
func (*Value) DecodeScale ¶
func (*Value) EncodeScale ¶
type WeakCoinOutput ¶
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package eligibility is a generated GoMock package.
|
Package eligibility is a generated GoMock package. |
Click to show internal directories.
Click to hide internal directories.