block

package
v1.4.0 Latest Latest
Warning

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

Go to latest
Published: Sep 30, 2024 License: MIT Imports: 35 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AuthoritySignature

type AuthoritySignature struct{}

AuthoritySignature processes delegated signatures.

func (AuthoritySignature) Process

func (AuthoritySignature) Validate

type Block

type Block struct {
	execute.BlockParams
	State    BlockState
	Batch    *database.Batch
	Executor *Executor
	// contains filtered or unexported fields
}

Block implements execute.Block.

func (*Block) Close

func (block *Block) Close() (execute.BlockState, error)

Close ends the block and returns the block state.

func (*Block) Params

func (b *Block) Params() execute.BlockParams

func (*Block) Process

func (b *Block) Process(envelope *messaging.Envelope) ([]*protocol.TransactionStatus, error)

Process processes a message bundle.

type BlockAnchor

type BlockAnchor struct{}

BlockAnchor executes the signature, queuing the transaction for processing when appropriate.

func (BlockAnchor) Process

func (x BlockAnchor) Process(batch *database.Batch, ctx *MessageContext) (_ *protocol.TransactionStatus, err error)

func (BlockAnchor) Validate

type BlockAnchorState

type BlockAnchorState struct {
}

BlockAnchorState is used to construct the anchor for the block.

type BlockState

type BlockState struct {
	OpenedMajorBlock   bool
	MakeMajorBlock     uint64
	MakeMajorBlockTime time.Time
	Delivered          uint64
	Signed             uint64
	Produced           int
	ChainUpdates       chain.ChainUpdates
	ReceivedAnchors    []*chain.ReceivedAnchor
	PreviousStateHash  [32]byte
	AcmeBurnt          big.Int
	NetworkUpdate      []*protocol.NetworkAccountUpdate

	Anchor     *BlockAnchorState
	MajorBlock *MajorBlockState

	PendingTxns map[[32]byte]*protocol.Transaction
	PendingSigs map[[32]byte]*PendingAuthSig
	Events      int
}

BlockState tracks various metrics of a block of transactions as they are executed.

func (*BlockState) Empty

func (s *BlockState) Empty() bool

Empty returns true if nothing happened during the block.

func (*BlockState) GetPendingSigs added in v1.3.0

func (s *BlockState) GetPendingSigs() []*PendingAuthSig

func (*BlockState) GetPendingTxns added in v1.3.0

func (s *BlockState) GetPendingTxns() []*protocol.Transaction

func (*BlockState) MarkSignaturePending added in v1.3.0

func (s *BlockState) MarkSignaturePending(txn *protocol.Transaction, auth *url.URL)

func (*BlockState) MarkTransactionDelivered added in v1.2.0

func (s *BlockState) MarkTransactionDelivered(id *url.TxID)

func (*BlockState) MarkTransactionPending added in v1.2.0

func (s *BlockState) MarkTransactionPending(txn *protocol.Transaction)

func (*BlockState) MergeSignature

func (s *BlockState) MergeSignature(r *ProcessSignatureState)

func (*BlockState) MergeTransaction

func (s *BlockState) MergeTransaction(r *chain.ProcessTransactionState)

type BlockTimerType

type BlockTimerType uint64
const BlockTimerTypeBeginBlock BlockTimerType = 2

BlockTimerTypeBeginBlock .

const BlockTimerTypeCheckTx BlockTimerType = 3

BlockTimerTypeCheckTx .

const BlockTimerTypeCommit BlockTimerType = 6

BlockTimerTypeCommit .

const BlockTimerTypeDeliverTx BlockTimerType = 4

BlockTimerTypeDeliverTx .

const BlockTimerTypeEndBlock BlockTimerType = 5

BlockTimerTypeEndBlock .

const BlockTimerTypeExecuteEnvelope BlockTimerType = 0

BlockTimerTypeExecuteEnvelope .

const BlockTimerTypeNetworkAccountUpdates BlockTimerType = 8

