¿Qué son los Payments Channels?

Los Payments Channels o bien Canales de Pagos, son una tecnología desarrollada para permitir pagos instantáneos sin custodia entre 2 o bien más personas que emplean una criptomoneda. Esto con la intención de ofrecer una mejor experiencia de pago contando con una genial seguridad y comisiones bajísimas. 

Los canales de pagos o bien Payments Channels, son un medio desarrollado a fin de que los usuarios de criptomonedas puedan efectuar transacciones instantáneas y de bajo costo sin que estas repercutan de manera negativa en la blockchain

Esta necesidad viene motivada por las restricciones que tienen criptomonedas como Bitcoin, y la mayor parte de las criptomonedas del sistema, cuando en lo que se refiere a su escalabilidad en transacciones por segundo y el espacio total de la blockchain.  De esta forma, un canal de pagos deja que bastantes personas puedan efectuar gran cantidad de transacciones en segundo plano, mas en la blockchain primordial solo se contabilizan 2 transacciones.

Por supuesto, al abrir un canal de pago (o bien payment channel en inglés), los nodos deben bloquear las monedas de los usuarios a fin de que estas no se puedan emplear fuera del canal a lo largo de la vida útil del mismo. Esto tiene un enorme costo que hace poco atrayente sostener canales de pago abiertos. Mas por esta razón, los canales de pagos no dejan de ser una una forma muy eficaz de brindar una enorme escalabilidad a las criptomonedas.

En este punto probablemente te vas a preguntar ¿De qué manera marchan? ¿Son seguros? ¿Qué sistemas existen actualmente? Todas y cada una estas preguntas las responderemos ahora en este nuevo artículo de Bit2Me Academy.

Origen de los canales de pago en criptomonedas

La idea de los canales de pagos en criptomonedas no es nueva. Desde el principio del desarrollo de la tecnología esta idea estuvo allá presente. Satoshi Nakamoto la presentó como una posibilidad tecnológica aplicable a Bitcoin. Esto apoyado sobre los OP_CODES de Bitcoin Script que servían para sustituir  transacciones y supervisar su validación. Charlamos de los OP_CODES  nSequence y nLockTime, que dejaban a 2 o bien más partes actualizar reiteradamente el estado de una transacción no confirmada antes que se confirme.

El tosco sistema de Nakamoto dejaría crear transacciones que podrían contener múltiples entradas. Cada una de estas entradas sería firmada y verificada por el usuario y tenedor de los fondos descrito en tal entrada. De esta forma con cada nueva firma, el valor de nSequence cambia a un valor más alto, hasta el momento en que la cadena de firmas acaba con la confirmación de la transacción en un bloque. Y al tiempo, la transacción contiene una contabilidad interna con la que los usuarios están conformes. 

De esa forma, una sola transacción puede representar múltiples transacciones diferentes para diferentes usuarios.  El sistema asimismo deja la habilidad de que, en el caso de que no se esté conforme con los resultados, el usuario en cuestión evite la firma y con esto salga del sistema. En un caso así, los fondos están de nuevo bajo su control y puede seguir sin inconvenientes. 

Por otro lado, Nakamoto explicó que nLockTime puede ser utilizado en el comercio de alta frecuencia entre un conjunto de partes. Para conseguir esto, nLockTime dejaría continuar actualizando una determinada transacción en mempool, si hay un pacto unánime entre las partes. De esa forma, la transacción se actualizaría toda vez que ciertas partes desee participar en la transacción (que actúa como canal de pago). Cuando las partes estén conforme en cerrar el canal, las firmas de todos y cada uno de los participantes llegan y establecen el nLockTime final para la transacción, y aguardan a que se confirme. Con su confirmación el canal se cierra y todas y cada una de las operaciones descritas por las entradas y salidas se efectúan en una misma transacción.  

Sin embargo, las dos opciones son inseguras. Los valores nSequence y nLockTime podrían ser manipulados por un minero malicioso o bien aun un nodo malicioso. No obstante, la idea básica de los canales de pago había surgido, y tras esta empezaría una extensa investigación para desarrollar una mejor solución segura para todos. 

Payment Channels and Lightning Network – MIT OpenCourseWare

Comienza el desarrollo de los primeros canales de pago

Las ideas de Satoshi Nakamoto de manera rápida llamaron la atención de los desarrolladores de la comunidad, quienes pronto se hallaron con un inconveniente complejo de solucionar. ¿De qué manera hacer que múltiples personas pudiesen participar en un sistema de pago seguro, descentralizado, instantáneo y construido sobre el protocolo Bitcoin sin trastocarlo innecesariamente? Concebir una funcionalidad como esta es un tema complicado, mas más difícil es programarla, y si a eso le sumamos que dicha programación sea compatible sin romper nada de lo precedente es algo exageradamente complejo. Incluso con esto, velozmente brotaron 2 formas de hacer canales de pago y las explicamos ahora. 

