Documentation ¶
Index ¶
- Variables
- func IntrinsicGas(tx types.Transaction) (uint64, error)
- type Config
- type EffectiveGasPrice
- type GasPrices
- type Pool
- func (p *Pool) AddTx(ctx context.Context, tx types.Transaction, ip string) error
- func (p *Pool) CalculateTxBreakEvenGasPrice(ctx context.Context, txDataLength uint64, gasUsed uint64, l1GasPrice uint64) (*big.Int, error)
- func (p *Pool) CountPendingTransactions(ctx context.Context) (uint64, error)
- func (p *Pool) DeleteGasPricesHistoryOlderThan(ctx context.Context, date time.Time) error
- func (p *Pool) DeleteReorgedTransactions(ctx context.Context, transactions []*types.Transaction) error
- func (p *Pool) GetGasPrices(ctx context.Context) (GasPrices, error)
- func (p *Pool) GetNonWIPPendingTxs(ctx context.Context) ([]Transaction, error)
- func (p *Pool) GetPendingTxHashesSince(ctx context.Context, since time.Time) ([]common.Hash, error)
- func (p *Pool) GetPendingTxs(ctx context.Context, limit uint64) ([]Transaction, error)
- func (p *Pool) GetSelectedTxs(ctx context.Context, limit uint64) ([]Transaction, error)
- func (p *Pool) IsTxPending(ctx context.Context, hash common.Hash) (bool, error)
- func (p *Pool) SetGasPrices(ctx context.Context, l2GasPrice uint64, l1GasPrice uint64) error
- func (p *Pool) StartPollingMinSuggestedGasPrice(ctx context.Context)
- func (p *Pool) StoreTx(ctx context.Context, tx types.Transaction, ip string, isWIP bool) error
- func (p *Pool) UpdateTxStatus(ctx context.Context, hash common.Hash, newStatus TxStatus, isWIP bool, ...) error
- func (p *Pool) UpdateTxWIPStatus(ctx context.Context, hash common.Hash, isWIP bool) error
- type Transaction
- type TxStatus
- type TxStatusUpdateInfo
Constants ¶
This section is empty.
Variables ¶
var ( // ErrInvalidChainID is returned when the transaction has a different chain id // than the chain id of the network ErrInvalidChainID = errors.New("invalid chain id") // ErrTxTypeNotSupported is returned if a transaction is not supported in the // current network configuration. ErrTxTypeNotSupported = types.ErrTxTypeNotSupported // ErrOversizedData is returned if the input data of a transaction is greater // than some meaningful limit a user might use. This is not a consensus error // making the transaction invalid, rather a DOS protection. ErrOversizedData = errors.New("oversized data") // ErrNegativeValue is a sanity error to ensure no one is able to specify a // transaction with a negative value. ErrNegativeValue = errors.New("negative value") // ErrInvalidSender is returned if the transaction contains an invalid signature. ErrInvalidSender = errors.New("invalid sender") // ErrBlockedSender is returned if the transaction is sent by a blocked account. ErrBlockedSender = errors.New("blocked sender") // ErrGasLimit is returned if a transaction's requested gas limit exceeds the // maximum allowance of the current block. ErrGasLimit = errors.New("exceeds block gas limit") // ErrTxPoolAccountOverflow is returned if the account sending the transaction // has already reached the limit of transactions in the pool set by the config // AccountQueue and can't accept another remote transaction. ErrTxPoolAccountOverflow = errors.New("account has reached the tx limit in the txpool") // ErrTxPoolOverflow is returned if the transaction pool is full and can't accept // another remote transaction. ErrTxPoolOverflow = errors.New("txpool is full") // ErrNonceTooLow is returned if the nonce of a transaction is lower than the // one present in the local chain. ErrNonceTooLow = errors.New("nonce too low") // ErrNonceTooHigh is returned if the nonce of a transaction is higher than the // current + the configured AccountQueue. ErrNonceTooHigh = errors.New("nonce too high") // ErrInsufficientFunds is returned if the total cost of executing a transaction // is higher than the balance of the user's account. ErrInsufficientFunds = errors.New("insufficient funds for gas * price + value") // ErrIntrinsicGas is returned if the transaction is specified to use less gas // than required to start the invocation. ErrIntrinsicGas = errors.New("intrinsic gas too low") // ErrGasUintOverflow is returned when calculating gas usage. ErrGasUintOverflow = errors.New("gas uint64 overflow") // ErrGasPrice is returned if the transaction has specified lower gas price than the minimum allowed. ErrGasPrice = errors.New("gas price too low") // ErrReceivedZeroL1GasPrice is returned if the L1 gas price is 0. ErrReceivedZeroL1GasPrice = errors.New("received L1 gas price 0") )
var ( // ErrNotFound indicates an object has not been found for the search criteria used ErrNotFound = errors.New("object not found") // ErrAlreadyKnown is returned if the transactions is already contained // within the pool. ErrAlreadyKnown = errors.New("already known") // ErrReplaceUnderpriced is returned if a transaction is attempted to be replaced // with a different one without the required price bump. ErrReplaceUnderpriced = errors.New("replacement transaction underpriced") )
Functions ¶
func IntrinsicGas ¶
func IntrinsicGas(tx types.Transaction) (uint64, error)
IntrinsicGas computes the 'intrinsic gas' for a given transaction.
Types ¶
type Config ¶
type Config struct { // IntervalToRefreshBlockedAddresses is the time it takes to sync the // blocked address list from db to memory IntervalToRefreshBlockedAddresses types.Duration `mapstructure:"IntervalToRefreshBlockedAddresses"` // IntervalToRefreshGasPrices is the time to wait to refresh the gas prices IntervalToRefreshGasPrices types.Duration `mapstructure:"IntervalToRefreshGasPrices"` // MaxTxBytesSize is the max size of a transaction in bytes MaxTxBytesSize uint64 `mapstructure:"MaxTxBytesSize"` // MaxTxDataBytesSize is the max size of the data field of a transaction in bytes MaxTxDataBytesSize int `mapstructure:"MaxTxDataBytesSize"` // DB is the database configuration DB db.Config `mapstructure:"DB"` // DefaultMinGasPriceAllowed is the default min gas price to suggest DefaultMinGasPriceAllowed uint64 `mapstructure:"DefaultMinGasPriceAllowed"` // MinAllowedGasPriceInterval is the interval to look back of the suggested min gas price for a tx MinAllowedGasPriceInterval types.Duration `mapstructure:"MinAllowedGasPriceInterval"` // PollMinAllowedGasPriceInterval is the interval to poll the suggested min gas price for a tx PollMinAllowedGasPriceInterval types.Duration `mapstructure:"PollMinAllowedGasPriceInterval"` // EffectiveGasPrice is the configuration for the break even and effective gas price calculation EffectiveGasPrice EffectiveGasPrice `mapstructure:"EffectiveGasPrice"` // AccountQueue represents the maximum number of non-executable transaction slots permitted per account AccountQueue uint64 `mapstructure:"AccountQueue"` // GlobalQueue represents the maximum number of non-executable transaction slots for all accounts GlobalQueue uint64 `mapstructure:"GlobalQueue"` }
Config is the pool configuration
type EffectiveGasPrice ¶ added in v0.4.0
type EffectiveGasPrice struct { // L1GasPriceFactor is the percentage of the L1 gas price that will be used as the L2 min gas price L1GasPriceFactor float64 `mapstructure:"L1GasPriceFactor"` // ByteGasCost is the gas cost per byte ByteGasCost uint64 `mapstructure:"ByteGasCost"` // MarginFactor is the margin factor percentage to be added to the L2 min gas price MarginFactor float64 `mapstructure:"MarginFactor"` }
EffectiveGasPrice has parameters for the effective gas price calculation.
type Pool ¶
type Pool struct {
// contains filtered or unexported fields
}
Pool is an implementation of the Pool interface that uses a postgres database to store the data
func NewPool ¶
func NewPool(cfg Config, s storage, st stateInterface, chainID uint64, eventLog *event.EventLog) *Pool
NewPool creates and initializes an instance of Pool
func (*Pool) CalculateTxBreakEvenGasPrice ¶
func (p *Pool) CalculateTxBreakEvenGasPrice(ctx context.Context, txDataLength uint64, gasUsed uint64, l1GasPrice uint64) (*big.Int, error)
CalculateTxBreakEvenGasPrice calculates the break even gas price for a transaction
func (*Pool) CountPendingTransactions ¶
CountPendingTransactions get number of pending transactions used in bench tests
func (*Pool) DeleteGasPricesHistoryOlderThan ¶ added in v0.0.990
DeleteGasPricesHistoryOlderThan deletes gas prices older than a given date except the most recent one
func (*Pool) DeleteReorgedTransactions ¶
func (p *Pool) DeleteReorgedTransactions(ctx context.Context, transactions []*types.Transaction) error
DeleteReorgedTransactions deletes transactions from the pool
func (*Pool) GetGasPrices ¶ added in v0.0.990
GetGasPrices returns the current L2 Gas Price and L1 Gas Price
func (*Pool) GetNonWIPPendingTxs ¶
func (p *Pool) GetNonWIPPendingTxs(ctx context.Context) ([]Transaction, error)
GetNonWIPPendingTxs from the pool
func (*Pool) GetPendingTxHashesSince ¶
GetPendingTxHashesSince returns the hashes of pending tx since the given date.
func (*Pool) GetPendingTxs ¶
GetPendingTxs from the pool limit parameter is used to limit amount of pending txs from the db, if limit = 0, then there is no limit
func (*Pool) GetSelectedTxs ¶
GetSelectedTxs gets selected txs from the pool db
func (*Pool) IsTxPending ¶
IsTxPending check if tx is still pending
func (*Pool) SetGasPrices ¶ added in v0.0.990
SetGasPrices sets the current L2 Gas Price and L1 Gas Price
func (*Pool) StartPollingMinSuggestedGasPrice ¶
StartPollingMinSuggestedGasPrice starts polling the minimum suggested gas price
type Transaction ¶
type Transaction struct { types.Transaction Status TxStatus state.ZKCounters ReceivedAt time.Time PreprocessedStateRoot common.Hash IsWIP bool IP string FailedReason *string }
Transaction represents a pool tx
func NewTransaction ¶
func NewTransaction(tx types.Transaction, ip string, isWIP bool) *Transaction
NewTransaction creates a new transaction
type TxStatus ¶
type TxStatus string
TxStatus represents the state of a tx
const ( // TxStatusPending represents a tx that has not been processed TxStatusPending TxStatus = "pending" // TxStatusInvalid represents an invalid tx TxStatusInvalid TxStatus = "invalid" // TxStatusSelected represents a tx that has been selected TxStatusSelected TxStatus = "selected" // TxStatusFailed represents a tx that has been failed after processing TxStatusFailed TxStatus = "failed" )