sequencer

package
v0.2.0-RC1 Latest Latest
Warning

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

Go to latest
Published: Jun 30, 2023 License: AGPL-3.0, AGPL-3.0-or-later Imports: 27 Imported by: 2

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (

	// 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")
)
View Source
var (
	// ErrExpiredTransaction happens when the transaction is expired
	ErrExpiredTransaction = errors.New("transaction expired")
)

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"`
	ForkID                   uint64         `mapstructure:"ForkID"`
}

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) CalculateTxBreakEvenGasPrice

func (_m *DbManagerMock) CalculateTxBreakEvenGasPrice(ctx context.Context, txDataLength uint64, gasUsed uint64, l1GasPrice uint64) (*big.Int, error)

CalculateTxBreakEvenGasPrice provides a mock function with given fields: ctx, txDataLength, gasUsed, l1GasPrice

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

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

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

	// ForkID is the fork id of the chain
	ForkID uint64 `mapstructure:"ForkID"`
}

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) CalculateTxBreakEvenGasPrice

func (_m *PoolMock) CalculateTxBreakEvenGasPrice(ctx context.Context, txDataLength uint64, gasUsed uint64, l1GasPrice uint64) (*big.Int, error)

CalculateTxBreakEvenGasPrice provides a mock function with given fields: ctx, txDataLength, gasUsed, l1GasPrice

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) 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) 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) (*pb.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) 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) *Worker

NewWorker creates an init a worker

func (*Worker) AddTxTracker

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

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) (error, bool)

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