Tipos de Payments Channels

Unidireccionales

El sistema de canales de pagos más fácil es el sistema de canales unidireccionales. En este sistema, el usuario A puede efectuar un pago B. Un nuevo usuario C puede unirse al canal, y efectuar un pago a D. Y de esa forma, la cadena de pagos en el canal puede continuar ampliándose. 

Esos pagos están bajo control y asegurados por transacciones del tipo multifirmas, con lo que a fin de que se efectúen, la partes implicadas deben firmar de forma conforme con los datos mostrados en las entradas y salidas de la transacción. Conforme el canal medra, las firmas del sistema asimismo medran y todos deben firmar a fin de que los fondos sean liberados. 

Adicionalmente, se aplica un nLockTime de cincuenta bloques, para eludir que los usuarios puedan utilizar el dinero de manera inmediata, sino al contrario, el dinero solo va a estar libre después de que cincuenta bloques hayan sido confirmados.  En este punto, puedes ver el nLockTime como un talón que solo es válido después de una determinada data, ante de esa data solo es un papel sin valor. El nLockTime puede ser ajustada de la manera en que de esta forma lo deseen las partes.  

De esta forma, todos y cada uno de los participantes pueden estar seguros de que el pago se ha efectuado, mas solo van a recibir el dinero después de que se cumplan las condiciones auxiliares de la negociación de ese pago. Entiéndase por poner un ejemplo, que A pago a B por reparar un PC, y B tiene más o menos quinientos minutos para arreglar dicho computador. De lo contrario, A puede todavía intervenir en la transacción, mudar su valor, y recobrar su dinero. 

Bidireccionales

Los canales de pagos bidireccionales, son realmente 2 canales unidireccionales trabajando juntos. Merced a esto, A y B pueden mandarse pagos de forma bidireccional, sin precisar cerrar un canal anterior y abrir otro canal nuevo para las operaciones de pago.  El funcionamiento básico se sostiene, con la excepción de que los canales bidireccionales, son idóneos para efectuar operaciones más activas entre 2 usuarios o bien entidades. 

¿Por qué razón se crearon los canales de pago o bien payments channels?

En Bitcoin las transacciones solo pueden ser confirmadas si estas son incluidas en un bloque en la blockchain. Un proceso que pasa cada diez minutos más o menos y en el que solo puede entrar 1 MB de información. Esto limita enormemente la cantidad de transacciones que pueden confirmarse en todos y cada bloque, siendo más o menos dos mil doscientos transacciones las que se confirman cada diez minutos. 

Pero ¿Y si hacemos trampa? ¿Y si incluimos muchas entradas y salidas en una transacción y las partes implicadas en esa transacción firman exactamente la misma para dar su aprobación? Con esto, por último la transacción es emitida a la red y ratificada, y de esta manera una transacción haría el equivalente de múltiples transacciones individuales. Una trampa muy sutil cierto, mas asimismo realmente útil y es exactamente lo que hace un canal de pago. Por lo menos en sus rasgos más básicos.  

De esta forma, los canales de pagos o bien payments channels se convierten en una solución de segunda capa que deja a los usuarios efectuar transacciones sin depender de forma directa del siguiente bloque a fin de que una transacción se considere completa. De esta manera, podemos efectuar transacciones instantáneas que entonces van a quedar grabadas unánimemente en la blockchain primordial, cuando el canal de pago se cierra. No se pierde nada, no se crean monedas de la nada, al final todo acaba en exactamente la misma contabilidad, y los números sencillamente cuadran.  

Allí está el motivo los payments channels o bien canales de pago se crearon. Es una herramienta idónea para flexibilizar el pago utilizando criptomonedas, y todo ello, sin trastocar los protocolos actuales. 

Ventajas y desventajas de los canales de pago

Ventajas

  1. Ofrecen la capacidad de efectuar pagos de forma instantánea entre las partes que participan en el canal de pago. Mas además de esto deja programar los pagos, y hacerlos más seguros bajo determinadas condiciones. 
  2. Puedes efectuar micropagos, aun mandar pocos satoshis.
  3. Permite rebajar las tarifas de transacciones, merced a que el pago de la tarifa de confirmación on-chain se efectúa entre todos y cada uno de los partícipe del canal.
  4. Habilita la capacidad de que los negocios puedan percibir pagos en criptomonedas dejando atrás los tiempos de confirmación on-chain, mas sin abandonar a la seguridad.
  5. Bajo las especificaciones de canales de pago actuales es realmente difícil (por no decir imposible) hurtar fondos. Esto es debido a que las implementaciones de canales de pago emplean el esquema de direcciones multifirmas, donde las acciones son solo llevadas a cabo si estas llevan las firmas de todos y cada uno de los participantes.  