BlockTimerTypeNetworkAccountUpdates .

const BlockTimerTypeProcessRemoteSignatures BlockTimerType = 9

BlockTimerTypeProcessRemoteSignatures .

const BlockTimerTypeProcessSignature BlockTimerType = 1

BlockTimerTypeProcessSignature .

const BlockTimerTypeProcessTransaction BlockTimerType = 10

BlockTimerTypeProcessTransaction .

const BlockTimerTypeSigning BlockTimerType = 7

BlockTimerTypeSigning .

const BlockTimerTypeTransactionOffset BlockTimerType = 240

BlockTimerTypeTransactionOffset .

func BlockTimerTypeByName

func BlockTimerTypeByName(name string) (BlockTimerType, bool)

BlockTimerTypeByName returns the named Block Timer Type.

func (BlockTimerType) GetEnumValue

func (v BlockTimerType) GetEnumValue() uint64

GetEnumValue returns the value of the Block Timer Type

func (BlockTimerType) MarshalJSON

func (v BlockTimerType) MarshalJSON() ([]byte, error)

MarshalJSON marshals the Block Timer Type to JSON as a string.

func (*BlockTimerType) SetEnumValue

func (v *BlockTimerType) SetEnumValue(id uint64) bool

SetEnumValue sets the value. SetEnumValue returns false if the value is invalid.

func (BlockTimerType) String

func (v BlockTimerType) String() string

String returns the name of the Block Timer Type.

func (*BlockTimerType) UnmarshalJSON

func (v *BlockTimerType) UnmarshalJSON(data []byte) error

UnmarshalJSON unmarshals the Block Timer Type from JSON as a string.

type CreditPayment

type CreditPayment struct{}

CreditPayment processes a credit payment

func (CreditPayment) Process

func (x CreditPayment) Process(batch *database.Batch, ctx *MessageContext) (_ *protocol.TransactionStatus, err error)

func (CreditPayment) Validate

type DidUpdateExecutorVersion added in v1.4.0

type DidUpdateExecutorVersion struct{}

DidUpdateExecutorVersion constructs a transaction for the network update and queues it for processing.

func (DidUpdateExecutorVersion) Process added in v1.4.0

func (DidUpdateExecutorVersion) Validate added in v1.4.0

type Dispatcher

type Dispatcher = execute.Dispatcher

type Executor

type Executor struct {
	ExecutorOptions
	BlockTimers TimerSet
	// contains filtered or unexported fields
}

func NewExecutor

func NewExecutor(opts ExecutorOptions) (*Executor, error)

NewExecutor creates a new Executor.

func (*Executor) ActiveGlobals_TESTONLY

func (m *Executor) ActiveGlobals_TESTONLY() *core.GlobalValues

func (*Executor) Begin

func (x *Executor) Begin(params execute.BlockParams) (_ execute.Block, err error)

Begin constructs a Block and calls [Executor.BeginBlock].

func (*Executor) EnableTimers

func (m *Executor) EnableTimers()

func (*Executor) Init added in v1.2.0

func (x *Executor) Init(validators []*execute.ValidatorUpdate) (additional []*execute.ValidatorUpdate, err error)

func (*Executor) LastBlock

func (x *Executor) LastBlock() (*execute.BlockParams, [32]byte, error)

func (*Executor) SetExecutor_TESTONLY

func (x *Executor) SetExecutor_TESTONLY(y chain.TransactionExecutor)

func (*Executor) StoreBlockTimers

func (m *Executor) StoreBlockTimers(ds *logging.DataSet)

func (*Executor) Validate

func (x *Executor) Validate(envelope *messaging.Envelope, _ bool) ([]*protocol.TransactionStatus, error)

Validate converts the message to a delivery and validates it. Validate returns an error if the message is not a [message.LegacyMessage].

type ExecutorFactory1 added in v1.4.0

type ExecutorFactory1[T any, V interface{ Type() T }] func(ExecutorOptions) (T, ExecutorFactory2[T, V])

