block

package
v1.3.0 Latest Latest
Warning

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

Go to latest
Published: Mar 4, 2024 License: MIT Imports: 34 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 {
	ShouldOpenMajorBlock bool
	OpenMajorBlockTime   time.Time
}

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

	Anchor *BlockAnchorState

	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 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 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 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) GetAccountAuthoritySet added in v1.2.0

func (m *MessageContext) GetAccountAuthoritySet(batch *database.Batch, account protocol.Account) (*protocol.AccountAuth, error)

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) SignerCanSign added in v1.2.0

func (*MessageContext) SignerCanSign(batch *database.Batch, transaction *protocol.Transaction, signer protocol.Signer) error

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 (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 {
	*MessageContext
	// 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