sequencer

package
v0.2.3-RC1 Latest Latest
Warning

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

Go to latest
Published: Aug 3, 2023 License: AGPL-3.0, AGPL-3.0-or-later Imports: 26 Imported by: 2

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrExpiredTransaction happens when the transaction is expired
	ErrExpiredTransaction = errors.New("transaction expired")
	// ErrBreakEvenGasPriceEmpty happens when the breakEven or gasPrice is nil or zero
	ErrBreakEvenGasPriceEmpty = errors.New("breakEven and gasPrice cannot be nil or zero")
	// ErrEffectiveGasPriceReprocess happens when the effective gas price requires reexecution
	ErrEffectiveGasPriceReprocess = errors.New("effective gas price requires reprocessing the transaction")
	// ErrZeroL1GasPrice is returned if the L1 gas price is 0.
	ErrZeroL1GasPrice = errors.New("L1 gas price 0")
	// ErrDuplicatedNonce is returned when adding a new tx to the worker and there is an existing tx
	// with the same nonce and higher gasPrice (in this case we keep the existing tx)
	ErrDuplicatedNonce = errors.New("duplicated nonce")
	// ErrReplacedTransaction is returned when an existing tx is replaced by a new tx with the same nonce and higher gasPrice
	ErrReplacedTransaction = errors.New("replaced transaction")
)

Functions

func CalculateEffectiveGasPricePercentage added in v0.0.990

func CalculateEffectiveGasPricePercentage(gasPrice *big.Int, breakEven *big.Int) (uint8, error)

CalculateEffectiveGasPricePercentage calculates the gas price's effective percentage

Types

type ClosingBatchParameters

type ClosingBatchParameters struct {
	BatchNumber          uint64
	StateRoot            common.Hash
	LocalExitRoot        common.Hash
	AccInputHash         common.Hash
	Txs                  []types.Transaction
	BatchResources       state.BatchResources
	ClosingReason        state.ClosingReason
	EffectivePercentages []uint8
}

ClosingBatchParameters contains the necessary parameters to close a batch

type ClosingSignalCh

type ClosingSignalCh struct {
	ForcedBatchCh chan state.ForcedBatch
	GERCh         chan common.Hash
	L2ReorgCh     chan L2ReorgEvent
}

ClosingSignalCh is a struct that contains all the channels that are used to receive batch closing signals

type Config

type Config struct {
	// WaitPeriodPoolIsEmpty is the time the sequencer waits until
	// trying to add new txs to the state
	WaitPeriodPoolIsEmpty types.Duration `mapstructure:"WaitPeriodPoolIsEmpty"`

	// BlocksAmountForTxsToBeDeleted is blocks amount after which txs will be deleted from the pool
	BlocksAmountForTxsToBeDeleted uint64 `mapstructure:"BlocksAmountForTxsToBeDeleted"`

	// FrequencyToCheckTxsForDelete is frequency with which txs will be checked for deleting
	FrequencyToCheckTxsForDelete types.Duration `mapstructure:"FrequencyToCheckTxsForDelete"`

	// MaxTxsPerBatch is the maximum amount of transactions in the batch
	MaxTxsPerBatch uint64 `mapstructure:"MaxTxsPerBatch"`

	// MaxBatchBytesSize is the maximum batch size in bytes
	// (subtracted bits of all types.Sequence fields excluding BatchL2Data from MaxTxSizeForL1)
	MaxBatchBytesSize uint64 `mapstructure:"MaxBatchBytesSize"`

	// MaxCumulativeGasUsed is max gas amount used by batch
	MaxCumulativeGasUsed uint64 `mapstructure:"MaxCumulativeGasUsed"`

	// MaxKeccakHashes is max keccak hashes used by batch
	MaxKeccakHashes uint32 `mapstructure:"MaxKeccakHashes"`

	// MaxPoseidonHashes is max poseidon hashes batch can handle
	MaxPoseidonHashes uint32 `mapstructure:"MaxPoseidonHashes"`

	// MaxPoseidonPaddings is max poseidon paddings batch can handle
	MaxPoseidonPaddings uint32 `mapstructure:"MaxPoseidonPaddings"`

	// MaxMemAligns is max mem aligns batch can handle
	MaxMemAligns uint32 `mapstructure:"MaxMemAligns"`

	// MaxArithmetics is max arithmetics batch can handle
	MaxArithmetics uint32 `mapstructure:"MaxArithmetics"`

	// MaxBinaries is max binaries batch can handle
	MaxBinaries uint32 `mapstructure:"MaxBinaries"`

	// MaxSteps is max steps batch can handle
	MaxSteps uint32 `mapstructure:"MaxSteps"`

	// WeightBatchBytesSize is the cost weight for the BatchBytesSize batch resource
	WeightBatchBytesSize int `mapstructure:"WeightBatchBytesSize"`

	// WeightCumulativeGasUsed is the cost weight for the CumulativeGasUsed batch resource
	WeightCumulativeGasUsed int `mapstructure:"WeightCumulativeGasUsed"`

	// WeightKeccakHashes is the cost weight for the KeccakHashes batch resource
	WeightKeccakHashes int `mapstructure:"WeightKeccakHashes"`

	// WeightPoseidonHashes is the cost weight for the PoseidonHashes batch resource
	WeightPoseidonHashes int `mapstructure:"WeightPoseidonHashes"`

	// WeightPoseidonPaddings is the cost weight for the PoseidonPaddings batch resource
	WeightPoseidonPaddings int `mapstructure:"WeightPoseidonPaddings"`

	// WeightMemAligns is the cost weight for the MemAligns batch resource
	WeightMemAligns int `mapstructure:"WeightMemAligns"`

	// WeightArithmetics is the cost weight for the Arithmetics batch resource
	WeightArithmetics int `mapstructure:"WeightArithmetics"`

	// WeightBinaries is the cost weight for the Binaries batch resource
	WeightBinaries int `mapstructure:"WeightBinaries"`

	// WeightSteps is the cost weight for the Steps batch resource
	WeightSteps int `mapstructure:"WeightSteps"`

	// TxLifetimeCheckTimeout is the time the sequencer waits to check txs lifetime
	TxLifetimeCheckTimeout types.Duration `mapstructure:"TxLifetimeCheckTimeout"`

	// MaxTxLifetime is the time a tx can be in the sequencer memory
	MaxTxLifetime types.Duration `mapstructure:"MaxTxLifetime"`

	// Finalizer's specific config properties
	Finalizer FinalizerCfg `mapstructure:"Finalizer"`

	// DBManager's specific config properties
	DBManager DBManagerCfg `mapstructure:"DBManager"`

	// Worker's specific config properties
	Worker WorkerCfg `mapstructure:"Worker"`

	// EffectiveGasPrice is the config for the gas price
	EffectiveGasPrice EffectiveGasPriceCfg `mapstructure:"EffectiveGasPrice"`
}