type ExecutorFactory2 added in v1.4.0

type ExecutorFactory2[T any, V interface{ Type() T }] func(V) (ExecutorFor[T, V], bool)

type ExecutorFor

type ExecutorFor[T any, V interface{ Type() T }] interface {
	Process(*database.Batch, V) (*protocol.TransactionStatus, error)
	Validate(*database.Batch, V) (*protocol.TransactionStatus, error)
}

type ExecutorOptions

type ExecutorOptions = execute.Options

type ExpiredTransaction added in v1.2.0

type ExpiredTransaction struct{}

ExpiredTransaction expires a transaction

func (ExpiredTransaction) Process added in v1.2.0

func (ExpiredTransaction) Validate added in v1.2.0

type Globals

type Globals struct {
	Active, Pending core.GlobalValues
}

type MajorBlockState added in v1.4.0

type MajorBlockState struct {
	Time  time.Time
	Index uint64
}

type MakeMajorBlock added in v1.4.0

type MakeMajorBlock struct{}

MakeMajorBlock lists a transaction as pending on an authority.

func (MakeMajorBlock) Process added in v1.4.0

func (x MakeMajorBlock) Process(batch *database.Batch, ctx *MessageContext) (_ *protocol.TransactionStatus, err error)

func (MakeMajorBlock) Validate added in v1.4.0

type MessageContext

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

MessageContext is the context in which a message is processed.

func (*MessageContext) AuthorityDidVote added in v1.2.0

func (m *MessageContext) AuthorityDidVote(batch *database.Batch, transaction *protocol.Transaction, authUrl *url.URL) (bool, protocol.VoteType, error)

func (*MessageContext) AuthorityWillVote added in v1.2.0

func (m *MessageContext) AuthorityWillVote(batch *database.Batch, block uint64, transaction *protocol.Transaction, authUrl *url.URL) (*chain.AuthVote, error)

AuthorityWillVote checks if the authority is ready to vote. MUST NOT MODIFY STATE.

func (*MessageContext) GetActiveGlobals added in v1.2.0

func (m *MessageContext) GetActiveGlobals() *core.GlobalValues

func (MessageContext) GetSignatureAs added in v1.2.0

func (b MessageContext) GetSignatureAs(batch *database.Batch, hash [32]byte) (protocol.Signature, error)

GetSignatureAs loads a Signature from the database or from the message bundle.

func (*MessageContext) SignerWillVote added in v1.2.0

func (m *MessageContext) SignerWillVote(batch *database.Batch, block uint64, transaction *protocol.Transaction, signerUrl *url.URL) (bool, protocol.VoteType, error)

SignerWillVote checks if the signer is ready to vote. MUST NOT MODIFY STATE.

func (*MessageContext) TransactionIsInitiated added in v1.2.0

func (*MessageContext) TransactionIsInitiated(batch *database.Batch, transaction *protocol.Transaction) (bool, *messaging.CreditPayment, error)

func (*MessageContext) Type

type MessageIsReady

type MessageIsReady struct{}

MessageIsReady executes a message.

func (MessageIsReady) Process

func (MessageIsReady) Validate

type NetworkMaintenanceOp added in v1.3.0

type NetworkMaintenanceOp struct{}

NetworkMaintenanceOp constructs a transaction for the network update and queues it for processing.

func (NetworkMaintenanceOp) Process added in v1.3.0

func (NetworkMaintenanceOp) Validate added in v1.3.0

type NetworkUpdate

type NetworkUpdate struct{}

NetworkUpdate constructs a transaction for the network update and queues it for processing.

func (NetworkUpdate) Process

func (x NetworkUpdate) Process(batch *database.Batch, ctx *MessageContext) (_ *protocol.TransactionStatus, err error)

func (NetworkUpdate) Validate

type PendingAuthSig added in v1.3.0

type PendingAuthSig struct {
	Transaction *protocol.Transaction
	Authorities map[[32]byte]*url.URL
}

func (*PendingAuthSig) GetAuthorities added in v1.3.0

