Aspectos Técnicos de Bitcoin

¿Qué Es Un Canal De Pago? [Payments Channels]

Qué Es Un Canal De Pago

Un canal de Lightning es un canal de pago bidireccional, lo que implica que ambas personas pueden enviar y recibir pagos en ese canal.

Estos canales forman parte de a red Lightning y tienen una capacidad de bitcoins definida. La cual está dividida entre las dos partes, y los BTC se mueven de un lado al otro del canal mediante transacciones lightning.

Los canales de pago son una parte fundamental de la Lightning Network, ya que permiten enviar transacciones de manera rápida y a bajo coste.

Gracias a las transacciones de apertura y cierre, que es ejecutan en la cadena de bloques de Bitcoin, es que los canales de pagos permiten de manera segura resolver los problemas de escalabilidad de Bitcoin al ofrecer a ambas partes pagos sin confianza.

Tomando en cuenta la capacidad y el balance del canal, los usuarios los utilizan para realizar compromisos fuera de la cadena de bloques.

Todos los pagos que realizamos en un canal se efectúan fuera de la cadena, y no requieren la validación por parte de los nodos ni la comunicación con el resto de la red.

Esto implica que no hay costos relacionados con esas transacciones, más allá de los necesarios para abrir y cerrar el canal, ni tampoco limites al número de pagos que se pueden realizar entre los dos puntos intervinientes en él.

Finalmente, cuando se decide cerrar el canal, se transmite a la red de Bitcoin la última transacción conocida entre ambos, permitiendo así que el balance final sea el que se refleja en la blockchain de esta criptomoneda.

¿Cómo funciona un canal de pago?

El funcionamiento de un canal de pago a nivel técnico puede ser un poco complejo, pero aquí te vamos a contar como es que funciona a grandes rasgos para que comprendas lo importante e interesante de esta tecnología.

1. Apertura de un canal

Para abrir un canal bidireccional (existe otro tipo de canal, pero muy poco común) ambas partes deben ponerse de acuerdo en abrirlo mediante una transacción que se realiza en la cadena de bloques de Bitcoin.

Esta transacción de apertura determina cuantos bitcoins son depositados en el canal (capacidad). Donde lo más habitual es que los fondos los provee una sola de las partes. Aunque también existe la posibilidad de que ambas puedan aportar BTC para la capacidad del mismo (aunque todavía técnicamente es algo más difícil de implementar).

Supongamos que buscamos abrir un canal con nuestro amigo. Esto quizás porque siempre solemos enviarnos dinero, ya sea porque compartimos cenas o simplemente porque tenemos alguna actividad comercial en comun.

Por lo que decidimos abrir un canal bidireccional con él, así de esta forma podemos enviar fondos en BTC sin preocuparnos por pagar muchas comisiones.

Este tipo de canales son perfectos para realizar micropagos, aunque también podemos enviar BTC enteros si la capacidad del mismo lo permite.

Para abrir uno, solo basta con enviar los BTC a una dirección multi firma con la configuración 2 de 2 (supongamos 1 BTC). Esto es lo que se conoce como transacción de apertura. Los bitcoins de esta transacción únicamente pueden ser gastados si nuestro amigo y nosotros firmamos las transacciones siguientes cuando sea momento de actualizar el canal.

Además, también debemos crear un secreto (una cadena de número) e intercambiar la mitad entre ambas partes. Más adelante veremos para qué sirve.

Nosotros también tenemos que crear una transacción subsecuente a la transacción de apertura, la que se conoce como transacción de compromiso.

Esta transacción tiene la particularidad de que envía los BTC de vuelta a nuestra dirección luego de X tiempo, pero también tiene la posibilidad de enviar los BTC a nuestro amigo de manera inmediata.

La idea es que sirva como una especie de segura\o en caso de que alguna de las partes intente engañar a la otra.

La firmamos, y se la enviamos a nuestro amigo, pero en ningún momento la transmitimos a la red de Bitcoin. Es una transacción que solo nosotros dos conocemos.

Nuestro amigo también debe crear una transacción similar, pero invertida, como en un espejo, donde nos envía los BTC de nuevo a nuestra dirección de manera inmediata o se los envía a él luego de pasado X tiempo. La firma y nos la entrega.

Una vez intercambiado estas transacciones de compromiso y los secretos, ambos firman la transacción de apertura y la envían a la red de Bitcoin. Esperando que esta sea confirmada para oficialmente abrir el canal de pago.

En este punto, si nosotros intentemos cerrar el canal, podremos hacerlo firmando la transacción de compromiso que nuestro amigo nos entregó y enviándola a la red. Con el problema de que deberemos esperar el tiempo estipulado. Lo mismo puede hacer nuestro amigo.

