Tabla de Contenidos
ToggleLos métodos centralizados, hablando esencialmente de los bancos, tienen sus propios tiempos y procedimientos para el manejo del dinero, los cuales ya tienen controlados y reglamentados.
Por ello, antes de hacer una transacción, sabemos que tardará en transferirse un dinero de un banco a otro banco en horas o días.
Por supuesto, antes de desembolsar cualquier tipo de dinero, pasan nuestros datos por diferentes mecanismos, entidades y funcionarios del banco para saber si el dinero es real, es legal y nuestra cuenta se encuentra en orden. Sin nada de eso, no puede ser transferido.
Hasta aquí, todo correcto y lo sabemos muy bien. No obstante, es diferente para el mundo de las criptos, ya que son descentralizadas.
Por ello, existen los timelock que, si bien son muy similares a los procedimientos comunes, son distintos en su funcionamiento. Ponte cómodo, que hoy hablaremos de un tema un poco más técnico.
Timelock o, en español, “bloqueo de tiempo” es una cláusula o un contrato inteligente primitivo que sirve para establecer bajo qué condiciones las transacciones de una blockchain serán validadas. Fueron desarrollados por Satoshi Nakamoto y son aplicadas en las compras de bitcoin.
Su función es que las transacciones solo se procesen en un período ya establecido por nosotros, en donde ya deben estar resueltas ciertas condiciones previas.
Este proceso es como si, por ejemplo, tuvieras una tienda de ropa. Después de que un cliente llega y elige las prendas que comprará, comienzas a hacer una lista de chequeo de los aspectos que debes tener en cuenta para poder hacer que la compra sea efectiva, tales como que su dinero no sea falso, su carné de identidad sea real, su firma coincida con su DNI, entre otros.
Comúnmente, son utilizados en contratos hash, en los canales de pago que ocurren en un contrato inteligente y en tarifas de franqueo o de envío y existen dos maneras de que se agregue a una cadena de bloques:
Es un tipo de bloqueo de tiempo total que actúa en las transacciones. Fue el primero que se creó y el que estaba disponible en el software original de Bitcoin de Satoshi Nakamoto.
En él, se especifica la hora más temprana en tiempo UNIX -o milisegundos transcurridos desde la medianoche del 1 de enero de 1970, por lo que se trata cada día como si tuviera 86400 segundos- o la altura de bloque más baja en la que se puede agregar una transacción a un bloque válido. Si no transcurre este tiempo, no se puede aceptar un bloque.
Un ejemplo de esto, puede ser que decidamos enviarle un regalo a una persona que está en otro lado de España. Nosotros determinamos y pagamos para que, en 864000 segundos (10 días en tiempo UNIX), esté en la casa de la persona que nosotros queramos.
Antes, trabajaban con 32 bits sin signos, pero en la actualidad son más complejos y pueden llegar a bloquear una transacción por más de 9000 años con números de bloques o 2000 años si es con marcas de tiempo.
Este tipo de bloqueo es de tiempo parcial y se introdujo en 2016 en el soft fork BIP 68. Es un parámetro que se aplica a cada entrada de la transacción, ya que establece un tiempo más temprano o próximo para añadir a algunos de los bloques de la blockchain.
Parece lo mismo que un nLockTime, pero su distinción es que este tiempo más temprano o próximo, es mucho más corto que el de un nLocktime, dado que utilizan 18 de los 32 bits y están limitados a 65.535 unidades de bloques y solo a 18 horas (64.800 en segundos).
Siguiendo el ejemplo del envío de un paquete, con nSequence ya no podríamos enviar el regalo con tanto tiempo de anterioridad. En este caso, lo mandaríamos el día anterior.
A finales de 2015, en la soft fork BIP65, se redefinió el opcode NOP2 como el código de operación CheckLockTimeVerify (CLTV). Actúa a nivel del script y bloquea las salidas de la transacción para que no puedan gastarse antes de una hora/fecha determinada.
Tiene dos posibles funciones:
Hasta aquí, es entendible. Pero ¿cómo funciona si hay un nLocktime activo? El nLocktime lo que hace es agregar al bloque la transacción que estamos realizando.
Sin embargo, no se puede registrar en la blockchain la operación, sin que sea desembolsada, por lo que el tiempo del nLocktime, debe ser, primordialmente, después del CTLV para garantizar que el CTLV haya expirado y puede incluirse la transacción en un bloque válido.
También parte de la bifurcación blanda (soft fork) BIP68 y es el opcode CheckSequenceVerify el que proporciona un tiempo de bloqueo relativo.
La diferencia está en que, en vez de mirar el tiempo, bloquea las salidas de la transacción para que no se puedan gastar antes de que se haya minado un número determinado de bloques.
Este Timelock opera en el nivel de los scripts. Los CheckSequenceVerify pueden bloquear transacciones en un rango de más de 65.000 bloques. En medida temporal, estamos hablando de casi 460 días.
Referente a sus ventajas, es muy útil para evitar que atacantes accedan a tu patrimonio y para brindarle a Bitcoin nuevas capacidades de programación que permitan la construcción de nuevas características como Lightning Network.
Respecto a sus desventajas, por el time locked, es dinero que ni tú puedes tocar hasta una fecha o número de bloque específico. Además, es complejo, debido a que requiere conocer la programación para poder implementarlos.
Hasta aquí llegó nuestro recorrido. Si estás interesado en leer más artículos asociados con las novedades del universo de las criptos y sus conceptos básicos, puedes cliquear encima de las temáticas de abajo. Sabemos de que serán totalmente de utilidad para ti.
De momento, ¡nos leemos en un próximo artículo!