mempool

package
v1.0.0-alpha.7 Latest Latest
Warning

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

Go to latest
Published: Feb 21, 2024 License: Apache-2.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrStateNotFound = ierrors.New("state not found")

Functions

This section is empty.

Types

type CommitmentInputState

type CommitmentInputState struct {
	Commitment *iotago.Commitment
}

A thin wrapper around a resolved commitment.

func CommitmentInputStateFromCommitment

func CommitmentInputStateFromCommitment(commitment *iotago.Commitment) CommitmentInputState

func (CommitmentInputState) IsReadOnly

func (s CommitmentInputState) IsReadOnly() bool

func (CommitmentInputState) StateID

func (s CommitmentInputState) StateID() StateID

func (CommitmentInputState) Type

type CommitmentInputStateRef

type CommitmentInputStateRef struct {
	Input *iotago.CommitmentInput
}

A thin wrapper around a Commitment input.

func CommitmentInputStateRefFromInput

func CommitmentInputStateRefFromInput(input *iotago.CommitmentInput) CommitmentInputStateRef

func (CommitmentInputStateRef) ReferencedStateID

func (r CommitmentInputStateRef) ReferencedStateID() iotago.Identifier

func (CommitmentInputStateRef) Type

type MemPool

type MemPool[VoteRank spenddag.VoteRankType[VoteRank]] interface {
	AttachSignedTransaction(signedTransaction SignedTransaction, transaction Transaction, blockID iotago.BlockID) (signedTransactionMetadata SignedTransactionMetadata, err error)

	OnSignedTransactionAttached(callback func(signedTransactionMetadata SignedTransactionMetadata), opts ...event.Option) *event.Hook[func(metadata SignedTransactionMetadata)]

	OnTransactionAttached(callback func(metadata TransactionMetadata), opts ...event.Option) *event.Hook[func(metadata TransactionMetadata)]

	MarkAttachmentIncluded(blockID iotago.BlockID) bool

	StateMetadata(reference StateReference) (state StateMetadata, err error)

	TransactionMetadata(id iotago.TransactionID) (transaction TransactionMetadata, exists bool)

	VM() VM

	InjectRequestedState(state State)

	TransactionMetadataByAttachment(blockID iotago.BlockID) (transaction TransactionMetadata, exists bool)

	CommitStateDiff(slot iotago.SlotIndex) (StateDiff, error)

	Evict(slot iotago.SlotIndex)

	// Reset resets the component to a clean state as if it was created at the last commitment.
	Reset()
}

type SignedTransaction

type SignedTransaction interface {
	// ID returns the identifier of the Transaction that contains a signature.
	ID() (iotago.SignedTransactionID, error)
}

type SignedTransactionMetadata

type SignedTransactionMetadata interface {
	ID() iotago.SignedTransactionID

	SignedTransaction() SignedTransaction

	OnSignaturesValid(func()) (unsubscribe func())

	OnSignaturesInvalid(func(err error)) (unsubscribe func())

	TransactionMetadata() TransactionMetadata

	Attachments() []iotago.BlockID
}

type State

type State interface {
	// The identifier of the state.
	StateID() StateID

	// The type of state.
	Type() StateType

	// Whether the state is read only.
	IsReadOnly() bool
}

A generic interface over a state (like an output or a commitment).

type StateDiff

type StateDiff interface {
	// Slot returns the slot index of the state diff.
	Slot() iotago.SlotIndex

	// DestroyedStates returns a compacted list of all the states that were destroyed in the slot.
	DestroyedStates() *shrinkingmap.ShrinkingMap[StateID, StateMetadata]

	// CreatedStates returns a compacted list of all the states that were created in the slot.
	CreatedStates() *shrinkingmap.ShrinkingMap[StateID, StateMetadata]

	// ExecutedTransactions returns an un-compacted list of all the transactions that were executed in the slot.
	ExecutedTransactions() *orderedmap.OrderedMap[iotago.TransactionID, TransactionMetadata]

	// Mutations returns an authenticated data structure that allows to commit to the applied mutations.
	Mutations() ads.Set[iotago.Identifier, iotago.TransactionID]

	// Reset resets the component to a clean state as if it was created at the last commitment.
	Reset() error
}

StateDiff is a collection of changes that happened in a certain slot and that can be applied to the ledger state.

type StateID

type StateID = iotago.Identifier

type StateMetadata

type StateMetadata interface {
	State() State

	SpenderIDs() reactive.Set[iotago.TransactionID]

	PendingSpenderCount() int

	AcceptedSpender() (TransactionMetadata, bool)

	OnAcceptedSpenderUpdated(callback func(spender TransactionMetadata))
	// contains filtered or unexported methods
}

type StateReference

type StateReference interface {
	// The identifier of the state to which it resolves.
	ReferencedStateID() iotago.Identifier

	// The type of state.
	Type() StateType
}

A reference to a state (like an output or a commitment).

type StateResolver

type StateResolver func(reference StateReference) *promise.Promise[State]

StateResolver is a function that resolves a StateReference to a Promise with the State.

type StateType

type StateType byte

StateType denotes the type of state.

const (
	StateTypeUTXOInput StateType = iota
	StateTypeCommitment
)

type Transaction

type Transaction interface {
	// ID returns the identifier of the Transaction.
	ID() (iotago.TransactionID, error)
}

type TransactionMetadata

type TransactionMetadata interface {
	ID() iotago.TransactionID

	Transaction() Transaction

	Inputs() ds.Set[StateMetadata]

	Outputs() ds.Set[StateMetadata]

	SpenderIDs() reactive.Set[iotago.TransactionID]

	Commit()

	IsSolid() bool

	OnSolid(func())

	IsExecuted() bool

	OnExecuted(func())

	IsInvalid() bool

	OnInvalid(func(error))

	IsBooked() bool

	OnBooked(func())

	IsConflicting() bool

	OnConflicting(func())

	ValidAttachments() []iotago.BlockID

	EarliestIncludedAttachment() iotago.BlockID

	OnEarliestIncludedAttachmentUpdated(func(prevID, newID iotago.BlockID))

	OnEvicted(func())
	// contains filtered or unexported methods
}

type UTXOInputStateRef

type UTXOInputStateRef struct {
	Input *iotago.UTXOInput
}

A thin wrapper around a UTXO input.

func UTXOInputStateRefFromInput

func UTXOInputStateRefFromInput(input *iotago.UTXOInput) UTXOInputStateRef

func (UTXOInputStateRef) ReferencedStateID

func (r UTXOInputStateRef) ReferencedStateID() iotago.Identifier

func (UTXOInputStateRef) Type

func (r UTXOInputStateRef) Type() StateType

type VM

type VM interface {
	// Inputs returns the referenced inputs of the given transaction.
	Inputs(transaction Transaction) ([]StateReference, error)

	// ValidateSignatures validates the signatures of the given SignedTransaction and returns the execution context.
	ValidateSignatures(signedTransaction SignedTransaction, inputs []State) (executionContext context.Context, err error)

	// Execute executes the transaction in the given execution context and returns the resulting states.
	Execute(executionContext context.Context, transaction Transaction) (outputs []State, err error)
}

VM is the interface that defines the virtual machine that is used to validate and execute transactions.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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