Pregunta 5

wallet: store all witness variants of a transaction

Pol Espinasa 22/07/2026 20:13
Pregunta 5 -> Cuando el wallet retransmite transacciones usa GetTx() lo cual devuelve la variante canónica. Si la tx es taproot y la variante canónica es un gasto key-path no confirmado pero en la mempool ya tiene el gasto script-path (mismo txid), ¿qué pasa? ¿Podría la retransmisión ser rechazada?
30/07/2026 19:35
La pregunta anterior fue rapida, a ver esta
Santochibtc 30/07/2026 19:35
En esta me abstengo 😅
nacho_porte 30/07/2026 19:36
Si llega a la misma mempool el nodo la rechaza directamente por una regla de policy.
👍 2
> 30/07/2026 19:36
Sí va a ser rechazada, el nodo no hace “witness replacement” así que él mismo rechaza otra tx con el mismo txid.
👍 2
nacho_porte 30/07/2026 19:36
buena pregunta
> 30/07/2026 19:36
(txn-same-nonwitness-data-in-mempool
👍 1
nacho_porte 30/07/2026 19:38
La regla dice básicamente que no pueden haber 2 o más variantes en una misma mempool
👍 1
30/07/2026 19:40
@achow101 tienes en mente que error salta?
achow101 30/07/2026 19:40
i think so
30/07/2026 19:41
it needs to meet the replacement rules, so better fee rate, etc.
👍 1
> 30/07/2026 19:42
if (m_pool.exists(tx.GetWitnessHash())) {
        // Exact transaction already exists in the mempool.
        return state.Invalid(TxValidationResult::TX_CONFLICT, "txn-already-in-mempool");
    } else if (m_pool.exists(tx.GetHash())) {
        // Transaction with the same non-witness data but different witness (same txid, different
        // wtxid) already exists in the mempool.
        return state.Invalid(TxValidationResult::TX_CONFLICT, "txn-same-nonwitness-data-in-mempool");
    }
👍 2
30/07/2026 19:42
Este es el bloque donde están ambos
30/07/2026 19:43
salta el if si la wtxid ya existe
30/07/2026 19:43
correcto 🙂
Santochibtc 30/07/2026 19:43
En este caso sería el else if
👍 3
30/07/2026 19:43
distinto wtxid same txid
30/07/2026 19:44
so it will always get rejected
Pol Espinasa 30/07/2026 19:46
vale, para resumir, la retransmision siempre es rechazada porque ya hay una tx con el mismo txid en la mempool y esa nueva tx no puede cumplir las mempool policy necesarias para hacer rbf (en concreto incrementar el absolute feerate)
👍 2
30/07/2026 19:47
alguien quiere añadir alguna cosa a esta pregunta o vamos a la siguiente? se nos come el tiempo!
👍🏻 1 ⏭️ 1