¿Qué es CLTV en Bitcoin?

Implementación de CLTV

Uno de los mayores y más importantes potenciales de la función CLTV es permitir la creación de canales de pagos y que éstos puedan implementarse de forma correcta. A través de los canales de pago se pueden crear micro-transacciones fuera de la blockchain. Todo ello sin necesidad de pagar tantas tarifas de comisión por cada una y sin colapsar la blockchain.

En los canales de pago, un usuario puede realizar una transacción a otro depositando una cierta cantidad de criptomonedas en una dirección multifirma (MultiSig). Ambos usuarios tendrán acceso a dicha dirección. Y  el usuario que realiza la transacción puede ir firmando pequeñas transacciones que serán realizadas al otro usuario a partir de esos fondos. Esto  hasta que obtenga el producto deseado. El restante de los fondos le serán devueltos a sí mismo en una transacción de retorno por cada micro-transacción que realice. Mientras que el comerciante podrá reclamar el pago final acumulado, que se habrá realizado sin colapsar la blockchain y por el que María pagó sólo una tarifa de comisión.

Ejemplo de cómo funciona CLTV

Si María desea ver un video, pero por él debe pagar 1 sat por segundo visualizado. A María no le conviene realizar estas transacciones de 1 sat por segundo a través de una transacción convencional en Bitcoin. Ya que para esto deberá pagar la tarifa de comisión por cada transacción que realice. Además debe esperar que dicha transacción se confirme en un bloque; lo que ocurre cada 10 min en Bitcoin.

Al ver que no es conveniente, María decide crear un canal de pago. En este canal hará un depósito en una dirección multifirma de 0.5 BTC, que equivale a 50.000.000 de satoshis. Tanto el comerciante como María tendrán acceso a la dirección multifirma. Entonces cuando María comienza a visualizar el video, ella firmará una transacción donde enviará 1 sat al comerciante por el primer segundo visualizado. Y 49.999.999 sats a una dirección de cambio de su pertenencia.

Este proceso se repetirá varias veces siempre y cuando María continúe viendo el video. Es decir, ella seguirá firmando micro-transacciones y pagando la cantidad de satoshis equivalente a los segundos que visualice del video, y depositando sus vueltas en una dirección de retorno. Si María sólo visualizó 2 segundos de video, entonces firmará una nueva transacción, pero esta vez de 2 sat para el comerciante y 49.999.998 sat para su dirección de retorno. Si visualizó sólo 3 segundos, firmará otra transacción, pero esta vez de 3 sat para el comerciante y 49.999.997 sat para su dirección de retorno.

Durante este proceso, el comerciante no reclamará ni firmará las transacciones de 1 sat o 2 sat recibidas. Sino que esperará a que María visualice todo lo que desee del video y reclamará el pago final. Es decir, la transacción más grande. El resto de transacciones realizadas al principio no serán firmadas ya que implicaría un doble gasto. Por lo que el comerciante debe optar por la transacción más grande que contiene todos los satoshis recibidos, en este ejemplo la transacción de 3 satoshis.

Además al final el comerciante firma sólo una transacción, ésta es la que será añadida en la blockchain y será la única por la que se deba cancelar la tarifa de comisión correspondiente a los mineros. Además, María puede implementar una transacción CLTV al inicio para garantizar la retornabilidad de sus fondos depositados en la dirección multifirma. Si establece un tiempo determinado para que ambos firmen la transacción y por cualquier motivo, uno o ninguno de los dos puede firmarla antes de ese tiempo. Así María puede recuperar su dinero. Ya que si no se firma la transacción antes de la condición establecida, María puede firmar la transacción y tener su dinero de vuelta luego de transcurrido el tiempo establecido.

Entonces, en resumen, el código OP_CHECKLOCKTIMEVERIFY ofrece una ventaja positiva para la implementación de contratos inteligentesEsto pues garantiza la integridad de los fondos hasta haber alcanzado la marca de tiempo o altura de bloque establecida. Al tiempo que evita las fallas del sistema por la maleabilidad de las transacciones.