snow

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Jul 21, 2022 License: BSD-3-Clause Imports: 13 Imported by: 1

Documentation

Index

Constants

View Source
const (
	Initializing = iota
	StateSyncing
	Bootstrapping
	NormalOp
)

Variables

View Source
var ErrUnknownState = errors.New("unknown state")

Functions

This section is empty.

Types

type Acceptor

type Acceptor interface {
	// Accept must be called before [containerID] is committed to the VM as
	// accepted.
	//
	// If the returned error is non-nil, the chain associated with [ctx] should
	// shut down and not commit [container] or any other container to its
	// database as accepted.
	Accept(ctx *ConsensusContext, containerID ids.ID, container []byte) error
}

Acceptor is implemented when a struct is monitoring if a message is accepted

type AcceptorGroup

type AcceptorGroup interface {
	// Calling Accept() calls all of the registered acceptors for the relevant
	// chain.
	Acceptor

	// RegisterAcceptor causes [acceptor] to be called every time an operation
	// is accepted on chain [chainID].
	// If [dieOnError], chain [chainID] stops if Accept returns a non-nil error.
	RegisterAcceptor(chainID ids.ID, acceptorName string, acceptor Acceptor, dieOnError bool) error

	// DeregisterAcceptor removes an acceptor from the group.
	DeregisterAcceptor(chainID ids.ID, acceptorName string) error
}

func NewAcceptorGroup

func NewAcceptorGroup(log logging.Logger) AcceptorGroup

type AcceptorTracker

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

AcceptorTracker tracks the dispatched accept events by its ID and counts. Useful for testing.

func NewAcceptorTracker

func NewAcceptorTracker() *AcceptorTracker

func (*AcceptorTracker) Accept

func (a *AcceptorTracker) Accept(ctx *ConsensusContext, containerID ids.ID, container []byte) error

func (*AcceptorTracker) IsAccepted

func (a *AcceptorTracker) IsAccepted(containerID ids.ID) (int, bool)

type ConsensusContext

type ConsensusContext struct {
	*Context

	Registerer prometheus.Registerer

	// DecisionAcceptor is the callback that will be fired whenever a VM is
	// notified that their object, either a block in snowman or a transaction
	// in coinflect, was accepted.
	DecisionAcceptor Acceptor

	// ConsensusAcceptor is the callback that will be fired whenever a
	// container, either a block in snowman or a vertex in coinflect, was
	// accepted.
	ConsensusAcceptor Acceptor
	// contains filtered or unexported fields
}

func DefaultConsensusContextTest

func DefaultConsensusContextTest() *ConsensusContext

func (*ConsensusContext) Executing

func (ctx *ConsensusContext) Executing(b bool)

Executing marks this chain as executing or not. Set to "true" if there's an ongoing transaction.

func (*ConsensusContext) GetState

func (ctx *ConsensusContext) GetState() State

func (*ConsensusContext) IsExecuting

func (ctx *ConsensusContext) IsExecuting() bool

IsExecuting returns true iff this chain is still executing transactions.

func (*ConsensusContext) IsValidatorOnly

func (ctx *ConsensusContext) IsValidatorOnly() bool

IsValidatorOnly returns true iff this chain is available only to validators

func (*ConsensusContext) SetState

func (ctx *ConsensusContext) SetState(newState State)

func (*ConsensusContext) SetValidatorOnly

func (ctx *ConsensusContext) SetValidatorOnly()

SetValidatorOnly marks this chain as available only to validators

type Context

type Context struct {
	NetworkID uint32
	SubnetID  ids.ID
	ChainID   ids.ID
	NodeID    ids.NodeID

	XChainID    ids.ID
	CFLTAssetID ids.ID

	Log          logging.Logger
	Lock         sync.RWMutex
	Keystore     keystore.BlockchainKeystore
	SharedMemory atomic.SharedMemory
	BCLookup     ids.AliaserReader
	SNLookup     SubnetLookup
	Metrics      metrics.OptionalGatherer

	// snowman++ attributes
	ValidatorState    validators.State  // interface for CC-Chain validators
	StakingLeafSigner crypto.Signer     // block signer
	StakingCertLeaf   *x509.Certificate // block certificate
}

Context is information about the current execution. [NetworkID] is the ID of the network this context exists within. [ChainID] is the ID of the chain this context exists within. [NodeID] is the ID of this node

func DefaultContextTest

func DefaultContextTest() *Context

type ContextInitializable

type ContextInitializable interface {
	// InitCtx initializes an object provided a *Context object
	InitCtx(ctx *Context)
}

ContextInitializable represents an object that can be initialized given a *Context object

type State

type State uint8

func (State) String

func (st State) String() string

type SubnetLookup

type SubnetLookup interface {
	SubnetID(chainID ids.ID) (ids.ID, error)
}

Directories

Path Synopsis
consensus
engine
coinflect/state
Package state manages the meta-data required by consensus for an coinflect dag.
Package state manages the meta-data required by consensus for an coinflect dag.
common
Package common is a generated GoMock package.
Package common is a generated GoMock package.
snowman/block/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
networking
tracker
Package tracker is a generated GoMock package.
Package tracker is a generated GoMock package.

Jump to

Keyboard shortcuts

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