Lo interesante es que si nuestro amigo lo hace para intentar obtener los BTC para él, nosotros podemos rápidamente transferir los bitcoins de esa transacción a otra dirección nuestra, ya que no tenemos en su transacción un límite de tiempo. Lo mismo ocurre con la transacción que nosotros tenemos.

2. Actualización de un canal de pago

Una vez abierto el canal, seguramente querremos enviar dinero a nuestro amigo. Esto lo hacemos actualizando el mismo para reflejar el nuevo balance.

Para conseguirlo, las dos partes deben realizar dos cosas.

Primero, ambos creamos dos nuevas transacciones de compromiso pero con el balance actualizado. Siguiendo el ejemplo, supongamos que le enviamos 0,5 BTC.

En este caso, debemos crear las transacciones en donde se refleja que cada uno tiene un balance de 0,5 BTC. Donde se encuentra firmadas por cada uno y con las restricciones temporales de las cuales ya hablamos antes.

Antes vimos que el secreto se intercambiaba, pero solo una mitad. Este es utilizado para reclamar de manera inmediata los fondos de la primera transacción de compromiso.

En este caso, a nosotros no nos conviene mucho esta nueva transacción, ya que tenemos solo 0,5 BTC, mientras que en la transacción de compromiso anterior teníamos 1 BTC.

Podríamos pensar en transmitir la que nos favorece a la red para recuperar el BTC y estafar a nuestro amigo. Sin embargo, al compartir las otras mitades del compromiso, mientras esperamos que se cumpla el tiempo que nos permite acceder a nuestro saldo, nuestro amigo puede usar las dos partes del secreto para reclamar y quedarse con nuestros BTC.

Esto funciona como un seguro para que ninguna de las partes intente engañar a la otra. Por eso intercambiamos las mitades antes de generar un compromiso nuevo, como muestra de buena fe.

Ten en cuenta que el secreto sirve para reclamar y penalizar la transacción del otro, no sirve para usarlo en la nuestra y conseguir el BTC completo inmediatamente.

Lo segundo es intercambiar las otras mitades de los secretos anteriores antes de intercambiar las nuevas transacciones y los nuevos secretos.

Finalmente, generamos las nuevas transacciones e intercambiamos las nuevas mitades de los secretos. Proceso que repetiremos cada vez que necesitamos enviar o recibir nuevos BTC y hasta que sea momento de cerrar el canal.

3. Cierre de un canal

Al ahora de cerrar el canal podemos hacerlo de dos formas también.

La primera consiste en hacerlo de común acuerdo. Primero intercambiamos las mitades de los secretos y creamos una nueva transacción sin límite de tiempo en donde los fondos actualizados son enviados a las direcciones que cada parte desee.

Este es el mejor escenario, ya que solo pagamos dos comisiones, la de apertura y cierre del canal.

Sin embargo, tenemos una segunda opción, que consiste cerrar el canal unilateralmente. En esta deberemos pagar tres transacciones, lo cual es poco conveniente para las partes, pero es un mecanismo necesario en caso de que alguno de los dos no quiera cooperar para cerrarlo por cualquier motivo.

Si intentamos enviar un compromiso antiguo, siempre existe la posibilidad de que la otra parte use el secreto para quedarse con todos los fondos.

Por lo que nuestro mejor plan es transmitir la última transacción. En ese caso, la otra parte puede reclamar los fondos correspondientes a su balance de manera inmediata, mientras nosotros deberemos esperar un tiempo X.

Este es el peor escenario, ya que vamos a buscar enviar esos fondos a una dirección en nuestro poder, lo que implica no solo validar la transacción de cierre, sino que es necesario crear una nueva que nos envíe el dinero a donde queramos.

Si lo cerramos de común acuerdo, podemos acordar a donde enviar específicamente los BTC, además de que no tenemos que esperar para que estén disponibles.

En algunos casos es necesario algo como esto. Ya sea porque la otra persona no quiere cerrar el canal por el motivo que sea, o porque no lo pueda hacer, en el caso de que haya fallecido o no tengo acceso a su monedero.

¿Para qué sirve un canal de pago?

Un canal de pago es el método más eficiente para intercambiar dinero entre dos personas. Dejando de lado el tiempo para confirmar la apertura del canal, todas las transacciones que realicemos serán gratuitas e inmediata entre ambas partes.

Incluso, si nuestro amigo tiene canales de pagos con otras personas, podemos usarlos de intermediario para enviar fondos a esas personas a cambio de una pequeña comisión.

Mientras que en Bitcoin debemos pagar las comisiones de la red por cada transacción realizada, aquí debemos pagar solo la de apertura y cierre, más algunas muy pequeñas por las realizadas en la red Lightning, que suelen ser de algunos pocos satoshis.

