Saltar al contenido
buybitcoinsmart

Glosario / Transacciones y comisiones

Número de secuencia

También se conoce como nSequence.

¿Qué es el número de secuencia?
El número de secuencia es un campo de cuatro bytes, presente en cada entrada de transacción, que señaliza el reemplazo con una comisión más alta, activa el locktime y puede codificar un bloqueo temporal relativo (relative timelock).

Se especifica en el BIP-68.

Tres funciones sin relación entre sí comparten un mismo campo porque bitcoin no podía permitirse añadir otro. El plan original de Satoshi para el campo, un canal de pago rudimentario en el que cada nueva versión aumentaba el número, se abandonó alrededor de 2010 porque ninguna regla obligaba a los mineros a preferir la de número más alto. Lo que sobrevivió es un conjunto de valores mágicos que deciden cómo se comportan las transacciones de su billetera.

Cómo funciona

Leer un número de secuencia supone contrastarlo con tres reglas distintas, por orden de antigüedad.

El valor final. Un número de secuencia de 0xffffffff, 4.294.967.295 en decimal, marca una entrada como final. Si todas las entradas de una transacción son finales, el campo locktime se ignora por completo. Era el valor predeterminado en las primeras billeteras y sigue siendo lo que se ve en las transacciones construidas por software que nunca ha tenido en cuenta el campo.

La señal de reemplazo. BIP125 asignó un significado al extremo inferior del rango: cualquier entrada con un valor de 0xfffffffd o inferior anuncia que el remitente puede reemplazar la transacción por una versión que pague más. El valor 0xfffffffe encuentra el punto justo: activa el locktime sin dar la señal de reemplazo. Esa distinción ha perdido la mayor parte de su fuerza, porque Bitcoin Core retransmite los reemplazos con independencia de la señal desde la versión 28.0, de octubre de 2024.

El bloqueo temporal relativo. BIP68 reinterpretó los bits bajos en las transacciones que declaran la versión 2 o superior, y la regla pasó a ser exigible en el bloque 419.328, en julio de 2016. Cuando el bit 31 no está activado, los 16 bits inferiores indican cuánto tiempo debe pasar después de la confirmación de la moneda que gasta la propia entrada. El bit 22 elige la unidad: sin activar significa bloques, con un máximo de 65.535 bloques o aproximadamente 455 días, y activado significa períodos de 512 segundos, lo que da un tope cercano a 388 días. El reloj empieza a correr desde la confirmación de la transacción padre, no desde una fecha fija, y eso es exactamente lo que necesita un contrato entre dos personas.

Dónde aparece

El número de secuencia aparece como una columna en los volcados de transacciones en bruto y como una casilla de selección en el software de billetera, y las dos vistas rara vez usan las mismas palabras.

Un explorador de bloques que decodifica las entradas mostrará valores como 4294967293 junto a cada una. Eso es 0xfffffffd, y le indica que la billetera construyó una transacción reemplazable. La llamada RPC decoderawtransaction de Bitcoin Core muestra la misma cifra, y Sparrow y Electrum la presentan tras un interruptor "replace by fee" en lugar de como un número.

Lightning es su mayor usuario real. El retraso de revocación de un canal, la ventana durante la cual su contraparte puede ser penalizada por publicar un estado antiguo, es un bloqueo temporal relativo que se hace cumplir mediante este campo en la entrada de la transacción de compromiso. El mismo mecanismo sustenta los intercambios submarinos, los diseños de bóveda y cualquier contrato en el que una ruta de reembolso solo deba quedar disponible después de que la otra parte haya tenido una oportunidad justa de actuar.

Número de secuencia frente a locktime

Los números de secuencia son por entrada; el locktime es por transacción. Esa es la forma más rápida de distinguirlos, y explica por qué se usan para cosas distintas.

El locktime establece un único plazo absoluto para toda la transacción, expresado como una altura de bloque o una hora real, y se aplica tanto si las monedas que se gastan tienen un día de antigüedad como si tienen cinco años. Un bloqueo temporal relativo en un número de secuencia mide desde la confirmación de la moneda concreta que gasta esa entrada, así que cada entrada puede llevar su propio período de espera y el mismo script funciona sin importar cuándo se financie. Los dos dependen además el uno del otro de una forma incómoda: el locktime solo se hace cumplir cuando al menos un número de secuencia está por debajo del valor final, así que una billetera que lo pone todo en 0xffffffff desactiva en silencio el otro campo.

No confundir con

Preguntas frecuentes

¿Qué significa un número de secuencia de 4294967293?

Es 0xfffffffd, el valor que usan las billeteras para señalizar que una transacción puede reemplazarse por una versión que pague más. También deja el locktime en vigor, y por eso la mayoría de las billeteras modernas lo eligen por defecto.

¿Es un bloqueo temporal relativo lo mismo que un locktime?

No. Un bloqueo temporal relativo en un número de secuencia cuenta desde la confirmación de la moneda que se gasta, así que empieza en el momento en que se minó esa moneda. El locktime indica una única altura de bloque o fecha fija para toda la transacción.

Términos relacionados

Más en la sección Transacciones y comisiones

Leer esta página en inglés