Config represents the configuration of a sequencer

type DBManagerCfg

type DBManagerCfg struct {
	PoolRetrievalInterval    types.Duration `mapstructure:"PoolRetrievalInterval"`
	L2ReorgRetrievalInterval types.Duration `mapstructure:"L2ReorgRetrievalInterval"`
}

DBManagerCfg contains the DBManager's configuration properties

type DbManagerMock

type DbManagerMock struct {
	mock.Mock
}

DbManagerMock is an autogenerated mock type for the dbManagerInterface type

func NewDbManagerMock

func NewDbManagerMock(t mockConstructorTestingTNewDbManagerMock) *DbManagerMock

NewDbManagerMock creates a new instance of DbManagerMock. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.

func (*DbManagerMock) BeginStateTransaction

func (_m *DbManagerMock) BeginStateTransaction(ctx context.Context) (pgx.Tx, error)

BeginStateTransaction provides a mock function with given fields: ctx

func (*DbManagerMock) CloseBatch

func (_m *DbManagerMock) CloseBatch(ctx context.Context, params ClosingBatchParameters) error

CloseBatch provides a mock function with given fields: ctx, params

func (*DbManagerMock) CountReorgs

func (_m *DbManagerMock) CountReorgs(ctx context.Context, dbTx pgx.Tx) (uint64, error)

CountReorgs provides a mock function with given fields: ctx, dbTx

func (*DbManagerMock) CreateFirstBatch

func (_m *DbManagerMock) CreateFirstBatch(ctx context.Context, sequencerAddress common.Address) state.ProcessingContext

CreateFirstBatch provides a mock function with given fields: ctx, sequencerAddress

func (*DbManagerMock) DeleteTransactionFromPool

func (_m *DbManagerMock) DeleteTransactionFromPool(ctx context.Context, txHash common.Hash) error

DeleteTransactionFromPool provides a mock function with given fields: ctx, txHash

func (*DbManagerMock) FlushMerkleTree

func (_m *DbManagerMock) FlushMerkleTree(ctx context.Context) error

FlushMerkleTree provides a mock function with given fields: ctx

func (*DbManagerMock) GetBalanceByStateRoot

func (_m *DbManagerMock) GetBalanceByStateRoot(ctx context.Context, address common.Address, root common.Hash) (*big.Int, error)

GetBalanceByStateRoot provides a mock function with given fields: ctx, address, root

func (*DbManagerMock) GetBatchByNumber

func (_m *DbManagerMock) GetBatchByNumber(ctx context.Context, batchNumber uint64, dbTx pgx.Tx) (*state.Batch, error)

GetBatchByNumber provides a mock function with given fields: ctx, batchNumber, dbTx

func (*DbManagerMock) GetDefaultMinGasPriceAllowed added in v0.0.990

func (_m *DbManagerMock) GetDefaultMinGasPriceAllowed() uint64

GetDefaultMinGasPriceAllowed provides a mock function with given fields:

func (*DbManagerMock) GetForcedBatch added in v0.0.990

func (_m *DbManagerMock) GetForcedBatch(ctx context.Context, forcedBatchNumber uint64, dbTx pgx.Tx) (*state.ForcedBatch, error)

GetForcedBatch provides a mock function with given fields: ctx, forcedBatchNumber, dbTx

func (*DbManagerMock) GetForcedBatchesSince

func (_m *DbManagerMock) GetForcedBatchesSince(ctx context.Context, forcedBatchNumber uint64, maxBlockNumber uint64, dbTx pgx.Tx) ([]*state.ForcedBatch, error)

GetForcedBatchesSince provides a mock function with given fields: ctx, forcedBatchNumber, maxBlockNumber, dbTx

func (*DbManagerMock) GetForkIDByBatchNumber added in v0.0.990

func (_m *DbManagerMock) GetForkIDByBatchNumber(batchNumber uint64) uint64

GetForkIDByBatchNumber provides a mock function with given fields: batchNumber

func (*DbManagerMock) GetGasPrices added in v0.0.990

func (_m *DbManagerMock) GetGasPrices(ctx context.Context) (pool.GasPrices, error)

