executor

package
v1.11.1-tahoe Latest Latest
Warning

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

Go to latest
Published: Mar 6, 2024 License: BSD-3-Clause Imports: 27 Imported by: 0

README

Package executor

This package deals with state management for P-Chain blocks.

*Block

The *Block type implements the snowman.Block interface. This is the type that the platformvm deals with when it uses snowman.Blocks. *Block wraps a blocks.Block and a manager. The *Block itself doesn't have any state. The state is all held by the manager, and the *Block acts upon the manager to get/set the state. Therefore, we don't need to worry about deduplicating *Block instances.

The platformvm uses the manager to create blocks and query block state because the manager.GetBlock returns a stateful block (*Block), whereas state.State's GetStatelessBlock returns a blocks.Block.

Visitors

This package contains three implementations of blocks.Visitor: verifier, acceptor and rejector. These implement the logic for verifying, accepting and rejecting blocks. Each implementation has a reference to a shared *backend, which maintains state, etc. (The manager has a reference to the shared *backend as well.)

Documentation

Overview

Package executor is a generated GoMock package.

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrChainNotSynced = errors.New("chain not synced")
)
View Source
var (
	ErrConflictingBlockTxs = errors.New("block contains conflicting transactions")
)

Functions

This section is empty.

Types

type Block

type Block struct {
	block.Block
	// contains filtered or unexported fields
}

Exported for testing in platformvm package.

func (*Block) Accept

func (b *Block) Accept(context.Context) error

func (*Block) Options

func (b *Block) Options(context.Context) ([2]snowman.Block, error)

func (*Block) Reject

func (b *Block) Reject(context.Context) error

func (*Block) Status

func (b *Block) Status() choices.Status

func (*Block) Timestamp

func (b *Block) Timestamp() time.Time

func (*Block) Verify

func (b *Block) Verify(context.Context) error

type Manager

type Manager interface {
	state.Versions

	// Returns the ID of the most recently accepted block.
	LastAccepted() ids.ID

	SetPreference(blkID ids.ID) (updated bool)
	Preferred() ids.ID

	GetBlock(blkID ids.ID) (snowman.Block, error)
	GetStatelessBlock(blkID ids.ID) (block.Block, error)
	NewBlock(block.Block) snowman.Block

	// VerifyTx verifies that the transaction can be issued based on the currently
	// preferred state. This should *not* be used to verify transactions in a block.
	VerifyTx(tx *txs.Tx) error

	// VerifyUniqueInputs verifies that the inputs are not duplicated in the
	// provided blk or any of its ancestors pinned in memory.
	VerifyUniqueInputs(blkID ids.ID, inputs set.Set[ids.ID]) error
}

func NewManager

func NewManager(
	mempool mempool.Mempool,
	metrics metrics.Metrics,
	s state.State,
	txExecutorBackend *executor.Backend,
	validatorManager validators.Manager,
) Manager

type MockManager

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

MockManager is a mock of Manager interface.

func NewMockManager

func NewMockManager(ctrl *gomock.Controller) *MockManager

NewMockManager creates a new mock instance.

func (*MockManager) EXPECT

func (m *MockManager) EXPECT() *MockManagerMockRecorder

EXPECT returns an object that allows the caller to indicate expected use.

func (*MockManager) GetBlock

func (m *MockManager) GetBlock(blkID ids.ID) (snowman.Block, error)

GetBlock mocks base method.

func (*MockManager) GetState

func (m *MockManager) GetState(blkID ids.ID) (state.Chain, bool)

GetState mocks base method.

func (*MockManager) GetStatelessBlock

func (m *MockManager) GetStatelessBlock(blkID ids.ID) (block.Block, error)

GetStatelessBlock mocks base method.

func (*MockManager) LastAccepted

func (m *MockManager) LastAccepted() ids.ID

LastAccepted mocks base method.

func (*MockManager) NewBlock

func (m *MockManager) NewBlock(arg0 block.Block) snowman.Block

NewBlock mocks base method.

func (*MockManager) Preferred added in v1.10.16

func (m *MockManager) Preferred() ids.ID

Preferred mocks base method.

func (*MockManager) SetPreference added in v1.10.16

func (m *MockManager) SetPreference(blkID ids.ID) bool

SetPreference mocks base method.

func (*MockManager) VerifyTx added in v1.10.16

func (m *MockManager) VerifyTx(tx *txs.Tx) error

VerifyTx mocks base method.

func (*MockManager) VerifyUniqueInputs added in v1.10.18

func (m *MockManager) VerifyUniqueInputs(blkID ids.ID, inputs set.Set[ids.ID]) error

VerifyUniqueInputs mocks base method.

type MockManagerMockRecorder

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

MockManagerMockRecorder is the mock recorder for MockManager.

func (*MockManagerMockRecorder) GetBlock

func (mr *MockManagerMockRecorder) GetBlock(blkID any) *gomock.Call

GetBlock indicates an expected call of GetBlock.

func (*MockManagerMockRecorder) GetState

func (mr *MockManagerMockRecorder) GetState(blkID any) *gomock.Call

GetState indicates an expected call of GetState.

func (*MockManagerMockRecorder) GetStatelessBlock

func (mr *MockManagerMockRecorder) GetStatelessBlock(blkID any) *gomock.Call

GetStatelessBlock indicates an expected call of GetStatelessBlock.

func (*MockManagerMockRecorder) LastAccepted

func (mr *MockManagerMockRecorder) LastAccepted() *gomock.Call

LastAccepted indicates an expected call of LastAccepted.

func (*MockManagerMockRecorder) NewBlock

func (mr *MockManagerMockRecorder) NewBlock(arg0 any) *gomock.Call

NewBlock indicates an expected call of NewBlock.

func (*MockManagerMockRecorder) Preferred added in v1.10.16

func (mr *MockManagerMockRecorder) Preferred() *gomock.Call

Preferred indicates an expected call of Preferred.

func (*MockManagerMockRecorder) SetPreference added in v1.10.16

func (mr *MockManagerMockRecorder) SetPreference(blkID any) *gomock.Call

SetPreference indicates an expected call of SetPreference.

func (*MockManagerMockRecorder) VerifyTx added in v1.10.16

func (mr *MockManagerMockRecorder) VerifyTx(tx any) *gomock.Call

VerifyTx indicates an expected call of VerifyTx.

func (*MockManagerMockRecorder) VerifyUniqueInputs added in v1.10.18

func (mr *MockManagerMockRecorder) VerifyUniqueInputs(blkID, inputs any) *gomock.Call

VerifyUniqueInputs indicates an expected call of VerifyUniqueInputs.

Jump to

Keyboard shortcuts

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