core/txpool: check if initcode size is exceeded (#26504)

* core/txpool: check if initcode size is exceeded

* core/txpool: move check
This commit is contained in:
Marius van der Wijden 2023-01-18 09:47:42 +01:00 committed by GitHub
parent 4a3fb585dd
commit a35b654f25
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -18,6 +18,7 @@ package txpool
import ( import (
"errors" "errors"
"fmt"
"math" "math"
"math/big" "math/big"
"sort" "sort"
@ -599,6 +600,10 @@ func (pool *TxPool) validateTx(tx *types.Transaction, local bool) error {
if tx.Size() > txMaxSize { if tx.Size() > txMaxSize {
return ErrOversizedData return ErrOversizedData
} }
// Check whether the init code size has been exceeded.
if pool.shanghai && tx.To() == nil && len(tx.Data()) > params.MaxInitCodeSize {
return fmt.Errorf("%w: code size %v limit %v", core.ErrMaxInitCodeSizeExceeded, len(tx.Data()), params.MaxInitCodeSize)
}
// Transactions can't be negative. This may never happen using RLP decoded // Transactions can't be negative. This may never happen using RLP decoded
// transactions but may occur if you create a transaction using the RPC. // transactions but may occur if you create a transaction using the RPC.
if tx.Value().Sign() < 0 { if tx.Value().Sign() < 0 {