core, miner: fix inconsistent tx blacklist enforcement, close XFN-98 (#1674)

This commit is contained in:
Daniel Liu 2025-11-18 13:54:08 +08:00 committed by GitHub
parent 3b3aa9b013
commit f8553d5871
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 17 additions and 16 deletions

View file

@ -94,7 +94,7 @@ func (p *StateProcessor) Process(block *types.Block, statedb *state.StateDB, tra
// Iterate over and process the individual transactions
for i, tx := range block.Transactions() {
// check black-list txs after hf
if (block.Number().Uint64() >= common.BlackListHFNumber) && !common.IsTestnet {
if block.Number().Uint64() >= common.BlackListHFNumber {
// check if sender is in black list
if common.IsInBlacklist(tx.From()) {
return nil, nil, 0, fmt.Errorf("block contains transaction with sender in black-list: %v", tx.From().Hex())
@ -187,7 +187,7 @@ func (p *StateProcessor) ProcessBlockNoValidator(cBlock *CalculatedBlock, stated
receipts = make([]*types.Receipt, block.Transactions().Len())
for i, tx := range block.Transactions() {
// check black-list txs after hf
if (block.Number().Uint64() >= common.BlackListHFNumber) && !common.IsTestnet {
if block.Number().Uint64() >= common.BlackListHFNumber {
// check if sender is in black list
if common.IsInBlacklist(tx.From()) {
return nil, nil, 0, fmt.Errorf("block contains transaction with sender in black-list: %v", tx.From().Hex())

View file

@ -630,13 +630,20 @@ func (pool *TxPool) validateTx(tx *types.Transaction, local bool) error {
if uint64(tx.Size()) > txMaxSize {
return ErrOversizedData
}
// check if sender is in black list
if common.IsInBlacklist(tx.From()) {
return fmt.Errorf("reject transaction with sender in black-list: %v", tx.From().Hex())
// Get current block number
var number *big.Int = nil
if pool.chain.CurrentHeader() != nil {
number = pool.chain.CurrentHeader().Number
}
// check if receiver is in black list
if common.IsInBlacklist(tx.To()) {
return fmt.Errorf("reject transaction with receiver in black-list: %v", tx.To().Hex())
if number == nil || number.Uint64() >= common.BlackListHFNumber {
// check if sender is in black list
if common.IsInBlacklist(tx.From()) {
return fmt.Errorf("reject transaction with sender in black-list: %v", tx.From().Hex())
}
// check if receiver is in black list
if common.IsInBlacklist(tx.To()) {
return fmt.Errorf("reject transaction with receiver in black-list: %v", tx.To().Hex())
}
}
// Transactions can't be negative. This may never happen using RLP decoded
// transactions but may occur if you create a transaction using the RPC.
@ -691,10 +698,6 @@ func (pool *TxPool) validateTx(tx *types.Transaction, local bool) error {
// cost == V + GP * GL
balance := pool.currentState.GetBalance(from)
cost := tx.Cost()
var number *big.Int = nil
if pool.chain.CurrentHeader() != nil {
number = pool.chain.CurrentHeader().Number
}
minGasPrice := common.GetMinGasPrice(number)
feeCapacity := big.NewInt(0)

View file

@ -919,8 +919,7 @@ func (w *Work) commitTransactions(mux *event.TypeMux, balanceFee map[common.Addr
// first priority for special Txs
for _, tx := range specialTxs {
to := tx.To()
//HF number for black-list
if (w.header.Number.Uint64() >= common.BlackListHFNumber) && !common.IsTestnet {
if w.header.Number.Uint64() >= common.BlackListHFNumber {
from := tx.From()
// check if sender is in black list
if common.IsInBlacklist(from) {
@ -1029,9 +1028,8 @@ func (w *Work) commitTransactions(mux *event.TypeMux, balanceFee map[common.Addr
break
}
//HF number for black-list
to := tx.To()
if (w.header.Number.Uint64() >= common.BlackListHFNumber) && !common.IsTestnet {
if w.header.Number.Uint64() >= common.BlackListHFNumber {
from := tx.From()
// check if sender is in black list
if common.IsInBlacklist(from) {