Pregunta 8

Implement BIP 54 (Consensus Cleanup) without mainnet activation

Andrea Díaz Correia 18/08/2026 21:30
Pregunta 8 -> En el commit “validation: enforce coinbase timelocked to block height” se exige que el coinbase tenga nLockTime == nHeight - 1 (además de un nSequence no final). ¿Por qué el - 1 y por qué hacen falta las dos condiciones? ¿Qué tiene que ver esto con BIP 30, y por qué feature_block.py tiene que reiniciar el nodo antes de sus tests de BIP 30?
25/08/2026 17:55
aqui la siguiente
25/08/2026 17:55
👀
Pol Espinasa 25/08/2026 17:56
va esta es facil! aun que no hayas llegado aqui, esto es conocimiento basico de bitcoin 😄
25/08/2026 17:56
quien se anima?
Andrea Díaz Correia 25/08/2026 17:56
El - 1 es por la semántica de nLockTime: es la última altura a la que la tx es inválida, no la primera a la que es válida. IsFinalTx compara con < estricto, así que para ser válida en H necesita nLockTime <= H-1. Poner exactamente H-1 la hace válida en H e inválida en toda altura anterior no?
👍 2
Pol Espinasa 25/08/2026 17:57
correcto
25/08/2026 17:58
si se pusiera nHeight la tx seria invalida en nHeight 🙂
25/08/2026 17:59
y las dos condiciones?
25/08/2026 18:00
porque con un nSequence = FINAL el timelock se ignora
Andrea Díaz Correia 25/08/2026 18:00
Entiendo que IsFinalTx tiene un bypass: si todos los inputs tienen nSequence == FINAL, el nLockTime se ignora por completo. Con las dos juntas es como que garantiza que una coinbase con nLockTime = H-1 y sequence no-final no pudo haber sido válida en ningún bloque anterior
👍 3
Pol Espinasa 25/08/2026 18:01
correcto
25/08/2026 18:01
y los tests reinician el nodo porque necesita correr el nodo sin bip54 para validar el bip30 ya que el test construye deliveradamente coinbase txs con el id duplicado para testear.
👍 1
25/08/2026 18:02
vamos a las 2 ultimas que se nos come el tiempo!
25/08/2026 18:02
si luego quedan dudas, los chats estaran abiertos durante todo lo que queda de dia
👍🏻 3