Documentation
¶
Index ¶
- Constants
- Variables
- func NewBLSAuth(config *Config) (BLSSigner, BLSVerifier, error)
- type BLSSigner
- type BLSVerifier
- type Block
- type BlockBuilder
- type Comm
- type Config
- type Engine
- func (*Engine) Gossip(_ context.Context) error
- func (e *Engine) HealthCheck(ctx context.Context) (interface{}, error)
- func (*Engine) Notify(_ context.Context, _ common.Message) error
- func (e *Engine) Shutdown(_ context.Context) error
- func (e *Engine) Simplex(ctx context.Context, nodeID ids.NodeID, msg *p2p.Simplex) error
- func (e *Engine) Start(_ context.Context, _ uint32) error
- type QC
- type QCDeserializer
- type SignFunc
- type SignatureAggregator
- type SimplexChainContext
- type Storage
Constants ¶
const CodecVersion = warp.CodecVersion + 1
Variables ¶
var Codec codec.Manager
Functions ¶
func NewBLSAuth ¶
func NewBLSAuth(config *Config) (BLSSigner, BLSVerifier, error)
Types ¶
type BLSSigner ¶
type BLSSigner struct {
// contains filtered or unexported fields
}
BLSSigner signs messages encoded with the provided ChainID and NetworkID. using the SignBLS function.
type BLSVerifier ¶
type BLSVerifier struct {
// contains filtered or unexported fields
}
type Block ¶ added in v1.13.3
type Block struct {
// contains filtered or unexported fields
}
func (*Block) BlockHeader ¶ added in v1.13.3
func (b *Block) BlockHeader() simplex.BlockHeader
BlockHeader returns the block header for the block.
type BlockBuilder ¶ added in v1.14.0
type BlockBuilder struct {
// contains filtered or unexported fields
}
func (*BlockBuilder) BuildBlock ¶ added in v1.14.0
func (b *BlockBuilder) BuildBlock(ctx context.Context, metadata simplex.ProtocolMetadata, blacklist simplex.Blacklist) (simplex.VerifiedBlock, bool)
BuildBlock continuously tries to build a block until the context is cancelled. If there are no blocks to be built, it will wait for an event from the VM. It returns false if the context was cancelled, otherwise it returns the built block and true.
func (*BlockBuilder) WaitForPendingBlock ¶ added in v1.14.0
func (b *BlockBuilder) WaitForPendingBlock(ctx context.Context)
WaitForPendingBlock blocks until a new block is ready to be built from the VM, or until the context is cancelled.
type Config ¶
type Config struct {
Ctx SimplexChainContext
Log logging.Logger
Sender sender.ExternalSender
OutboundMsgBuilder message.OutboundMsgBuilder
VM block.ChainVM
DB database.KeyValueReaderWriter
// In the case of a crash, Simplex uses the WAL to recover its state and resume consensus.
WAL simplex.WriteAheadLog
// SignBLS is the signing function used for this node to sign messages.
SignBLS SignFunc
// Parameters passed in by the subnet configuration
Params *simplexparams.Parameters
}
Config wraps all the parameters needed for a simplex engine
type Engine ¶ added in v1.14.2
type Engine struct {
// list of NoOpsHandler for messages dropped by engine
common.AllGetsServer
common.StateSummaryFrontierHandler
common.AcceptedStateSummaryHandler
common.AcceptedFrontierHandler
common.AcceptedHandler
common.AncestorsHandler
common.PutHandler
common.QueryHandler
common.ChitsHandler
// Handler that passes application messages to the VM
common.AppHandler
validators.Connector
// contains filtered or unexported fields
}
func NewEngine ¶ added in v1.14.2
NewEngine creates a new simplex engine. The VM must be initialized before calling this function.
func (*Engine) Gossip ¶ added in v1.15.0
Gossip is a no-op because there is no need for the Simplex engine to periodically pull/push messages from the network. This is all handled internally inside of Simplex consensus.
func (*Engine) HealthCheck ¶ added in v1.15.0
func (*Engine) Notify ¶ added in v1.15.0
Notify is a no-op because the Simplex engine does not need to be notified of any events from the VM. This is because the Simplex instance listens to the VM events by directly calling `WaitForEvent` when needed.
type QC ¶ added in v1.13.4
type QC struct {
// contains filtered or unexported fields
}
QC represents a quorum certificate in the Simplex consensus protocol.
type QCDeserializer ¶ added in v1.13.4
type QCDeserializer struct {
// contains filtered or unexported fields
}
func (*QCDeserializer) DeserializeQuorumCertificate ¶ added in v1.13.4
func (d *QCDeserializer) DeserializeQuorumCertificate(bytes []byte) (simplex.QuorumCertificate, error)
DeserializeQuorumCertificate deserializes a quorum certificate from bytes.
type SignatureAggregator ¶ added in v1.13.4
type SignatureAggregator struct {
// contains filtered or unexported fields
}
SignatureAggregator aggregates signatures into a quorum certificate.
func (*SignatureAggregator) Aggregate ¶ added in v1.13.4
func (a *SignatureAggregator) Aggregate(signatures []simplex.Signature) (simplex.QuorumCertificate, error)
Aggregate aggregates the provided signatures into a quorum certificate. It requires at least a quorum of signatures to succeed. If any signature is from a signer not in the membership set, it returns an error.
func (*SignatureAggregator) IsQuorum ¶ added in v1.15.0
func (a *SignatureAggregator) IsQuorum(nodes []simplex.NodeID) bool
IsQuorum checks if the provided nodes are a quorum of the membership set. For now, this is calculated using one node = one vote, but in the future we can adjust this calculation to cross reference validator weights if we want to support PoS.
type SimplexChainContext ¶
type SimplexChainContext struct {
// NodeID is the ID of this node
NodeID ids.NodeID
// ChainID is the ID of the chain this context exists within.
ChainID ids.ID
// SubnetID is the ID of the subnet this context exists within.
SubnetID ids.ID
// Network is the ID of the network this context exists within.
NetworkID uint32
}
Context is information about the current execution.
type Storage ¶ added in v1.13.5
type Storage struct {
// contains filtered or unexported fields
}
func (*Storage) Index ¶ added in v1.13.5
func (s *Storage) Index(ctx context.Context, block simplex.VerifiedBlock, finalization simplex.Finalization) error
Index indexes the finalization in the storage. It stores the finalization bytes and increments numBlocks.
func (*Storage) Retrieve ¶ added in v1.13.5
func (s *Storage) Retrieve(seq uint64) (simplex.VerifiedBlock, simplex.Finalization, error)
Retrieve returns the block and finalization at [seq]. If [seq] is not found, returns simplex.ErrBlockNotFound.