From 8d7622f0c51a332675a793047e084def5ddcca83 Mon Sep 17 00:00:00 2001 From: wizeguyy Date: Wed, 4 Dec 2024 10:21:54 -0600 Subject: [PATCH] Reject transactions which emit Qi UTXOs to inactive chains --- core/tx_pool.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/core/tx_pool.go b/core/tx_pool.go index d2db17c5c..21c7ad582 100644 --- a/core/tx_pool.go +++ b/core/tx_pool.go @@ -1276,8 +1276,21 @@ func (pool *TxPool) addQiTxs(txs types.Transactions) []error { if etxPLimit < params.ETXPLimitMin { etxPLimit = params.ETXPLimitMin } + activeLocations := common.NewChainsAdded(pool.chain.CurrentBlock().ExpansionNumber()) transactionsWithoutErrors := make([]*types.TxWithMinerFee, 0, len(txs)) for _, tx := range txs { + // Reject TX if it emits an output to an inactive chain + for _, txo := range tx.TxOut() { + found := false + for _, activeLoc := range activeLocations { + if common.IsInChainScope(txo.Address, activeLoc) { + found = true + } + } + if !found { + errs = append(errs, fmt.Errorf("Qi TXO emitted to an inactive chain")) + } + } totalQitIn, err := ValidateQiTxInputs(tx, pool.chain, pool.db, currentBlock, pool.signer, pool.chainconfig.Location, *pool.chainconfig.ChainID) if err != nil {