Documentation ¶
Index ¶
Constants ¶
const ( // ProfitabilityBase checks pol collateral with min reward ProfitabilityBase = "base" // ProfitabilityAcceptAll validate batch anyway and don't check anything ProfitabilityAcceptAll = "acceptall" )
Variables ¶
This section is empty.
Functions ¶
func FirstToUpper ¶
FirstToUpper returns the string passed as argument with the first letter in uppercase.
Types ¶
type Aggregator ¶
type Aggregator struct { prover.UnimplementedAggregatorServiceServer State stateInterface EthTxManager ethTxManager Ethman etherman ProfitabilityChecker aggregatorTxProfitabilityChecker TimeSendFinalProof time.Time TimeCleanupLockedProofs types.Duration StateDBMutex *sync.Mutex TimeSendFinalProofMutex *sync.RWMutex // contains filtered or unexported fields }
Aggregator represents an aggregator
func New ¶
func New( cfg Config, stateInterface stateInterface, ethTxManager ethTxManager, etherman etherman, ) (Aggregator, error)
New creates a new aggregator.
func (*Aggregator) Channel ¶
func (a *Aggregator) Channel(stream prover.AggregatorService_ChannelServer) error
Channel implements the bi-directional communication channel between the Prover client and the Aggregator server.
type Config ¶
type Config struct { // Host for the grpc server Host string `mapstructure:"Host"` // Port for the grpc server Port int `mapstructure:"Port"` // RetryTime is the time the aggregator main loop sleeps if there are no proofs to aggregate // or batches to generate proofs. It is also used in the isSynced loop RetryTime types.Duration `mapstructure:"RetryTime"` // VerifyProofInterval is the interval of time to verify/send an proof in L1 VerifyProofInterval types.Duration `mapstructure:"VerifyProofInterval"` // ProofStatePollingInterval is the interval time to polling the prover about the generation state of a proof ProofStatePollingInterval types.Duration `mapstructure:"ProofStatePollingInterval"` // TxProfitabilityCheckerType type for checking is it profitable for aggregator to validate batch // possible values: base/acceptall TxProfitabilityCheckerType TxProfitabilityCheckerType `mapstructure:"TxProfitabilityCheckerType"` // TxProfitabilityMinReward min reward for base tx profitability checker when aggregator will validate batch // this parameter is used for the base tx profitability checker TxProfitabilityMinReward TokenAmountWithDecimals `mapstructure:"TxProfitabilityMinReward"` // IntervalAfterWhichBatchConsolidateAnyway this is interval for the main sequencer, that will check if there is no transactions IntervalAfterWhichBatchConsolidateAnyway types.Duration `mapstructure:"IntervalAfterWhichBatchConsolidateAnyway"` // ChainID is the L2 ChainID provided by the Network Config ChainID uint64 // ForkID is the L2 ForkID provided by the Network Config ForkId uint64 // SenderAddress defines which private key the eth tx manager needs to use // to sign the L1 txs SenderAddress string `mapstructure:"SenderAddress"` // CleanupLockedProofsInterval is the interval of time to clean up locked proofs. CleanupLockedProofsInterval types.Duration `mapstructure:"CleanupLockedProofsInterval"` // GeneratingProofCleanupThreshold represents the time interval after // which a proof in generating state is considered to be stuck and // allowed to be cleared. GeneratingProofCleanupThreshold string `mapstructure:"GeneratingProofCleanupThreshold"` // 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"` // UpgradeEtrogBatchNumber is the number of the first batch after upgrading to etrog UpgradeEtrogBatchNumber uint64 `mapstructure:"UpgradeEtrogBatchNumber"` // BatchProofL1BlockConfirmations is number of L1 blocks to consider we can generate the proof for a virtual batch BatchProofL1BlockConfirmations uint64 `mapstructure:"BatchProofL1BlockConfirmations"` }
Config represents the configuration of the aggregator
type TokenAmountWithDecimals ¶
TokenAmountWithDecimals is a wrapper type that parses token amount with decimals to big int
func (*TokenAmountWithDecimals) UnmarshalText ¶
func (t *TokenAmountWithDecimals) UnmarshalText(data []byte) error
UnmarshalText unmarshal token amount from float string to big int
type TxProfitabilityCheckerAcceptAll ¶
type TxProfitabilityCheckerAcceptAll struct { State stateInterface IntervalAfterWhichBatchSentAnyway time.Duration }
TxProfitabilityCheckerAcceptAll validate batch anyway and don't check anything
func NewTxProfitabilityCheckerAcceptAll ¶
func NewTxProfitabilityCheckerAcceptAll(state stateInterface, interval time.Duration) *TxProfitabilityCheckerAcceptAll
NewTxProfitabilityCheckerAcceptAll init tx profitability checker that accept all txs
func (*TxProfitabilityCheckerAcceptAll) IsProfitable ¶
func (pc *TxProfitabilityCheckerAcceptAll) IsProfitable(ctx context.Context, polCollateral *big.Int) (bool, error)
IsProfitable validate batch anyway and don't check anything
type TxProfitabilityCheckerBase ¶
type TxProfitabilityCheckerBase struct { State stateInterface IntervalAfterWhichBatchSentAnyway time.Duration MinReward *big.Int }
TxProfitabilityCheckerBase checks pol collateral with min reward
func NewTxProfitabilityCheckerBase ¶
func NewTxProfitabilityCheckerBase(state stateInterface, interval time.Duration, minReward *big.Int) *TxProfitabilityCheckerBase
NewTxProfitabilityCheckerBase init base tx profitability checker
func (*TxProfitabilityCheckerBase) IsProfitable ¶
func (pc *TxProfitabilityCheckerBase) IsProfitable(ctx context.Context, polCollateral *big.Int) (bool, error)
IsProfitable checks pol collateral with min reward
type TxProfitabilityCheckerType ¶
type TxProfitabilityCheckerType string
TxProfitabilityCheckerType checks profitability of batch validation