GetGasPrices provides a mock function with given fields: ctx

func (*DbManagerMock) GetL1GasPrice added in v0.0.990

func (_m *DbManagerMock) GetL1GasPrice() uint64

GetL1GasPrice provides a mock function with given fields:

func (*DbManagerMock) GetLastBatch

func (_m *DbManagerMock) GetLastBatch(ctx context.Context) (*state.Batch, error)

GetLastBatch provides a mock function with given fields: ctx

func (*DbManagerMock) GetLastBatchNumber

func (_m *DbManagerMock) GetLastBatchNumber(ctx context.Context) (uint64, error)

GetLastBatchNumber provides a mock function with given fields: ctx

func (*DbManagerMock) GetLastBlock

func (_m *DbManagerMock) GetLastBlock(ctx context.Context, dbTx pgx.Tx) (*state.Block, error)

GetLastBlock provides a mock function with given fields: ctx, dbTx

func (*DbManagerMock) GetLastClosedBatch

func (_m *DbManagerMock) GetLastClosedBatch(ctx context.Context) (*state.Batch, error)

GetLastClosedBatch provides a mock function with given fields: ctx

func (*DbManagerMock) GetLastL2BlockHeader

func (_m *DbManagerMock) GetLastL2BlockHeader(ctx context.Context, dbTx pgx.Tx) (*types.Header, error)

GetLastL2BlockHeader provides a mock function with given fields: ctx, dbTx

func (*DbManagerMock) GetLastNBatches

func (_m *DbManagerMock) GetLastNBatches(ctx context.Context, numBatches uint) ([]*state.Batch, error)

GetLastNBatches provides a mock function with given fields: ctx, numBatches

func (*DbManagerMock) GetLastTrustedForcedBatchNumber

func (_m *DbManagerMock) GetLastTrustedForcedBatchNumber(ctx context.Context, dbTx pgx.Tx) (uint64, error)

GetLastTrustedForcedBatchNumber provides a mock function with given fields: ctx, dbTx

func (*DbManagerMock) GetLatestGer

func (_m *DbManagerMock) GetLatestGer(ctx context.Context, maxBlockNumber uint64) (state.GlobalExitRoot, time.Time, error)

GetLatestGer provides a mock function with given fields: ctx, maxBlockNumber

func (*DbManagerMock) GetLatestVirtualBatchTimestamp

func (_m *DbManagerMock) GetLatestVirtualBatchTimestamp(ctx context.Context, dbTx pgx.Tx) (time.Time, error)

GetLatestVirtualBatchTimestamp provides a mock function with given fields: ctx, dbTx

func (*DbManagerMock) GetStoredFlushID added in v0.0.990

func (_m *DbManagerMock) GetStoredFlushID(ctx context.Context) (uint64, string, error)

GetStoredFlushID provides a mock function with given fields: ctx

func (*DbManagerMock) GetTransactionsByBatchNumber

func (_m *DbManagerMock) GetTransactionsByBatchNumber(ctx context.Context, batchNumber uint64) ([]types.Transaction, []uint8, error)

GetTransactionsByBatchNumber provides a mock function with given fields: ctx, batchNumber

func (*DbManagerMock) GetWIPBatch

func (_m *DbManagerMock) GetWIPBatch(ctx context.Context) (*WipBatch, error)

GetWIPBatch provides a mock function with given fields: ctx

func (*DbManagerMock) IsBatchClosed

func (_m *DbManagerMock) IsBatchClosed(ctx context.Context, batchNum uint64) (bool, error)

IsBatchClosed provides a mock function with given fields: ctx, batchNum

func (*DbManagerMock) OpenBatch

func (_m *DbManagerMock) OpenBatch(ctx context.Context, processingContext state.ProcessingContext, dbTx pgx.Tx) error

OpenBatch provides a mock function with given fields: ctx, processingContext, dbTx

func (*DbManagerMock) ProcessForcedBatch

func (_m *DbManagerMock) ProcessForcedBatch(ForcedBatchNumber uint64, request state.ProcessRequest) (*state.ProcessBatchResponse, error)

ProcessForcedBatch provides a mock function with given fields: ForcedBatchNumber, request

func (*DbManagerMock) StoreProcessedTxAndDeleteFromPool added in v0.0.990

func (_m *DbManagerMock) StoreProcessedTxAndDeleteFromPool(ctx context.Context, tx transactionToStore) error

StoreProcessedTxAndDeleteFromPool provides a mock function with given fields: ctx, tx

func (*DbManagerMock) UpdateTxStatus

func (_m *DbManagerMock) UpdateTxStatus(ctx context.Context, hash common.Hash, newStatus pool.TxStatus, isWIP bool, reason *string) error

UpdateTxStatus provides a mock function with given fields: ctx, hash, newStatus, isWIP, reason

type DbTxMock

type DbTxMock struct {
	mock.Mock
}

DbTxMock is an autogenerated mock type for the Tx type

func NewDbTxMock

func NewDbTxMock(t mockConstructorTestingTNewDbTxMock) *DbTxMock

NewDbTxMock creates a new instance of DbTxMock. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.

func (*DbTxMock) Begin

func (_m *DbTxMock) Begin(ctx context.Context) (pgx.Tx, error)

Begin provides a mock function with given fields: ctx

func (*DbTxMock) BeginFunc

func (_m *DbTxMock) BeginFunc(ctx context.Context, f func(pgx.Tx) error) error

BeginFunc provides a mock function with given fields: ctx, f

