Skip to content
This repository was archived by the owner on Feb 17, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions pool/pool.go
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,25 @@ func (p *Pool) StoreTx(ctx context.Context, tx types.Transaction, ip string, isW
preExecutionResponse, err := p.preExecuteTx(ctx, tx)
if errors.Is(err, runtime.ErrIntrinsicInvalidBatchGasLimit) {
return ErrGasLimit
} else if errors.Is(err, runtime.ErrFea2Scalar) ||
errors.Is(err, runtime.ErrBalanceMismatch) ||
errors.Is(err, runtime.ErrTos32) {
event := &event.Event{
ReceivedAt: time.Now(),
IPAddress: ip,
Source: event.Source_Node,
Component: event.Component_Pool,
Level: event.Level_Critical,
EventID: event.EventID_ExecutorError,
Description: fmt.Sprintf("Error: %s. TxHash: %s", err.Error(), tx.Hash().String()),
}

err := p.eventLog.LogEvent(ctx, event)
if err != nil {
log.Errorf("error adding event: %v", err)
}
// Do not add tx to the pool
return err
} else if err != nil {
log.Debugf("PreExecuteTx error (this can be ignored): %v", err)
}
Expand Down
5 changes: 5 additions & 0 deletions sequencer/effective_gas_price.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,11 @@ func (f *finalizer) CalculateTxBreakEvenGasPrice(tx *TxTracker, gasUsed uint64)
return nil, ErrZeroL1GasPrice
}

if gasUsed == 0 {
// Returns tx.GasPrice as the breakEvenGasPrice
return tx.GasPrice, nil
}

// Get L2 Min Gas Price
l2MinGasPrice := uint64(float64(tx.L1GasPrice) * f.effectiveGasPriceCfg.L1GasPriceFactor)
if l2MinGasPrice < f.defaultMinGasPriceAllowed {
Expand Down
32 changes: 32 additions & 0 deletions sequencer/finalizer.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import (
"github.com/0xPolygonHermez/zkevm-node/sequencer/metrics"
"github.com/0xPolygonHermez/zkevm-node/state"
stateMetrics "github.com/0xPolygonHermez/zkevm-node/state/metrics"
"github.com/0xPolygonHermez/zkevm-node/state/runtime"
"github.com/0xPolygonHermez/zkevm-node/state/runtime/executor"
"github.com/ethereum/go-ethereum/common"
"github.com/jackc/pgx/v4"
Expand Down Expand Up @@ -580,6 +581,37 @@ func (f *finalizer) processTransaction(ctx context.Context, tx *TxTracker) (errW
} else if tx != nil && err == nil && !processBatchResponse.IsRomLevelError && len(processBatchResponse.Responses) == 0 {
err = fmt.Errorf("executor returned no errors and no responses for tx: %s", tx.HashStr)
f.halt(ctx, err)
} else if tx != nil && processBatchResponse.ExecutorError == runtime.ErrBalanceMismatch ||
Comment thread
agnusmor marked this conversation as resolved.
processBatchResponse.ExecutorError == runtime.ErrFea2Scalar ||
processBatchResponse.ExecutorError == runtime.ErrTos32 {
log.Errorf("error received from executor. Error: %v", err)
// Record event
event := event.Event{
ReceivedAt: time.Now(),
Source: event.Source_Node,
Component: event.Component_Executor,
Level: event.Level_Critical,
EventID: event.EventID_ExecutorError,
Description: processBatchResponse.ExecutorError.Error(),
Data: f.processRequest.Transactions,
Json: fmt.Sprintf("processBatchResponse: %#v. f.processRequest: %#v", processBatchResponse, f.processRequest),
}
err := f.eventLog.LogEvent(ctx, &event)
if err != nil {
log.Error("error storing event on db. Error: %s. Event: %#v", err.Error(), event)
}

// Delete tx from the worker
f.worker.DeleteTx(tx.Hash, tx.From)

// Set tx as invalid in the pool
errMsg := processBatchResponse.ExecutorError.Error()
err = f.dbManager.UpdateTxStatus(ctx, tx.Hash, pool.TxStatusInvalid, false, &errMsg)
if err != nil {
log.Errorf("failed to update status to invalid in the pool for tx: %s, err: %s", tx.Hash.String(), err)
} else {
metrics.TxProcessed(metrics.TxProcessedLabelInvalid, 1)
}
return nil, err
}

Expand Down