Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct {
// WaitPeriodSendSequence is the time the sequencer waits until
// trying to send a sequence to L1
WaitPeriodSendSequence types.Duration `mapstructure:"WaitPeriodSendSequence"`
// LastBatchVirtualizationTimeMaxWaitPeriod is time since sequences should be sent
LastBatchVirtualizationTimeMaxWaitPeriod types.Duration `mapstructure:"LastBatchVirtualizationTimeMaxWaitPeriod"`
// L1BlockTimestampMargin is the time difference (margin) that must exists between last L1 block
// and last L2 block in the sequence before sending the sequence to L1. If the difference is
// lower than this value, then sequencesender will wait until the difference is equal or greater
L1BlockTimestampMargin types.Duration `mapstructure:"L1BlockTimestampMargin"`
// MaxTxSizeForL1 is the maximum size a single transaction can have. This field has
// non-trivial consequences: larger transactions than 128KB are significantly harder and
// more expensive to propagate; larger transactions also take more resources
// to validate whether they fit into the pool or not.
MaxTxSizeForL1 uint64 `mapstructure:"MaxTxSizeForL1"`
// SenderAddress defines which private key the eth tx manager needs to use
// to sign the L1 txs
SenderAddress common.Address
// L2Coinbase defines which address is going to receive the fees
L2Coinbase common.Address `mapstructure:"L2Coinbase"`
// PrivateKey defines all the key store files that are going
// to be read in order to provide the private keys to sign the L1 txs
PrivateKey types.KeystoreFileConfig `mapstructure:"PrivateKey"`
// Batch number where there is a forkid change (fork upgrade)
ForkUpgradeBatchNumber uint64
// GasOffset is the amount of gas to be added to the gas estimation in order
// to provide an amount that is higher than the estimated one. This is used
// to avoid the TX getting reverted in case something has changed in the network
// state after the estimation which can cause the TX to require more gas to be
// executed.
//
// ex:
// gas estimation: 1000
// gas offset: 100
// final gas: 1100
GasOffset uint64 `mapstructure:"GasOffset"`
// SequencesTxFileName is the file name to store sequences sent to L1
SequencesTxFileName string
// WaitPeriodPurgeTxFile is the time to wait before purging from file the finished sent L1 tx
WaitPeriodPurgeTxFile types.Duration `mapstructure:"WaitPeriodPurgeTxFile"`
// MaxPendingTx is the maximum number of pending transactions (those that are not in a final state)
MaxPendingTx uint64
// EthTxManager is the config for the ethtxmanager
EthTxManager ethtxmanager.Config `mapstructure:"EthTxManager"`
// Log is the log configuration
Log log.Config `mapstructure:"Log"`
// MaxBatchesForL1 is the maximum amount of batches to be sequenced in a single L1 tx
MaxBatchesForL1 uint64 `mapstructure:"MaxBatchesForL1"`
// BlockFinality indicates the status of the blocks that will be queried in order to sync
BlockFinality string `` //nolint:lll
/* 134-byte string literal not displayed */
// RPCURL is the URL of the RPC server
RPCURL string `mapstructure:"RPCURL"`
// GetBatchWaitInterval is the time to wait to query for a new batch when there are no more batches available
GetBatchWaitInterval types.Duration `mapstructure:"GetBatchWaitInterval"`
}
Config represents the configuration of a sequence sender
type EthTxManager ¶ added in v0.2.0
type EthTxManager interface {
Start()
AddWithGas(
ctx context.Context,
to *common.Address,
value *big.Int,
data []byte,
gasOffset uint64,
sidecar *ethtypes.BlobTxSidecar,
gas uint64,
) (common.Hash, error)
Remove(ctx context.Context, hash common.Hash) error
ResultsByStatus(ctx context.Context, status []ethtxtypes.MonitoredTxStatus) ([]ethtxtypes.MonitoredTxResult, error)
Result(ctx context.Context, hash common.Hash) (ethtxtypes.MonitoredTxResult, error)
}
EthTxManager represents the eth tx manager interface
type Etherman ¶ added in v0.2.0
type Etherman interface {
CurrentNonce(ctx context.Context, address common.Address) (uint64, error)
GetLatestBlockHeader(ctx context.Context) (*ethtypes.Header, error)
EstimateGas(ctx context.Context, from common.Address, to *common.Address, value *big.Int, data []byte) (uint64, error)
GetLatestBatchNumber() (uint64, error)
}
Etherman represents the etherman behaviour
type RPCInterface ¶ added in v0.4.0
type RPCInterface interface {
GetBatch(batchNumber uint64) (*types.RPCBatch, error)
GetWitness(batchNumber uint64, fullWitness bool) ([]byte, error)
}
RPCInterface represents the RPC interface
type SequenceSender ¶
type SequenceSender struct {
TxBuilder txbuilder.TxBuilder
// contains filtered or unexported fields
}
SequenceSender represents a sequence sender
func New ¶
func New(cfg Config, logger *log.Logger, etherman *etherman.Client, txBuilder txbuilder.TxBuilder) (*SequenceSender, error)
New inits sequence sender
func (*SequenceSender) IsStopped ¶ added in v0.3.1
func (s *SequenceSender) IsStopped() bool
IsStopped returns true in case seqSendingStopped is set to 1, otherwise false
func (*SequenceSender) Start ¶
func (s *SequenceSender) Start(ctx context.Context)
Start starts the sequence sender
Click to show internal directories.
Click to hide internal directories.