Los timelocks son una de las más practicas funcionalidades de Bitcoin, permitiéndole la capacidad de programar acciones conforme a una serie de factores y transformando de este modo al Bitcoin en algo mejor que el dinero, un dinero digital totalmente programable.

Una de las renovadoras funciones con las que cuenta Bitcoin es famosa como TimeLock. Esta es una herramienta que sirve para establecer y detallar ciertas condiciones bajo las que las transacciones van a poder ser validadas.

Un timelock o bien bloqueo de tiempo, es un género de contrato inteligente primitivo, que hace referencia a qué altura de bloque o bien tiempo concreto, una transacción particularmente va a poder ser incluida por los mineros en la blockchain. Con lo que funciona como una suerte de bloqueo absoluto o bien limitación al gasto de determinados bitcoins hasta el momento en que se cumplan dichas condiciones.

Se puede establecer un timelock basándonos en un tiempo real o bien a una altura de bloque concreta. De esta forma, cuando se alcance ese tiempo o bien esa altura del bloque definida en el timelock, los mineros van a poder incluir la transacción en el hash del árbol de Merkle, y incorporarla al último bloque de la blockchain. Y ahora es que la transacción va a poder ser confirmada.

Clasificación de los TimeLocks

Los timelocks fueron añadidos al software original de Bitcoin por su autor, Satoshi Nakamoto. Están presentes en todas y cada una de las transacciones si bien la mayor parte no utilicen esta función, con lo que el tiempo de bloqueo predeterminado es 0x00000000 (0) o 0xFFFFFFFF (cuatro mil doscientos noventa y cuatro millones novecientos sesenta y siete mil doscientos noventa y cinco). Sin embargo, para aquellas transacciones en las que sí se emplea el timelock, es esencial conocer que este cuenta con tres atributos esenciales. Que son: ubicación, orientación y métrica.

Ubicación

Como ya mentamos, los timelocks pueden encontrarse en las transacciones si bien no se emplee esta función. Y asimismo pueden estar incluidas en los scripts. Los dos son muy afines, mas desempeñan funciones totalmente diferentes.

En las transacciones, los timelocks hacen que esta no pueda ser ratificada hasta cumplir cierto tiempo o bien lograr una altura de bloque definida, si bien sus firmas digitales y scripts sí sean válidos. Al paso que los locktimes en los scripts, determinan si una secuencia de comandos es válida. Con lo que se pueden establecer condiciones en todas y cada una de las transacciones que gastan una salida.

A diferencia del bloqueo en las transacciones, que solo limitan esa transacción particularmente. De allá la relevancia de la localización de los timelock a fin de que estos puedan efectuar la operación pertinente.

Orientación

Existen los timelocks de tiempo absoluto o bien de tiempo relativo. El primero, nos deja acotar el bloqueo en concepto de un tiempo determinado. Con lo que podemos seleccionar el instante preciso en el que concluirá el bloqueo.

Mientras que el bloqueo de tiempo relativo, nos deja acotar una cierta cantidad de tiempo que debe trascurrir partiendo desde la confirmación de las salidas precedentes. Las dos opciones son sobremanera útiles para delimitar intervalos de tiempo precisos a fin de que una transacción pueda ser procesada por la red Bitcoin.

Métrica

En Bitcoin existe 2 formas de medir el tiempo: el número de bloque y la marca de tiempo. Con lo que podemos emplear los dos para establecer un timelock. Cuando se establece un timelock basándonos en un número de bloque, los mineros deben aguardar lograr dicho número de bloque. Esto para poder validar y confirmar la operación, y también incluirla en un nuevo bloque.

Por el contrario, cuando se establece el timelock basándonos en una marca de tiempo, los mineros aguardan a que transcurra el tiempo establecido en segundos. Esto es, que se alcance un instante determinado para hacer la validación de la transacción. Esto se mide con la marca de tiempo Unix.

Qué son los TimeLock – Juan en Cripto

Juan en Cripto, nos explica de forma sencillísima y educativa que son los timelocks y su relevancia en Bitcoin.

Tipos de Bloqueos

En la actualidad, Bitcoin cuenta por el momento con cuatro formas de establecer bloqueos o bien timelocks. 2 de estas herramientas son a nivel de transacción y las otras 2 son a nivel de scripts. Veamos cada una de ellas.

1. nLockTime

Este es un bloqueo de tiempo absoluto a nivel de transacción. Es el único bloqueo de tiempo que estaba libre en la versión original de software de Bitcoin. Cuando los nodos no retransmitían ni minaban transacciones con nLockTime igual o bien mayor que la altura del bloque actual.

