From b60396a233a10009aa2b0c0086ee36617be95558 Mon Sep 17 00:00:00 2001 From: Daniel Liu Date: Thu, 20 Feb 2025 12:48:17 +0800 Subject: [PATCH] core, internal/ethapi: improve function IsSpecialTransaction --- core/txpool/list.go | 2 +- core/txpool/txpool.go | 4 ++-- core/types/transaction.go | 2 +- internal/ethapi/api.go | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/core/txpool/list.go b/core/txpool/list.go index 70d2322f96..8b22abffea 100644 --- a/core/txpool/list.go +++ b/core/txpool/list.go @@ -281,7 +281,7 @@ func (l *list) Overlaps(tx *types.Transaction) bool { func (l *list) Add(tx *types.Transaction, priceBump uint64) (bool, *types.Transaction) { // If there's an older better transaction, abort old := l.txs.Get(tx.Nonce()) - if old != nil && old.IsSpecialTransaction() { + if old.IsSpecialTransaction() { return false, nil } if old != nil { diff --git a/core/txpool/txpool.go b/core/txpool/txpool.go index 50a916626e..f38f666334 100644 --- a/core/txpool/txpool.go +++ b/core/txpool/txpool.go @@ -700,7 +700,7 @@ func (pool *TxPool) validateTx(tx *types.Transaction, local bool) error { return core.ErrInsufficientFunds } - if tx.To() == nil || (tx.To() != nil && !tx.IsSpecialTransaction()) { + if !tx.IsSpecialTransaction() { // Ensure the transaction has more gas than the basic tx fee. intrGas, err := core.IntrinsicGas(tx.Data(), tx.AccessList(), tx.To() == nil, true, pool.eip1559) if err != nil { @@ -950,7 +950,7 @@ func (pool *TxPool) promoteSpecialTx(addr common.Address, tx *types.Transaction, list := pool.pending[addr] old := list.txs.Get(tx.Nonce()) - if old != nil && old.IsSpecialTransaction() { + if old.IsSpecialTransaction() { return false, ErrDuplicateSpecialTransaction } // Otherwise discard any previous transaction and mark this diff --git a/core/types/transaction.go b/core/types/transaction.go index 273d33eb8b..369127c4c0 100644 --- a/core/types/transaction.go +++ b/core/types/transaction.go @@ -487,7 +487,7 @@ func IsSpecialTx(to *common.Address) bool { } func (tx *Transaction) IsSpecialTransaction() bool { - return IsSpecialTx(tx.To()) + return tx != nil && IsSpecialTx(tx.To()) } func (tx *Transaction) IsTradingTransaction() bool { diff --git a/internal/ethapi/api.go b/internal/ethapi/api.go index b306553f09..c3d77c6416 100644 --- a/internal/ethapi/api.go +++ b/internal/ethapi/api.go @@ -2294,7 +2294,7 @@ func (s *PublicTransactionPoolAPI) sign(addr common.Address, tx *types.Transacti // SubmitTransaction is a helper function that submits tx to txPool and logs a message. func SubmitTransaction(ctx context.Context, b Backend, tx *types.Transaction) (common.Hash, error) { - if tx.To() != nil && tx.IsSpecialTransaction() { + if tx.IsSpecialTransaction() { return common.Hash{}, errors.New("don't allow transaction sent to BlockSigners & RandomizeSMC smart contract via API") }