 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Overview ¶
Package consensus contains Neo consensus node implementation.
It uses external dBFT library for the core algorithm and basically joins this library with Neo node internals implemented in NeoGo.
Index ¶
- type Config
- type Ledger
- type Payload
- func (p *Payload) DecodeBinary(r *io.BinReader)
- func (p *Payload) EncodeBinary(w *io.BinWriter)
- func (p Payload) GetChangeView() payload.ChangeView
- func (p Payload) GetCommit() payload.Commit
- func (p Payload) GetPrepareRequest() payload.PrepareRequest
- func (p Payload) GetPrepareResponse() payload.PrepareResponse
- func (p Payload) GetRecoveryMessage() payload.RecoveryMessage
- func (p Payload) GetRecoveryRequest() payload.RecoveryRequest
- func (p *Payload) Hash() util.Uint256
- func (p Payload) Height() uint32
- func (p Payload) Payload() interface{}
- func (p *Payload) SetHeight(h uint32)
- func (p *Payload) SetPayload(pl interface{})
- func (p *Payload) SetType(t payload.MessageType)
- func (p *Payload) SetValidatorIndex(i uint16)
- func (p *Payload) SetViewNumber(view byte)
- func (p *Payload) Sign(key *privateKey) error
- func (p Payload) Type() payload.MessageType
- func (p Payload) ValidatorIndex() uint16
- func (p Payload) ViewNumber() byte
 
- type Service
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct {
	// Logger is a logger instance.
	Logger *zap.Logger
	// Broadcast is a callback which is called to notify the server
	// about a new consensus payload to be sent.
	Broadcast func(p *npayload.Extensible)
	// Chain is a Ledger instance.
	Chain Ledger
	// ProtocolConfiguration contains protocol settings.
	ProtocolConfiguration config.ProtocolConfiguration
	// RequestTx is a callback to which will be called
	// when a node lacks transactions present in the block.
	RequestTx func(h ...util.Uint256)
	// StopTxFlow is a callback that is called after the consensus
	// process stops accepting incoming transactions.
	StopTxFlow func()
	// TimePerBlock is minimal time that should pass before the next block is accepted.
	TimePerBlock time.Duration
	// Wallet is a local-node wallet configuration. If the path is empty, then
	// no wallet will be initialized and the service will be in watch-only mode.
	Wallet config.Wallet
}
    Config is a configuration for consensus services.
type Ledger ¶ added in v0.98.1
type Ledger interface {
	AddBlock(block *coreb.Block) error
	ApplyPolicyToTxSet([]*transaction.Transaction) []*transaction.Transaction
	GetConfig() config.Blockchain
	GetMemPool() *mempool.Pool
	GetNextBlockValidators() ([]*keys.PublicKey, error)
	GetStateRoot(height uint32) (*state.MPTRoot, error)
	GetTransaction(util.Uint256) (*transaction.Transaction, uint32, error)
	GetValidators() ([]*keys.PublicKey, error)
	PoolTx(t *transaction.Transaction, pools ...*mempool.Pool) error
	SubscribeForBlocks(ch chan *coreb.Block)
	UnsubscribeFromBlocks(ch chan *coreb.Block)
	GetBaseExecFee() int64
	interop.Ledger
	mempool.Feer
}
    Ledger is the interface to Blockchain sufficient for Service.
type Payload ¶
type Payload struct {
	npayload.Extensible
	// contains filtered or unexported fields
}
    Payload is a type for consensus-related messages.
func NewPayload ¶ added in v0.90.0
NewPayload creates a new consensus payload for the provided network.
func (*Payload) DecodeBinary ¶
DecodeBinary implements the io.Serializable interface.
func (*Payload) EncodeBinary ¶
EncodeBinary implements the io.Serializable interface.
func (Payload) GetChangeView ¶
func (p Payload) GetChangeView() payload.ChangeView
GetChangeView implements the payload.ConsensusPayload interface.
func (Payload) GetPrepareRequest ¶
func (p Payload) GetPrepareRequest() payload.PrepareRequest
GetPrepareRequest implements the payload.ConsensusPayload interface.
func (Payload) GetPrepareResponse ¶
func (p Payload) GetPrepareResponse() payload.PrepareResponse
GetPrepareResponse implements the payload.ConsensusPayload interface.
func (Payload) GetRecoveryMessage ¶
func (p Payload) GetRecoveryMessage() payload.RecoveryMessage
GetRecoveryMessage implements the payload.ConsensusPayload interface.
func (Payload) GetRecoveryRequest ¶
func (p Payload) GetRecoveryRequest() payload.RecoveryRequest
GetRecoveryRequest implements the payload.ConsensusPayload interface.
func (Payload) Payload ¶
func (p Payload) Payload() interface{}
Payload implements the payload.ConsensusPayload interface.
func (*Payload) SetPayload ¶
func (p *Payload) SetPayload(pl interface{})
SetPayload implements the payload.ConsensusPayload interface.
func (*Payload) SetType ¶
func (p *Payload) SetType(t payload.MessageType)
SetType implements the payload.ConsensusPayload interface.
func (*Payload) SetValidatorIndex ¶
SetValidatorIndex implements the payload.ConsensusPayload interface.
func (*Payload) SetViewNumber ¶
SetViewNumber implements the payload.ConsensusPayload interface.
func (*Payload) Sign ¶
Sign signs payload using the private key. It also sets corresponding verification and invocation scripts.
func (Payload) Type ¶
func (p Payload) Type() payload.MessageType
Type implements the payload.ConsensusPayload interface.
func (Payload) ValidatorIndex ¶
ValidatorIndex implements the payload.ConsensusPayload interface.
func (Payload) ViewNumber ¶
ViewNumber implements the payload.ConsensusPayload interface.
type Service ¶
type Service interface {
	// Name returns service name.
	Name() string
	// Start initializes dBFT and starts event loop for consensus service.
	// It must be called only when the sufficient amount of peers are connected.
	// The service only starts once, subsequent calls to Start are no-op.
	Start()
	// Shutdown stops dBFT event loop. It can only be called once, subsequent calls
	// to Shutdown on the same instance are no-op. The instance that was stopped can
	// not be started again by calling Start (use a new instance if needed).
	Shutdown()
	// OnPayload is a callback to notify the Service about a newly received payload.
	OnPayload(p *npayload.Extensible) error
	// OnTransaction is a callback to notify the Service about a newly received transaction.
	OnTransaction(tx *transaction.Transaction)
}
    Service represents a consensus instance.
func NewService ¶
NewService returns a new consensus.Service instance.