Por lo que las transacciones no eran ratificadas hasta tanto se alcanzara el bloque establecido. En estos bloqueos, el tiempo se expresa como números enteros de treinta y dos bits sin signos. Si el número es inferior a quinientos millones, se interpreta como una altura de bloque. Al contrario, si es superior a quinientos millones se toma como una marca de Tiempo Unix.

En la versión 0.1.6 de Bitcoin, la interpretación de nLockTime se ajustó para permitir asimismo el bloqueo basado en el tiempo. Entonces, desde el bloque treinta y mil uno, las limitaciones nLockTime se activaron como una regla que asimismo se aplicaba a la aceptación del bloque. Después, en el mes de julio de dos mil dieciseis, los bloqueos basados ​​en el tiempo se cambiaron para operar en el tiempo medio pasado en vez de la marca de tiempo del bloque.

Un nLockTime puede bloquear una transacción hasta por nueve mil quinientos años utilizando los números de bloques, y dos.106 años utilizando las marcas de tiempo. Y si bien hoy en día cada transacción contiene la función nLockTime, la mayor parte de las wallets la tienen preestablecida en 0. Esto quiere decir que las transacciones pueden ser ratificadas en cualquier bloque de la cadena.

2. nSequence

Este es un bloqueo de tiempo relativo a nivel de transacción. Estos bloqueos fueron introducidos en la soft fork del BIP 68 a mediado del año dos mil dieciseis. En él, los números de secuencia son empleados para establecer timelocks de tiempo relativo en el nivel de transacción. Esto deja que una entrada especifique el tiempo más temprano que se puede incorporar a un bloque. En función de cuánto tiempo hace que la salida gastada por esa entrada se incluyese en un bloque en la blockchain.

Al aplicar un nSequence se pueden establecer múltiples condiciones de tiempo diferentes en exactamente la misma transacción. De este modo, a fin de que la transacción sea válida, deben cumplirse todas y cada una de las condiciones. Y si esto no ocurre, toda la transacción va a ser rechazada.

A diferencia de los nLockTime, los nSequence solo usan dieciocho de los treinta y dos bits totales, con lo que quedan en reserva catorce bits para implementaciones futuras. Y de esos dieciocho bits en empleo, dieciseis bits son destinados para codificar el tiempo de bloqueo. Con lo que los bloqueos nSequence están limitados a sesenta y cinco.535 unidades en bloques, y a solo dieciocho horas en segundos.

3. CheckLockTimeVerify

También conocido por sus iniciales como CLTV, es un bloqueo de tiempo absoluto a nivel de script. Está detallado en el soft fork BIP 65 y se introdujo a la red a fines del año dos mil quince, por el desarrollador Peter Todd. Dicha propuesta abre la posibilidad de poder efectuar una transacción en la que se pueda precisar la data específica en la que se va a hacer eficaz (o sea, la data en la que el receptor va a poder hacer empleo de los fondos mandados).

Una de las funciones avanzadas que CTLV deja es la de mudar el factor de autentificación de una dirección multifirma. Por servirnos de un ejemplo, si se ha creado una dirección multifirma con un esquema dos de tres, CLTV puede mudar dicho factor bajo determinados criterios a un esquema 1 de tres. De esta forma, la persona puede recobrar los fondos ante ciertas condiciones anteriormente pactadas y que se definen en la transacción debido a la capacidad de ser Bitcoin dinero programable.

¿Cuánto sabes, criptonauta?

¿Los timelocks pueden ampliar la capacidad de programación y de peculiaridades de Bitcoin?

4.- CheckSquenceVerify

Es el bloqueo de tiempo relativo a nivel de script. Asimismo una parte del soft fork BIP 68, mas se describió en el BIP 112 y se agregó a mediados de dos mil dieciseis. El CSV da un tiempo de bloqueo relativo, como el CLTV da uno para el tiempo de bloqueo absoluto, con lo que son exageradamente muy afines. Sin embargo, en vez de contrastar el tiempo como lo hace el CLTV, el CSV verifica la pila superior con el campo de entrada.

Cuando tiene por nombre al código de operación CSV, va a hacer que la secuencia de comandos falle salvo que nSequence en la transacción indique que ha pasado una cantidad de tiempo de bloqueo relativa igual o bien mayor que el factor proporcionado al código de operación CSV. Esto garantiza que la transacción pueda incluirse en un bloque válido cuando el el bloqueo de tiempo basado en CSV haya expirado.

Con este código de operación se pueden bloquear las transacciones un máximo de sesenta y cinco.535 bloques, que equivalen más o menos a cuatrocientos cincuenta y cinco día. O bien un máximo de sesenta y cinco.535×512 segundos, que son más o menos trescientos ochenta y ocho días.