func (*DbTxMock) Commit

func (_m *DbTxMock) Commit(ctx context.Context) error

Commit provides a mock function with given fields: ctx

func (*DbTxMock) Conn

func (_m *DbTxMock) Conn() *pgx.Conn

Conn provides a mock function with given fields:

func (*DbTxMock) CopyFrom

func (_m *DbTxMock) CopyFrom(ctx context.Context, tableName pgx.Identifier, columnNames []string, rowSrc pgx.CopyFromSource) (int64, error)

CopyFrom provides a mock function with given fields: ctx, tableName, columnNames, rowSrc

func (*DbTxMock) Exec

func (_m *DbTxMock) Exec(ctx context.Context, sql string, arguments ...interface{}) (pgconn.CommandTag, error)

Exec provides a mock function with given fields: ctx, sql, arguments

func (*DbTxMock) LargeObjects

func (_m *DbTxMock) LargeObjects() pgx.LargeObjects

LargeObjects provides a mock function with given fields:

func (*DbTxMock) Prepare

func (_m *DbTxMock) Prepare(ctx context.Context, name string, sql string) (*pgconn.StatementDescription, error)

Prepare provides a mock function with given fields: ctx, name, sql

func (*DbTxMock) Query

func (_m *DbTxMock) Query(ctx context.Context, sql string, args ...interface{}) (pgx.Rows, error)

Query provides a mock function with given fields: ctx, sql, args

func (*DbTxMock) QueryFunc

func (_m *DbTxMock) QueryFunc(ctx context.Context, sql string, args []interface{}, scans []interface{}, f func(pgx.QueryFuncRow) error) (pgconn.CommandTag, error)

QueryFunc provides a mock function with given fields: ctx, sql, args, scans, f

func (*DbTxMock) QueryRow

func (_m *DbTxMock) QueryRow(ctx context.Context, sql string, args ...interface{}) pgx.Row

QueryRow provides a mock function with given fields: ctx, sql, args

func (*DbTxMock) Rollback

func (_m *DbTxMock) Rollback(ctx context.Context) error

Rollback provides a mock function with given fields: ctx

func (*DbTxMock) SendBatch

func (_m *DbTxMock) SendBatch(ctx context.Context, b *pgx.Batch) pgx.BatchResults

SendBatch provides a mock function with given fields: ctx, b

type EffectiveGasPriceCfg added in v0.0.990

type EffectiveGasPriceCfg struct {
	// MaxBreakEvenGasPriceDeviationPercentage is the max allowed deviation percentage BreakEvenGasPrice on re-calculation
	MaxBreakEvenGasPriceDeviationPercentage uint64 `mapstructure:"MaxBreakEvenGasPriceDeviationPercentage"`

	// 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"`

	// Enabled is a flag to enable/disable the effective gas price
	Enabled bool `mapstructure:"Enabled"`

	// DefaultMinGasPriceAllowed is the default min gas price to suggest
	// This value is assigned from [Pool].DefaultMinGasPriceAllowed
	DefaultMinGasPriceAllowed uint64
}

EffectiveGasPriceCfg contains the configuration properties for the effective gas price

type EthermanMock

type EthermanMock struct {
	mock.Mock
}

EthermanMock is an autogenerated mock type for the etherman type

func NewEthermanMock

func NewEthermanMock(t mockConstructorTestingTNewEthermanMock) *EthermanMock

NewEthermanMock creates a new instance of EthermanMock. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.

func (*EthermanMock) BuildSequenceBatchesTxData

func (_m *EthermanMock) BuildSequenceBatchesTxData(sender common.Address, sequences []types.Sequence) (*common.Address, []byte, error)

BuildSequenceBatchesTxData provides a mock function with given fields: sender, sequences

func (*EthermanMock) EstimateGasSequenceBatches

func (_m *EthermanMock) EstimateGasSequenceBatches(sender common.Address, sequences []types.Sequence) (*coretypes.Transaction, error)

EstimateGasSequenceBatches provides a mock function with given fields: sender, sequences

func (*EthermanMock) GetLastBatchTimestamp

func (_m *EthermanMock) GetLastBatchTimestamp() (uint64, error)

GetLastBatchTimestamp provides a mock function with given fields:

func (*EthermanMock) GetLatestBatchNumber

func (_m *EthermanMock) GetLatestBatchNumber() (uint64, error)

GetLatestBatchNumber provides a mock function with given fields:

func (*EthermanMock) GetLatestBlockNumber

func (_m *EthermanMock) GetLatestBlockNumber(ctx context.Context) (uint64, error)

GetLatestBlockNumber provides a mock function with given fields: ctx

func (*EthermanMock) GetLatestBlockTimestamp

func (_m *EthermanMock) GetLatestBlockTimestamp(ctx context.Context) (uint64, error)

GetLatestBlockTimestamp provides a mock function with given fields: ctx

func (*EthermanMock) GetSendSequenceFee

func (_m *EthermanMock) GetSendSequenceFee(numBatches uint64) (*big.Int, error)

GetSendSequenceFee provides a mock function with given fields: numBatches

func (*EthermanMock) TrustedSequencer

func (_m *EthermanMock) TrustedSequencer() (common.Address, error)

TrustedSequencer provides a mock function with given fields:

type FinalizerCfg