func (p *PendingAuthSig) GetAuthorities() []*url.URL

type ProcessSignatureState

type ProcessSignatureState struct {
}

func (*ProcessSignatureState) Merge

type ProducedMessage

type ProducedMessage struct {
	// Producer is the ID of the producer.
	Producer *url.TxID

	// Destination is the account that the message should be routed to.
	Destination *url.URL

	// Message is the produced message.
	Message messaging.Message
}

ProducedMessage is a message produced by another message.

type PseudoSynthetic

type PseudoSynthetic struct{}

PseudoSynthetic executes a message.

func (PseudoSynthetic) Process

func (PseudoSynthetic) Validate

type SequencedMessage

type SequencedMessage struct{ TransactionMessage }

SequencedMessage records the sequence metadata and executes the message inside.

func (SequencedMessage) Process

func (x SequencedMessage) Process(batch *database.Batch, ctx *MessageContext) (_ *protocol.TransactionStatus, err error)

func (SequencedMessage) Validate

type SignatureContext

type SignatureContext struct {
	*TransactionContext
	// contains filtered or unexported fields
}

SignatureContext is the context in which a message is executed.

func (SignatureContext) GetSignatureAs added in v1.2.0

func (b SignatureContext) GetSignatureAs(batch *database.Batch, hash [32]byte) (protocol.Signature, error)

GetSignatureAs loads a Signature from the database or from the message bundle.

func (*SignatureContext) Type

type SignatureMessage

type SignatureMessage struct{}

SignatureMessage executes the signature, queuing the transaction for processing when appropriate.

func (SignatureMessage) Process

func (x SignatureMessage) Process(batch *database.Batch, ctx *MessageContext) (_ *protocol.TransactionStatus, err error)

func (SignatureMessage) Validate

type SignatureRequest

type SignatureRequest struct{}

SignatureRequest lists a transaction as pending on an authority.

func (SignatureRequest) Process

func (x SignatureRequest) Process(batch *database.Batch, ctx *MessageContext) (_ *protocol.TransactionStatus, err error)

func (SignatureRequest) Validate

type SyntheticMessage

type SyntheticMessage struct{}

SyntheticMessage records the synthetic transaction but does not execute it.

func (SyntheticMessage) Process

func (x SyntheticMessage) Process(batch *database.Batch, ctx *MessageContext) (_ *protocol.TransactionStatus, err error)

func (SyntheticMessage) Validate

type TimerRecord

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

type TimerSet

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

func (*TimerSet) Initialize

func (t *TimerSet) Initialize(executors *map[protocol.TransactionType]chain.TransactionExecutor)

func (*TimerSet) Reset

func (t *TimerSet) Reset()

func (*TimerSet) Start

func (t *TimerSet) Start(record any) *TimerRecord

func (*TimerSet) Stop

func (t *TimerSet) Stop(r *TimerRecord)

func (*TimerSet) Store

func (t *TimerSet) Store(ds *logging.DataSet)

type TransactionContext

type TransactionContext struct {
	*MessageContext
	// contains filtered or unexported fields
}

TransactionContext is the context in which a transaction is executed.

func (TransactionContext) GetSignatureAs added in v1.2.0

func (b TransactionContext) GetSignatureAs(batch *database.Batch, hash [32]byte) (protocol.Signature, error)

GetSignatureAs loads a Signature from the database or from the message bundle.

type TransactionMessage

type TransactionMessage struct{}

TransactionMessage records the transaction but does not execute it. Transactions are executed in response to _authority signature_ messages, not user transaction messages.

func (TransactionMessage) Process

func (TransactionMessage) Validate

type UserSignature

type UserSignature struct{}

UserSignature processes user signatures.

func (UserSignature) Process

func (x UserSignature) Process(batch *database.Batch, ctx *SignatureContext) (_ *protocol.TransactionStatus, err error)

Process processes a signature.

func (UserSignature) Validate

Validate validates a signature.

Jump to

Keyboard shortcuts

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