txpool

package
v0.0.0-...-97e54d3 Latest Latest
Warning

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

Go to latest
Published: Aug 7, 2022 License: MIT Imports: 22 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrIntrinsicGas        = errors.New("intrinsic gas too low")
	ErrBlockLimitExceeded  = errors.New("exceeds block gas limit")
	ErrNegativeValue       = errors.New("negative value")
	ErrNonEncryptedTx      = errors.New("non-encrypted transaction")
	ErrInvalidSender       = errors.New("invalid sender")
	ErrTxPoolOverflow      = errors.New("txpool is full")
	ErrUnderpriced         = errors.New("transaction underpriced")
	ErrNonceTooLow         = errors.New("nonce too low")
	ErrInsufficientFunds   = errors.New("insufficient funds for gas * price + value")
	ErrInvalidAccountState = errors.New("invalid account state")
	ErrAlreadyKnown        = errors.New("already known")
	ErrOversizedData       = errors.New("oversized data")
)

errors

Functions

This section is empty.

Types

type Config

type Config struct {
	PriceLimit uint64
	MaxSlots   uint64
	Sealing    bool
}

type Metrics

type Metrics struct {
	// Pending transactions
	PendingTxs metrics.Gauge
}

Metrics represents the txpool metrics

func GetPrometheusMetrics

func GetPrometheusMetrics(namespace string, labelsWithValues ...string) *Metrics

GetPrometheusMetrics return the txpool metrics instance

func NilMetrics

func NilMetrics() *Metrics

NilMetrics will return the non operational txpool metrics

type TxPool

type TxPool struct {

	// indicates which txpool operator commands should be implemented
	proto.UnimplementedTxnPoolOperatorServer
	// contains filtered or unexported fields
}

TxPool is a module that handles pending transactions. All transactions are handled within their respective accounts. An account contains 2 queues a transaction needs to go through:

  • 1. Enqueued (entry point)
  • 2. Promoted (exit point) (both queues are min nonce ordered)

When consensus needs to process promoted transactions, the pool generates a queue of "executable" transactions. These transactions are the first-in-line of some promoted queue, ready to be written to the state (primaries).

func NewTxPool

func NewTxPool(
	logger hclog.Logger,
	forks chain.ForksInTime,
	store store,
	grpcServer *grpc.Server,
	network *network.Server,
	metrics *Metrics,
	config *Config,
) (*TxPool, error)

NewTxPool returns a new pool for processing incoming transactions.

func (*TxPool) AddTx

func (p *TxPool) AddTx(tx *types.Transaction) error

AddTx adds a new transaction to the pool (sent from json-RPC/gRPC endpoints) and broadcasts it to the network (if enabled).

func (*TxPool) AddTxn

func (p *TxPool) AddTxn(ctx context.Context, raw *proto.AddTxnReq) (*proto.AddTxnResp, error)

AddTxn adds a local transaction to the pool

func (*TxPool) Close

func (p *TxPool) Close()

Close shuts down the pool's main loop.

func (*TxPool) Demote

func (p *TxPool) Demote(tx *types.Transaction)

func (*TxPool) Drop

func (p *TxPool) Drop(tx *types.Transaction)

Drop clears the entire account associated with the given transaction and reverts its next (expected) nonce.

func (*TxPool) GetCapacity

func (p *TxPool) GetCapacity() (uint64, uint64)

GetCapacity returns the current number of slots occupied in the pool as well as the max limit

func (*TxPool) GetNonce

func (p *TxPool) GetNonce(addr types.Address) uint64

GetNonce returns the next nonce for the account

-> Returns the value from the TxPool if the account is initialized in-memory

-> Returns the value from the world state otherwise

func (*TxPool) GetPendingTx

func (p *TxPool) GetPendingTx(txHash types.Hash) (*types.Transaction, bool)

GetPendingTx returns the transaction by hash in the TxPool (pending txn) [Thread-safe]

func (*TxPool) GetTxs

func (p *TxPool) GetTxs(inclQueued bool) (
	allPromoted, allEnqueued map[types.Address][]*types.Transaction,
)

GetTxs gets pending and queued transactions

func (*TxPool) Length

func (p *TxPool) Length() uint64

Length returns the total number of all promoted transactions.

func (*TxPool) Peek

func (p *TxPool) Peek() *types.Transaction

Peek returns the best-price selected transaction ready for execution.

func (*TxPool) Pop

func (p *TxPool) Pop(tx *types.Transaction)

Pop removes the given transaction from the associated promoted queue (account). Will update executables with the next primary from that account (if any).

func (*TxPool) Prepare

func (p *TxPool) Prepare()

Prepare generates all the transactions ready for execution. (primaries)

func (*TxPool) ResetWithHeaders

func (p *TxPool) ResetWithHeaders(headers ...*types.Header)

ResetWithHeaders processes the transactions from the new headers to sync the pool with the new state.

func (*TxPool) SetSigner

func (p *TxPool) SetSigner(s signer)

SetSigner sets the signer the pool will use to validate a transaction's signature.

func (*TxPool) Start

func (p *TxPool) Start()

Start runs the pool's main loop in the background. On each request received, the appropriate handler is invoked in a separate goroutine.

func (*TxPool) Status

func (p *TxPool) Status(ctx context.Context, req *empty.Empty) (*proto.TxnPoolStatusResp, error)

Status implements the GRPC status endpoint. Returns the number of transactions in the pool

func (*TxPool) Subscribe

func (p *TxPool) Subscribe(
	request *proto.SubscribeRequest,
	stream proto.TxnPoolOperator_SubscribeServer,
) error

Subscribe implements the operator endpoint. It subscribes to new events in the tx pool

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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