Una transacción en Lightning puede costar unos pocos centavos o hasta fracciones de este, por lo que mientras cada transacción en Bitcoin cuesta quizás $1, con lightning podemos hacer cientos o miles con $1.

El tiempo también es una ventaja de estos canales, ya que a pesar de ser un proceso complejo, todo es realizado por nuestro software que efectúa todos esos pasos en cuestión de milisegundos.

Casos de uso de un canal de pago de Lightning

Un caos de uso ideal para la tecnología son los micropagos. Supongamos que usamos un servicio similar a Netflix, pero en donde pagamos por minuto o segundos de visionado.

Sin un canal de pago, deberíamos crear una transacción en Bitcoin, que no solo congestionaría la red, sino también costaría más las comisiones que el valor que enviamos en sí.

Con un canal de pago solo bastaría pagar comisiones por abrirlo y cerrado, teniendo cero comisiones entre la empresa y nosotros. De esta forma podrían surgir servicios donde pagamos únicamente por el tiempo de uso, lo cual es mucho más eficiente para algunas personas que tienen que pagar todo el mes cuando solamente lo utilizan de manera esporádica.

Otros casos de usos son:

  • Recompensar a los usuarios por ciertas acciones, como escribir un artículo en un blog o dejar una review.
  • Contratar un servicio que se modifica con el tiempo, como un servidor que nos factura de acuerdo a la cantidad de visitantes que tenemos en un momento determinado.
  • Pagos por servicios digitales que no tienen un valor muy elevado.
  • Programas de referidos.
  • Donaciones pequeñas o regulares a caridades, proyectos o personas (como streamers).

Tipos de canales de pago

En el ejemplo, y prácticamente todo el artículo, hablamos de un tipo de canal, que es el más común y el que se suele utilizar la gran mayoría del tiempo. Pero también existe otro que es interesante porque es menos complejo y puede ser útil para ciertos casos de uso.

Unidireccional

Los canales unidireccionales son los más fáciles de implementar en la red de Lightning debido a que el dinero solo fluye en una dirección.

El caso más típico para estos canales es el de enviar dineros a los streamers. Con cada minuto que vemos le enviamos una cierta cantidad.

También es interesante para abrir un canal con un servicio como Disney+ o Amazon Prime, donde pagamos solamente por los minutos o contenido que vemos. De esta forma, podemos crear un canal con cierta cantidad de fondos y hacer uso del servicio hasta que se termine.

Esto es muy similar a una tarjeta prepago de telefonía móvil. Podemos controlar si queremos seguir enviándole fondos a la empresa para usar sus servicios o no, ya que si lo abrimos con 10 BTC, por ejemplo, podemos esperar a que se terminen o cerrarlo cuando ya no deseemos usarlo más.

Bidireccional

Este tipo de canal es el que hemos estado hablando prácticamente todo el artículo. Son más complejos que los primeros, pero ofrecen más beneficios que los primeros porque permiten que entre ambas partes puedan ser enviados y recibidos BTC.

Si volvemos al ejemplo con nuestro amigo, nosotros podemos enviarle 0,2 BTC una vez abierto el canal. Pero este también puede enviarnos fondos una vez que ha recibido de nuestra parte. De esta forma, podemos intercambiar valor todo el tiempo hasta que sea momento de cerrar el canal.

O al menos hasta que una de las partes se quede sin fondos. Como cuando nuestro amigo tenía 0 BTC.

Esto es perfecto para abrir con alguien con el que sabemos que vamos a intercambiar muchos fondos. Pero también para hacerlo con prácticamente cualquier persona, ya que nos abre la posibilidad de usar el canal para enviar y recibir de toda la red.

Supongamos que queremos abrir un canal con un cliente que nos pagara todos los meses. Es mejor uno bidireccional, ya que nos permitirá enviar y recibir dinero de otros canales que nuestro cliente posea, además de los canales de los canales de este, etc.

Si bien el flujo de fondos entre nuestro cliente y nosotros siempre será hacia un solo lado, podemos querer enviar dinero a una persona que tiene un canal con nuestro cliente y de esta forma el canal bidireccional cobra sentido.

Resumen

  • Los canales de pagos de Lightning Network son canales abiertos entre dos partes para enviar y recibir pagos fuera de la cadena de bloques de Bitcoin.
  • Estos tiene una capacidad y un balance determinado, donde se realizan pagos sin la necesidad de reflejarnos en la blockchain.
  • Los canales de pagos de Lightning conforman una gran red que permiten enviar y recibir BTC sin pagar muchas comisiones y deforma casi instantánea.

Acerca del autor

Criptotario

Me llamo Martin, soy ingeniero y apasionado de las inversiones y la tecnología. Me gusta mucho leer libros y todo aquello que me haga mejorar día a día.

Agrega un Comentario

Haz clic aquí para añadir un comentario