type FinalizerCfg struct {
	// GERDeadlineTimeout is the time the finalizer waits after receiving closing signal to update Global Exit Root
	GERDeadlineTimeout types.Duration `mapstructure:"GERDeadlineTimeout"`

	// ForcedBatchDeadlineTimeout is the time the finalizer waits after receiving closing signal to process Forced Batches
	ForcedBatchDeadlineTimeout types.Duration `mapstructure:"ForcedBatchDeadlineTimeout"`

	// SleepDuration is the time the finalizer sleeps between each iteration, if there are no transactions to be processed
	SleepDuration types.Duration `mapstructure:"SleepDuration"`

	// ResourcePercentageToCloseBatch is the percentage window of the resource left out for the batch to be closed
	ResourcePercentageToCloseBatch uint32 `mapstructure:"ResourcePercentageToCloseBatch"`

	// GERFinalityNumberOfBlocks is number of blocks to consider GER final
	GERFinalityNumberOfBlocks uint64 `mapstructure:"GERFinalityNumberOfBlocks"`

	// ClosingSignalsManagerWaitForCheckingL1Timeout is used by the closing signals manager to wait for its operation
	ClosingSignalsManagerWaitForCheckingL1Timeout types.Duration `mapstructure:"ClosingSignalsManagerWaitForCheckingL1Timeout"`

	// ClosingSignalsManagerWaitForCheckingGER is used by the closing signals manager to wait for its operation
	ClosingSignalsManagerWaitForCheckingGER types.Duration `mapstructure:"ClosingSignalsManagerWaitForCheckingGER"`

	// ClosingSignalsManagerWaitForCheckingL1Timeout is used by the closing signals manager to wait for its operation
	ClosingSignalsManagerWaitForCheckingForcedBatches types.Duration `mapstructure:"ClosingSignalsManagerWaitForCheckingForcedBatches"`

	// ForcedBatchesFinalityNumberOfBlocks is number of blocks to consider GER final
	ForcedBatchesFinalityNumberOfBlocks uint64 `mapstructure:"ForcedBatchesFinalityNumberOfBlocks"`

	// TimestampResolution is the resolution of the timestamp used to close a batch
	TimestampResolution types.Duration `mapstructure:"TimestampResolution"`

	// StopSequencerOnBatchNum specifies the batch number where the Sequencer will stop to process more transactions and generate new batches. The Sequencer will halt after it closes the batch equal to this number
	StopSequencerOnBatchNum uint64 `mapstructure:"StopSequencerOnBatchNum"`
}

FinalizerCfg contains the finalizer's configuration properties

type L2ReorgEvent

type L2ReorgEvent struct {
	TxHashes []common.Hash
}

L2ReorgEvent is the event that is triggered when a reorg happens in the L2

type PoolMock

type PoolMock struct {
	mock.Mock
}

PoolMock is an autogenerated mock type for the txPool type

func NewPoolMock

func NewPoolMock(t mockConstructorTestingTNewPoolMock) *PoolMock

NewPoolMock creates a new instance of PoolMock. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.

func (*PoolMock) DeleteTransactionByHash

func (_m *PoolMock) DeleteTransactionByHash(ctx context.Context, hash common.Hash) error

DeleteTransactionByHash provides a mock function with given fields: ctx, hash

func (*PoolMock) DeleteTransactionsByHashes

func (_m *PoolMock) DeleteTransactionsByHashes(ctx context.Context, hashes []common.Hash) error

DeleteTransactionsByHashes provides a mock function with given fields: ctx, hashes

func (*PoolMock) GetDefaultMinGasPriceAllowed added in v0.0.990

func (_m *PoolMock) GetDefaultMinGasPriceAllowed() uint64

GetDefaultMinGasPriceAllowed provides a mock function with given fields:

func (*PoolMock) GetGasPrices added in v0.0.990

func (_m *PoolMock) GetGasPrices(ctx context.Context) (pool.GasPrices, error)

GetGasPrices provides a mock function with given fields: ctx

func (*PoolMock) GetL1GasPrice added in v0.0.990

func (_m *PoolMock) GetL1GasPrice() uint64

GetL1GasPrice provides a mock function with given fields:

func (*PoolMock) GetNonWIPPendingTxs

func (_m *PoolMock) GetNonWIPPendingTxs(ctx context.Context) ([]pool.Transaction, error)

GetNonWIPPendingTxs provides a mock function with given fields: ctx

func (*PoolMock) GetTxZkCountersByHash

func (_m *PoolMock) GetTxZkCountersByHash(ctx context.Context, hash common.Hash) (*state.ZKCounters, error)

GetTxZkCountersByHash provides a mock function with given fields: ctx, hash

func (*PoolMock) MarkWIPTxsAsPending

func (_m *PoolMock) MarkWIPTxsAsPending(ctx context.Context) error

MarkWIPTxsAsPending provides a mock function with given fields: ctx

func (*PoolMock) UpdateTxStatus

func (_m *PoolMock) UpdateTxStatus(ctx context.Context, hash common.Hash, newStatus pool.TxStatus, isWIP bool, failedReason *string) error

UpdateTxStatus provides a mock function with given fields: ctx, hash, newStatus, isWIP, failedReason

func (*PoolMock) UpdateTxWIPStatus

func (_m *PoolMock) UpdateTxWIPStatus(ctx context.Context, hash common.Hash, isWIP bool) error

UpdateTxWIPStatus provides a mock function with given fields: ctx, hash, isWIP

type Sequencer

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

Sequencer represents a sequencer

func New

func New(cfg Config, txPool txPool, state stateInterface, etherman etherman, manager ethTxManager, eventLog *event.EventLog) (*Sequencer, error)

New init sequencer

func (*Sequencer) Start

