¿Qué son los nSequence?

Implementaciones de nSequence

Bloqueo de tiempo CHECKSEQUENCEVERIFY

El bloqueo de tiempo relativo nSequence se puede implementar en el código OP_CHECKSEQUENCEVERIFY. Este código permite hacer un bloqueo del gasto sobre una salida en específico de una transacción. Esto hasta tanto no se cumplan ciertas condiciones. Como alcanzar ciertos bloques o un intervalo de tiempo definido desde la extracción de la transacción que contiene dicha salida.

En este caso, cuando un usuario utiliza y gasta las UTXO en una entrada de transacción, se debe establecer que el valor de nSequence en esa entrada sea mayor o igual que el parámetro establecido en CHECKSEQUENCEVERIFY. Así como también el formato del valor de nSequence debe coincidir con el valor de CHECKSEQUENCEVERIFY. Es decir, si CHECKSEQUENCEVERIFY está especificado en términos de bloques, el valor de nSequence también debe estar basado en bloques.

Colored Coins

Las colored coins son un método de identificación que permite representar y reconocer ciertos activos del mundo real en la blockchain de Bitcoin. Con la finalidad de evitar las manipulaciones y falsificaciones que estos activos puede sufrir aprovechan las propiedades y características que ofrece la tecnología blockchain para su protección y resguardo.

Aunque actualmente ha perdido mucha popularidad con el nacimiento de Ethereum y los tokens ERC-20, este tipo de transacciones que se crea  en la blockchain de Bitcoin son marcadas de tal forma que se puedan distinguir entre el resto de transacciones que ocurren dentro de la blockchain de Bitcoin. Para lo cual se utiliza un valor de etiqueta en el campo nSequence de la primera entrada de la transacción. Y aunque nSequence siempre está presente en las transacciones, en este caso no se utiliza como bloqueo sino como identificador, utilizando 6 de sus bits para formar y codificar el valor de etiqueta.

Canales de pago Decker-Wattenhofer

Los canales de pago dúplex se describen por primera vez en los documentos de Christian Decker y Roger Wattenhofer. Este tipo de canal de pago requiere el uso de nSequence. Como su nombre lo indica, un canal de pago dúplex se compone de dos canales de pago unidireccionales, uno en ambas direcciones.

Estos canales usan una estructura llamada “árbol de invalidación” de transacciones fuera de la cadena. Una propiedad entre la transacción de financiación y las transacciones de finalización del canal de pago. Las transacciones del árbol de invalidación también usan el tiempo de bloqueo relativo; la primera versión de la transacción tiene un tiempo de bloqueo relativo grande. Y la siguiente versión de la transacción (que invalida la primera) usa un tiempo de bloqueo relativo ligeramente menor, y así sucesivamente. También hay una transacción de “inicio” que inicia el tiempo de espera para el tiempo de bloqueo relativo.

La secuencia de transacciones es así:

Financiación -> Inicio -> Árbol de invalidación -> Canal de pago.

Gracias a esto, es posible crear canales de pago seguros con un funcionamiento parecido al ofrecido por Lightning Network, aunque técnicamente más complejos en su funcionamiento.