block

package
v1.19.10 Latest Latest
Warning

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

Go to latest
Published: Oct 29, 2025 License: BSD-3-Clause Imports: 6 Imported by: 28

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrRemoteVMNotImplemented is returned when the remote VM is not implemented
	ErrRemoteVMNotImplemented = errors.New("remote VM not implemented")
	// ErrStateSyncableVMNotImplemented is returned when state syncable VM is not implemented
	ErrStateSyncableVMNotImplemented = errors.New("state syncable VM not implemented")
)

Functions

This section is empty.

Types

type AppSender

type AppSender interface {
	SendAppRequest(ctx context.Context, nodeIDs []ids.NodeID, requestID uint32, appRequestBytes []byte) error
	SendAppResponse(ctx context.Context, nodeID ids.NodeID, requestID uint32, appResponseBytes []byte) error
	SendAppError(ctx context.Context, nodeID ids.NodeID, requestID uint32, errorCode int32, errorMessage string) error
	SendAppGossip(ctx context.Context, nodeIDs []ids.NodeID, appGossipBytes []byte) error
}

AppSender sends application messages

type BatchedChainVM

type BatchedChainVM interface {
	ChainVM
	GetAncestors(
		ctx context.Context,
		blkID ids.ID,
		maxBlocksNum int,
		maxBlocksSize int,
		maxBlocksRetrievalTime time.Duration,
	) ([][]byte, error)
	BatchedParseBlock(ctx context.Context, blks [][]byte) ([]Block, error)
}

BatchedChainVM extends ChainVM with batch operations

type Block

type Block interface {
	ID() ids.ID
	Parent() ids.ID // Alias for ParentID for compatibility
	ParentID() ids.ID
	Height() uint64
	Timestamp() time.Time
	Status() uint8
	Verify(context.Context) error
	Accept(context.Context) error
	Reject(context.Context) error
	Bytes() []byte
}

Block is a block in the chain

type BuildBlockWithContextChainVM

type BuildBlockWithContextChainVM interface {
	ChainVM
	BuildBlockWithContext(ctx context.Context, blockCtx *Context) (Block, error)
}

BuildBlockWithContextChainVM extends ChainVM with context-aware block building

type BuildBlockWithContextVM

type BuildBlockWithContextVM interface {
	ChainVM
	BuildBlockWithContext(context.Context, *Context) (Block, error)
}

BuildBlockWithContextVM extends ChainVM with context support

type ChainContext

type ChainContext struct {
	*consensuscontext.Context
}

ChainContext provides chain context

type ChainVM

type ChainVM interface {
	// Initialize initializes the VM
	Initialize(
		ctx context.Context,
		chainCtx interface{},
		db interface{},
		genesisBytes []byte,
		upgradeBytes []byte,
		configBytes []byte,
		msgChan interface{},
		fxs []interface{},
		appSender interface{},
	) error

	// BuildBlock builds a new block
	BuildBlock(context.Context) (Block, error)

	// ParseBlock parses a block from bytes
	ParseBlock(context.Context, []byte) (Block, error)

	// GetBlock gets a block by ID
	GetBlock(context.Context, ids.ID) (Block, error)

	// GetBlockIDAtHeight gets block ID at a specific height
	GetBlockIDAtHeight(context.Context, uint64) (ids.ID, error)

	// SetPreference sets the preferred block
	SetPreference(context.Context, ids.ID) error

	// LastAccepted returns the last accepted block
	LastAccepted(context.Context) (ids.ID, error)

	// WaitForEvent blocks until an event occurs that should trigger block building
	WaitForEvent(context.Context) (interface{}, error)
}

ChainVM defines the interface for a blockchain VM

type Context

type Context struct {
	PChainHeight uint64
}

Context provides context for building blocks

type DBManager

type DBManager = manager.Manager

DBManager manages databases

type Fx

type Fx struct {
	ID ids.ID
	Fx interface{}
}

Fx represents a feature extension

type Message

type Message struct {
	Type uint32
	Data []byte
}

Message represents a message to the VM

type StateSummary

type StateSummary interface {
	ID() ids.ID
	Height() uint64
	Bytes() []byte
	Accept(context.Context) (StateSyncMode, error)
}

StateSummary represents a state summary

type StateSyncMode

type StateSyncMode uint8

StateSyncMode defines state sync modes

const (
	StateSyncSkipped StateSyncMode = iota
	StateSyncStatic
	StateSyncDynamic
)

type StateSyncableVM

type StateSyncableVM interface {
	ChainVM

	// StateSyncEnabled returns whether state sync is enabled
	StateSyncEnabled(context.Context) (bool, error)

	// GetOngoingSyncStateSummary returns the ongoing sync state summary
	GetOngoingSyncStateSummary(context.Context) (StateSummary, error)

	// GetLastStateSummary returns the last state summary
	GetLastStateSummary(context.Context) (StateSummary, error)

	// ParseStateSummary parses a state summary
	ParseStateSummary(context.Context, []byte) (StateSummary, error)

	// GetStateSummary gets a state summary by height
	GetStateSummary(context.Context, uint64) (StateSummary, error)
}

StateSyncableVM defines a VM that supports state sync

type WithVerifyContext

type WithVerifyContext interface {
	// VerifyWithContext verifies with context
	VerifyWithContext(context.Context, *Context) error

	// ShouldVerifyWithContext returns whether to verify with context
	ShouldVerifyWithContext(context.Context) (bool, error)
}

WithVerifyContext provides verify context support

Directories

Path Synopsis
Package blockmock is a generated GoMock package.
Package blockmock is a generated GoMock package.
Package blocktest provides test utilities for blocks
Package blocktest provides test utilities for blocks

Jump to

Keyboard shortcuts

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