func (s *Sequencer) Start(ctx context.Context)

Start starts the sequencer

type StateMock

type StateMock struct {
	mock.Mock
}

StateMock is an autogenerated mock type for the stateInterface type

func NewStateMock

func NewStateMock(t mockConstructorTestingTNewStateMock) *StateMock

NewStateMock creates a new instance of StateMock. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.

func (*StateMock) Begin

func (_m *StateMock) Begin(ctx context.Context) (pgx.Tx, error)

Begin provides a mock function with given fields: ctx

func (*StateMock) BeginStateTransaction

func (_m *StateMock) BeginStateTransaction(ctx context.Context) (pgx.Tx, error)

BeginStateTransaction provides a mock function with given fields: ctx

func (*StateMock) CloseBatch

func (_m *StateMock) CloseBatch(ctx context.Context, receipt state.ProcessingReceipt, dbTx pgx.Tx) error

CloseBatch provides a mock function with given fields: ctx, receipt, dbTx

func (*StateMock) CountReorgs

func (_m *StateMock) CountReorgs(ctx context.Context, dbTx pgx.Tx) (uint64, error)

CountReorgs provides a mock function with given fields: ctx, dbTx

func (*StateMock) ExecuteBatch

func (_m *StateMock) ExecuteBatch(ctx context.Context, batch state.Batch, updateMerkleTree bool, dbTx pgx.Tx) (*executor.ProcessBatchResponse, error)

ExecuteBatch provides a mock function with given fields: ctx, batch, updateMerkleTree, dbTx

func (*StateMock) FlushMerkleTree

func (_m *StateMock) FlushMerkleTree(ctx context.Context) error

FlushMerkleTree provides a mock function with given fields: ctx

func (*StateMock) GetBalanceByStateRoot

func (_m *StateMock) GetBalanceByStateRoot(ctx context.Context, address common.Address, root common.Hash) (*big.Int, error)

GetBalanceByStateRoot provides a mock function with given fields: ctx, address, root

func (*StateMock) GetBatchByNumber

func (_m *StateMock) GetBatchByNumber(ctx context.Context, batchNumber uint64, dbTx pgx.Tx) (*state.Batch, error)

GetBatchByNumber provides a mock function with given fields: ctx, batchNumber, dbTx

func (*StateMock) GetForcedBatch

func (_m *StateMock) GetForcedBatch(ctx context.Context, forcedBatchNumber uint64, dbTx pgx.Tx) (*state.ForcedBatch, error)

GetForcedBatch provides a mock function with given fields: ctx, forcedBatchNumber, dbTx

func (*StateMock) GetForcedBatchesSince

func (_m *StateMock) GetForcedBatchesSince(ctx context.Context, forcedBatchNumber uint64, maxBlockNumber uint64, dbTx pgx.Tx) ([]*state.ForcedBatch, error)

GetForcedBatchesSince provides a mock function with given fields: ctx, forcedBatchNumber, maxBlockNumber, dbTx

func (*StateMock) GetForkIDByBatchNumber added in v0.0.990

func (_m *StateMock) GetForkIDByBatchNumber(batchNumber uint64) uint64

GetForkIDByBatchNumber provides a mock function with given fields: batchNumber

func (*StateMock) GetLastBatch

func (_m *StateMock) GetLastBatch(ctx context.Context, dbTx pgx.Tx) (*state.Batch, error)

GetLastBatch provides a mock function with given fields: ctx, dbTx

func (*StateMock) GetLastBatchNumber

func (_m *StateMock) GetLastBatchNumber(ctx context.Context, dbTx pgx.Tx) (uint64, error)

GetLastBatchNumber provides a mock function with given fields: ctx, dbTx

func (*StateMock) GetLastBlock

func (_m *StateMock) GetLastBlock(ctx context.Context, dbTx pgx.Tx) (*state.Block, error)

GetLastBlock provides a mock function with given fields: ctx, dbTx

func (*StateMock) GetLastClosedBatch

func (_m *StateMock) GetLastClosedBatch(ctx context.Context, dbTx pgx.Tx) (*state.Batch, error)

GetLastClosedBatch provides a mock function with given fields: ctx, dbTx

func (*StateMock) GetLastL2Block

func (_m *StateMock) GetLastL2Block(ctx context.Context, dbTx pgx.Tx) (*types.Block, error)

GetLastL2Block provides a mock function with given fields: ctx, dbTx

func (*StateMock) GetLastL2BlockHeader

func (_m *StateMock) GetLastL2BlockHeader(ctx context.Context, dbTx pgx.Tx) (*types.Header, error)

GetLastL2BlockHeader provides a mock function with given fields: ctx, dbTx

func (*StateMock) GetLastNBatches

func (_m *StateMock) GetLastNBatches(ctx context.Context, numBatches uint, dbTx pgx.Tx) ([]*state.Batch, error)

GetLastNBatches provides a mock function with given fields: ctx, numBatches, dbTx

func (*StateMock) GetLastStateRoot

func (_m *StateMock) GetLastStateRoot(ctx context.Context, dbTx pgx.Tx) (common.Hash, error)

GetLastStateRoot provides a mock function with given fields: ctx, dbTx

func (*StateMock) GetLastTrustedForcedBatchNumber

func (_m *StateMock) GetLastTrustedForcedBatchNumber(ctx context.Context, dbTx pgx.Tx) (uint64, error)

GetLastTrustedForcedBatchNumber provides a mock function with given fields: ctx, dbTx

func (*StateMock) GetLastVirtualBatchNum