Desventajas

  1. Existe un límiteen la cantidad de transacciones que podemos hacer con un payment channels. 
  2. Los fondos para gastar en un payment channels deben ponerse de antemano. Esto quiere decir que si el canal se queda sin dinero, va a ser preciso abrir otro nuevo para efectuar más operaciones. 
  3. Existen todavía ciertos inconvenientes de seguridad referentes a los canales de pago. Casos como vulnerabilidades en los códigos de los clientes del servicio y nodos para este género de sistema. O bien aun, vulnerabilidades de la propia estructura de funcionamiento, como el caso de los Ataque de Dilatación Temporal.  Esto son ciertos inconvenientes a solucionar ya antes de la masificación de estos sistemas. 

¿Cuánto sabes, criptonauta?

¿Los Payments Channels son una solución insegura para escalar criptomonedas?

Primeras implementaciones de Payments Channels

Ahora bien, las implementaciones de payments channels o bien canales de pago han evolucionado a lo largo de estos últimos años, y prosigue evolucionando. Acá vamos a nombrar ciertas propuestas y cuáles han sido sus logros más señalados.

BitcoinJ y sus payments channels

Los desarrolladores Mike Hearn y Matt Corallo añadieron soporte para canales de pagos en  BitcoinJ, el veintisiete de junio de dos mil trece. Con la implementación, BitcoinJ se transformó en la primera librería externa a Bitcoin Core capaz de aguantar este sistema seguramente. Bitcoin Core, podía utilizar sistema de pagos de este género, mas tal y como comentábamos al comienzo de esta página, era inseguro dado a que los mineros o bien nodos podrían manipular estos canales utilizando los medios existente (nLockTime y nSequence). 

BitcoinJ la primera librería externa en aguantar Payments Channels

BIP-sesenta y cinco, el nacimiento de CLTV

Bitcoin Core dio un enorme avance en la capacidad de crear payments channels con la activación OP_CHECKLOCKTIMEVERIFY o bien CLTV, un nuevo OP_CODE para Bitcoin.  

Gracias a este código es posible probar, que es imposible gastar una salida de transacción hasta algún instante en el futuro. Esto es posible merced a que CLTV deja incorporar una prueba capaz de de saber si se ha creado una firma válida para una transacción diferente que gaste una determinada salida. De advertirse ese caso, CLTV puede inutilizar la nueva transacción, eludiendo posibles esquemas de doble gasto.  

En pocas palabras, el BIP-sesenta y cinco deja crear un procedimiento de verificación de gasto de fondos que nLockTime es inútil de manejar, dejando la creación de canales bidireccionales seguros. 

HTLC

Los HTLC son otro desarrollo en pro de los canales de pago. Esencialmente, los HTLC marchan en la enrutación de pagos. O sea, dirigen los pagos de manera segura mediante múltiples canales de pago. De esta forma, HTLC evita uno de los inconvenientes de los canales de pago: el costo de abrir nuevos canales de pago. De esta forma HTLC es capaz de utilizar canales de pago siempre y en toda circunstancia abiertos y enrutar los pagos de todas y cada una de las personas entre esos pagos. El resultado, es una gran red de canales de pago abiertos prácticamente de manera permanente, listos para habilitar pagos bidireccionales dentro de ellos.  

Esta funcionalidad ha hecho que los HTLC sean parte integral del diseño de canales de pago más avanzados, como los usados por Lightning Network.

Lightning Network explorer nodes

Payments Channels en otras blockchains

Como vas a saber, Bitcoin no es la única blockchain de criptomonedas, y tampoco es la única en la que es capaz integrar protocolos de payments channels. Criptomonedas como Litecoin o bien Ethereum, asimismo son capaces de emplear este género de sistemas. Prácticamente toda criptomoneda con inconvenientes de escalabilidad ha buscado un procedimiento para valerse de los canales de pagos para escalar. La razón es sencilla: los canales de pagos son más fáciles de incorporar que una reescritura de los protocolos ya probados de esas blockchains. 

Por ejemplo en Litecoin podemos utilizar hoy Lightning Network, y en Ethereum podemos utilizar Raiden Network o bien Liquidity Network, si bien esta última utiliza un esquema de canales de pagos diferente. 

Como ves Blockchain no descansa, y la innovación ambiente a ello es muy frecuente. Los canales de pagos semeja que han venido para quedarse, y a pesar de estar en etapas incluso tempranas, apuntan a quedarse, en especial si deseamos ver a las criptomonedas de forma masiva en el mundo entero. 

bitcoin
Bitcoin (BTC) $ 65,588.00
ethereum
Ethereum (ETH) $ 4,270.07
binance-coin
Binance Coin (BNB) $ 488.30
cardano
Cardano (ADA) $ 2.26
tether
Tether (USDT) $ 1.00
solana
Solana (SOL) $ 190.43
xrp
XRP (XRP) $ 1.14
polkadot
Polkadot (DOT) $ 44.18
dogecoin
Dogecoin (DOGE) $ 0.253346
usd-coin
USD Coin (USDC) $ 1.00