func (_m *StateMock) GetLastVirtualBatchNum(ctx context.Context, dbTx pgx.Tx) (uint64, error)

GetLastVirtualBatchNum provides a mock function with given fields: ctx, dbTx

func (*StateMock) GetLatestGer

func (_m *StateMock) GetLatestGer(ctx context.Context, maxBlockNumber uint64) (state.GlobalExitRoot, time.Time, error)

GetLatestGer provides a mock function with given fields: ctx, maxBlockNumber

func (*StateMock) GetLatestGlobalExitRoot

func (_m *StateMock) GetLatestGlobalExitRoot(ctx context.Context, maxBlockNumber uint64, dbTx pgx.Tx) (state.GlobalExitRoot, time.Time, error)

GetLatestGlobalExitRoot provides a mock function with given fields: ctx, maxBlockNumber, dbTx

func (*StateMock) GetLatestVirtualBatchTimestamp

func (_m *StateMock) GetLatestVirtualBatchTimestamp(ctx context.Context, dbTx pgx.Tx) (time.Time, error)

GetLatestVirtualBatchTimestamp provides a mock function with given fields: ctx, dbTx

func (*StateMock) GetNonceByStateRoot

func (_m *StateMock) GetNonceByStateRoot(ctx context.Context, address common.Address, root common.Hash) (*big.Int, error)

GetNonceByStateRoot provides a mock function with given fields: ctx, address, root

func (*StateMock) GetStoredFlushID added in v0.0.990

func (_m *StateMock) GetStoredFlushID(ctx context.Context) (uint64, string, error)

GetStoredFlushID provides a mock function with given fields: ctx

func (*StateMock) GetTimeForLatestBatchVirtualization

func (_m *StateMock) GetTimeForLatestBatchVirtualization(ctx context.Context, dbTx pgx.Tx) (time.Time, error)

GetTimeForLatestBatchVirtualization provides a mock function with given fields: ctx, dbTx

func (*StateMock) GetTransactionsByBatchNumber

func (_m *StateMock) GetTransactionsByBatchNumber(ctx context.Context, batchNumber uint64, dbTx pgx.Tx) ([]types.Transaction, []uint8, error)

GetTransactionsByBatchNumber provides a mock function with given fields: ctx, batchNumber, dbTx

func (*StateMock) GetTxsOlderThanNL1Blocks

func (_m *StateMock) GetTxsOlderThanNL1Blocks(ctx context.Context, nL1Blocks uint64, dbTx pgx.Tx) ([]common.Hash, error)

GetTxsOlderThanNL1Blocks provides a mock function with given fields: ctx, nL1Blocks, dbTx

func (*StateMock) IsBatchClosed

func (_m *StateMock) IsBatchClosed(ctx context.Context, batchNum uint64, dbTx pgx.Tx) (bool, error)

IsBatchClosed provides a mock function with given fields: ctx, batchNum, dbTx

func (*StateMock) OpenBatch

func (_m *StateMock) OpenBatch(ctx context.Context, processingContext state.ProcessingContext, dbTx pgx.Tx) error

OpenBatch provides a mock function with given fields: ctx, processingContext, dbTx

func (*StateMock) ProcessBatch

func (_m *StateMock) ProcessBatch(ctx context.Context, request state.ProcessRequest, updateMerkleTree bool) (*state.ProcessBatchResponse, error)

ProcessBatch provides a mock function with given fields: ctx, request, updateMerkleTree

func (*StateMock) ProcessSequencerBatch

func (_m *StateMock) ProcessSequencerBatch(ctx context.Context, batchNumber uint64, batchL2Data []byte, caller metrics.CallerLabel, dbTx pgx.Tx) (*state.ProcessBatchResponse, error)

ProcessSequencerBatch provides a mock function with given fields: ctx, batchNumber, batchL2Data, caller, dbTx

func (*StateMock) StoreTransaction

func (_m *StateMock) StoreTransaction(ctx context.Context, batchNumber uint64, processedTx *state.ProcessTransactionResponse, coinbase common.Address, timestamp uint64, dbTx pgx.Tx) error

StoreTransaction provides a mock function with given fields: ctx, batchNumber, processedTx, coinbase, timestamp, dbTx

func (*StateMock) UpdateBatchL2Data

func (_m *StateMock) UpdateBatchL2Data(ctx context.Context, batchNumber uint64, batchL2Data []byte, dbTx pgx.Tx) error

UpdateBatchL2Data provides a mock function with given fields: ctx, batchNumber, batchL2Data, dbTx

type TxTracker

type TxTracker struct {
	Hash                              common.Hash
	HashStr                           string
	From                              common.Address
	FromStr                           string
	Nonce                             uint64
	Gas                               uint64 // To check if it fits into a batch
	GasPrice                          *big.Int
	Cost                              *big.Int             // Cost = Amount + Benefit
	Benefit                           *big.Int             // GasLimit * GasPrice
	BatchResources                    state.BatchResources // To check if it fits into a batch
	Efficiency                        float64
	RawTx                             []byte
	ReceivedAt                        time.Time // To check if it has been in the efficiency list for too long
	IP                                string    // IP of the tx sender
	FailedReason                      *string   // FailedReason is the reason why the tx failed, if it failed
	Constraints                       batchConstraintsFloat64
	WeightMultipliers                 batchResourceWeightMultipliers
	ResourceCostMultiplier            float64
	TotalWeight                       float64
	BreakEvenGasPrice                 *big.Int
	GasPriceEffectivePercentage       uint8
	EffectiveGasPriceProcessCount     uint8
	IsEffectiveGasPriceFinalExecution bool
	L1GasPrice                        uint64
}

TxTracker is a struct that contains all the tx data needed to be managed by the worker

type WipBatch

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

WipBatch represents a work-in-progress batch.

type Worker

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

Worker represents the worker component of the sequencer

func NewWorker

func NewWorker(
	cfg WorkerCfg,
	state stateInterface,
	constraints batchConstraints,
	weights batchResourceWeights,
	pendingTxsToStoreMux *sync.RWMutex,
	pendingTxTrackersPerAddress map[common.Address]*pendingTxPerAddressTracker,
) *Worker

NewWorker creates an init a worker

func (*Worker) AddTxTracker

func (w *Worker) AddTxTracker(ctx context.Context, tx *TxTracker) (replacedTx *TxTracker, dropReason error)

AddTxTracker adds a new Tx to the Worker

func (*Worker) DeleteTx

func (w *Worker) DeleteTx(txHash common.Hash, addr common.Address)

DeleteTx delete the tx after it fails to execute

func (*Worker) ExpireTransactions

func (w *Worker) ExpireTransactions(maxTime time.Duration) []*TxTracker

ExpireTransactions deletes old txs

func (*Worker) GetBestFittingTx

func (w *Worker) GetBestFittingTx(resources state.BatchResources) *TxTracker

GetBestFittingTx gets the most efficient tx that fits in the available batch resources

func (*Worker) GetEfficiencyList

func (w *Worker) GetEfficiencyList() *efficiencyList

GetEfficiencyList returns the efficiency list

func (*Worker) HandleL2Reorg

func (w *Worker) HandleL2Reorg(txHashes []common.Hash)

HandleL2Reorg handles the L2 reorg signal

func (*Worker) MoveTxToNotReady

func (w *Worker) MoveTxToNotReady(txHash common.Hash, from common.Address, actualNonce *uint64, actualBalance *big.Int) []*TxTracker

MoveTxToNotReady move a tx to not ready after it fails to execute

func (*Worker) NewTxTracker

func (w *Worker) NewTxTracker(tx types.Transaction, counters state.ZKCounters, ip string) (*TxTracker, error)

NewTxTracker creates and inits a TxTracker

func (*Worker) UpdateAfterSingleSuccessfulTxExecution

func (w *Worker) UpdateAfterSingleSuccessfulTxExecution(from common.Address, touchedAddresses map[common.Address]*state.InfoReadWrite) []*TxTracker

UpdateAfterSingleSuccessfulTxExecution updates the touched addresses after execute on Executor a successfully tx

func (*Worker) UpdateTx

func (w *Worker) UpdateTx(txHash common.Hash, addr common.Address, counters state.ZKCounters)

UpdateTx updates the ZKCounter of a tx and resort the tx in the efficiency list if needed

type WorkerCfg added in v0.1.0

type WorkerCfg struct {
	// ResourceCostMultiplier is the multiplier for the resource cost
	ResourceCostMultiplier float64 `mapstructure:"ResourceCostMultiplier"`
}

WorkerCfg contains the Worker's configuration properties

type WorkerMock

type WorkerMock struct {
	mock.Mock
}

WorkerMock is an autogenerated mock type for the workerInterface type

func NewWorkerMock

func NewWorkerMock(t mockConstructorTestingTNewWorkerMock) *WorkerMock

NewWorkerMock creates a new instance of WorkerMock. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.

func (*WorkerMock) AddTxTracker

func (_m *WorkerMock) AddTxTracker(ctx context.Context, txTracker *TxTracker) (*TxTracker, error)

AddTxTracker provides a mock function with given fields: ctx, txTracker

func (*WorkerMock) DeleteTx

func (_m *WorkerMock) DeleteTx(txHash common.Hash, from common.Address)

DeleteTx provides a mock function with given fields: txHash, from

func (*WorkerMock) GetBestFittingTx

func (_m *WorkerMock) GetBestFittingTx(resources state.BatchResources) *TxTracker

GetBestFittingTx provides a mock function with given fields: resources

func (*WorkerMock) HandleL2Reorg

func (_m *WorkerMock) HandleL2Reorg(txHashes []common.Hash)

HandleL2Reorg provides a mock function with given fields: txHashes

func (*WorkerMock) MoveTxToNotReady

func (_m *WorkerMock) MoveTxToNotReady(txHash common.Hash, from common.Address, actualNonce *uint64, actualBalance *big.Int) []*TxTracker

MoveTxToNotReady provides a mock function with given fields: txHash, from, actualNonce, actualBalance

func (*WorkerMock) NewTxTracker

func (_m *WorkerMock) NewTxTracker(tx types.Transaction, counters state.ZKCounters, ip string) (*TxTracker, error)

NewTxTracker provides a mock function with given fields: tx, counters, ip

func (*WorkerMock) UpdateAfterSingleSuccessfulTxExecution

func (_m *WorkerMock) UpdateAfterSingleSuccessfulTxExecution(from common.Address, touchedAddresses map[common.Address]*state.InfoReadWrite) []*TxTracker

UpdateAfterSingleSuccessfulTxExecution provides a mock function with given fields: from, touchedAddresses

func (*WorkerMock) UpdateTx

func (_m *WorkerMock) UpdateTx(txHash common.Hash, from common.Address, ZKCounters state.ZKCounters)

UpdateTx provides a mock function with given fields: txHash, from, ZKCounters

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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