Escalabilidad del Blockchain - Sidechains y Payment Channels
Inicio
Artículos
Escalabilidad del Blockchain - Sidechains y Payment Channels

Escalabilidad del Blockchain - Sidechains y Payment Channels

Avanzado
Publicación: Feb 20, 2020Actualización: Feb 9, 2023
9m

Introducción

La escalabilidad se refiere de modo amplio a la capacidad de un sistema para crecer y así acomodar una demanda creciente. En computación, puedes impulsar el rendimiento de tu máquina actualizando el hardware para que sea capaz de ejecutar ciertas tareas de modo más rápido. Cuando hablamos de escalabilidad en blockchains, nos referimos a incrementar su capacidad de gestionar transacciones.
Protocolos como Bitcoin presentan múltiples fortalezas, pero la escalabilidad no es una de ellas. Si Bitcoin se ejecutara en una base de datos controlada de manera centralizada, resultaría relativamente fácil para el administrador incrementar la velocidad y tasa de transferencia. Pero las proposiciones de valor de Bitcoin (como por ejemplo la resistencia a la censura) requieren que muchos participantes sincronicen una copia de la blockchain.


El problema de escalabilidad de las blockchains

Ejecutar un nodo de Bitcoin es relativamente barato, e incluso dispositivos sencillos pueden hacerlo. Pero dado que miles de nodos deben mantenerse actualizados unos con otros, existen ciertas limitaciones en sus capacidades. 
El número máximo de transacciones que pueden ser procesadas on-chain está capado, para impedir que la base de datos alcance un tamaño difícil de manejar. Si creciera demasiado muy rápido, los nodos serían incapaces de seguir el ritmo. Además, si los bloques son demasiado grandes, no podrán ser propagados de forma rápida a través de la red.

Como resultado, nos encontramos con algo así como un cuello de botella. Una blockchain puede ser vista como un servicio de tren que parte con un intervalo determinado. Hay un número limitado de asientos en cada vagón, y para obtener un ticket, los viajeros deben pujar para así garantizarse un sitio. Si todo el mundo intenta subir al tren al mismo tiempo, el precio será alto. De manera similar, una red saturada de transacciones pendientes requerirá a los usuarios el pago de comisiones más elevadas si quieren que las suyas sean incluidas con puntualidad.

Una solución sería hacer los vagones más grandes. Lo que significaría disponer de más asientos, una mayor capacidad de transferencia y un precio de los tickets más barato. Pero no hay una garantía de que los asientos no se llenen como ya sucedió. Los vagones no pueden ser perpetuamente ampliados, del mismo modo que los bloques o el límite de gas de los bloques no puede escalar de manera infinita. Esta última opción hace que sea más caro para los nodos permanecer en la red, dado que necesitarán un hardware más costoso para mantenerse sincronizados.

El creador de Ethereum, Vitalik Buterin, acuñó el concepto "Trilema de la Escalabilidad" para describir el desafío a que deben hacer frente las blockchains. Teorizó que los protocolos deben alcanzar un compromiso entre escalabilidad, seguridad y descentralización. Estas propiedades chocan de alguna forma entre sí, por lo que centrándose demasiado en dos de ellas, la tercera tendrá un pobre desempeño.

Por dicho motivo, muchos consideran que la escalabilidad debe lograrse de manera off-chain, mientras que la seguridad y la descentralización deben ser máximas en la propia blockchain.


¿Qué son las soluciones de escalabilidad off-chain?

La escalabilidad off-chain se refiere a enfoques que permiten la ejecución de transacciones sin sobrecargar la blockchain. Protocolos que se conectan a la cadena y permiten a los usuarios enviar y recibir fondos, sin que las transacciones aparezcan en la cadena principal. Profundizaremos en dos de los avances más importantes en este frente: las sidechains (cadenas laterales) y los payment channels (canales de pago).


Una introducción a las sidechains

¿Qué es una sidechain?

Una sidechain es una blockchain aparte. Sin embargo, no es una plataforma independiente, ya que está anclada de algún modo a la cadena principal. Esta última y la sidechain son interoperables, lo que significa que los activos pueden circular libremente de una a otra.

Existen una serie de maneras para garantizar que los fondos puedan ser transferidos. En algunos casos, los activos se trasladan desde la cadena principal mediante depósito en una dirección (address) especial. En realidad los activos no se envían, sino que se dejan bloqueados en depósito en la citada dirección, y la cantidad correspondiente se emite en la sidechain. Una opción más directa (aunque centralizada) es hacer el envío a un custodio, que se encargará de intercambiar el depósito por fondos en la sidechain.


¿Cómo funciona una sidechain?

Pongamos por caso que nuestra amiga Alice tiene cinco bitcoins y desea cambiarlos por cinco unidades equivalentes en una sidechain de Bitcoin –a éstas cinco unidades las llamaremos sidecoins. La sidechain en cuestión utiliza un anclaje de dos direcciones, lo que significa que los usuarios pueden transferir sus activos de la cadena principal a la sidechain y viceversa.

No debemos olvidar que la sidechain es una blockchain aparte. Por ello, tendrá bloques, nodos y mecanismos de validación distintos. Para obtener sus sidecoins, Alice enviará sus cinco bitcoins a otra dirección. Esta dirección puede pertenecer a alguien que, una vez haya recibido los bitcoins, hará un depósito de cinco sidecoins en la dirección de Alice de la sidechain. Otra opción es que exista algún tipo de configuración que minimice la necesidad de confiar en un tercero y que deposite las sidecoins de manera automática después de que el software detecte un pago.



Alice ha convertido de esta forma sus monedas en sidecoins, pero siempre podrá revertir el proceso para reclamar sus bitcoins. Ahora que ha accedido a la sidechain, tendrá libertad para realizar transacciones en esta blockchain diferenciada. Podrá enviar sidecoins o recibirlas de otros, tal como haría en la cadena principal.

Por poner un ejemplo, podría pagarle a Bob una sidecoin por una sudadera con capucha de Binance. Y cuando desee volver a Bitcoin, podrá enviar las cuatro sidecoins que le quedan a una dirección especial. Una vez la transacción haya sido confirmada, cuatro bitcoins serán desbloqueados y enviados a una dirección que ella controle de la cadena principal.


¿Por qué se utilizan las sidechains?

Es posible que te preguntes qué sentido tiene esto. ¿Por qué Alice no se limita a usar la blockchain de Bitcoin?

La respuesta es que la sidechain puede ser capaz de hacer cosas que Bitcoin no puede hacer. Las blockchains son sistemas cuidadosamente diseñados de compensaciones. Si bien Bitcoin es la criptomoneda más segura y descentralizada, no es la mejor en términos de rendimiento. Si bien las transacciones de Bitcoin son más rápidas que los métodos convencionales, aún es relativamente lenta en comparación con otros sistemas blockchain. Los bloques se minan cada diez minutos, y las comisiones pueden crecer significativamente cuando la red está congestionada.

Es cierto que probablemente no sea necesario este nivel de seguridad para los pequeños pagos diarios. Si Alice está pagando un café, no va a esperar la confirmación de la transacción. Ella estaría retrasando la cola, y su bebida estaría fría para cuando se la entregaran.

Las sidechains no están sujetas a las mismas reglas. De hecho, ni siquiera necesitan usar Proof of Work para funcionar. Puede usar cualquier mecanismo de consenso, confiar en un único validador o ajustar cualquier número de parámetros. Puede agregar actualizaciones que no existen en la cadena principal, producir bloques más grandes y hacer cumplir asentamientos rápidos.

Curiosamente, las sidechains podrían incluso tener errores críticos sin afectar la cadena subyacente. Esto les permite ser utilizados como plataformas para la experimentación y para desplegar características que de otro modo requerirían el consenso de la mayoría de la red.

Siempre que los usuarios estén contentos con las compensaciones, las cadenas laterales podrían ser un paso integral hacia un escalado efectivo. No es necesario que los nodos de la cadena principal almacenen todas las transacciones de la sidechain. Alice podría ingresar a la sidechain con una sola transacción de Bitcoin, realizar cientos de transacciones de sidecoin y luego salir de la sidechain. En lo que respecta a la blockchain de Bitcoin, solo realizó dos: una para ingresar y otra para salir.

El plasma de Ethereum es similar, pero tiene algunas diferencias importantes. Lee más al respecto: ¿Qué es el plasma de Ethereum?


Una introducción a los canales de pago.

¿Qué es un canal de pago?

Los canales de pago tienen el mismo propósito que las sidechain en el frente de escalabilidad, pero son fundamentalmente muy diferentes. Al igual que las sidechain, empujan las transacciones fuera de la cadena principal para evitar que la blockchain se hinche. Sin embargo, a diferencia de las sidechains, no requieren una blockchain separada para funcionar.

Un canal de pago utiliza un contrato inteligente para permitir a los usuarios realizar transacciones sin publicar sus transacciones en la blockchain. Lo hace mediante el uso de un acuerdo forzado por software entre dos participantes.


¿Cómo funciona un canal de pago?

En modelos como la popular Lightning Network, dos partes primero depositarían monedas en una dirección que poseen conjuntamente. Esta es una dirección multisignature, una que requiere dos firmas para gastar los fondos. Entonces, si Alice y Bob crearon una dirección de este tipo, los fondos solo podrían retirarse con el consentimiento de ambos.

Supongamos que cada uno deposita 10 BTC en una dirección que ahora tiene 20 BTC. Sería fácil para ellos mantener un balance que comience diciendo que Alice y Bob tienen 10 BTC cada uno. Si Alice quisiera darle una moneda a Bob, podrían actualizarla para leer que Alice tiene 9 BTC, Bob tiene 11 BTC. No tendrían que publicar en la blockchain mientras continúan actualizando estos saldos.



Sin embargo, cuando llegue el momento, digamos que Alice tiene 5 BTC y Bob tiene 15 BTC. Luego, podrían crear una transacción que envíe estos saldos a direcciones propiedad de las partes, firmarla y transmitirla.

Alice y Bob podrían haber registrado diez, cien o mil transacciones en su hoja de balance. Pero en lo que respecta a la blockchain, solo han realizado dos operaciones en cadena: una para la transacción de financiación inicial y otra para reasignar los saldos cuando se realizan. Además de estos dos, todas las demás transacciones son gratuitas y casi instantáneas porque ocurren fuera de la cadena. No hay que pagar una comisión de minero ni esperar confirmaciones de bloque.

Por supuesto, el ejemplo discutido anteriormente requiere que ambas partes cooperen, lo cual no es una situación ideal para extraños. Sin embargo, se pueden usar mecanismos especiales para castigar cualquier intento de engaño, de modo que las partes puedan interactuar de manera segura entre sí sin confianza. 


Enrutamiento de pago

Evidentemente, los canales de pago son convenientes para dos partes que anticipan un alto volumen de transacciones. Pero se pone mejor. Se puede desarrollar una red de estos canales, lo que significa que Alice podría pagar una fiesta a la que no está directamente conectado. Si Bob tiene un canal abierto con Carol, Alice puede pagarle siempre que haya suficiente capacidad. Ella empujará los fondos al lado del canal de Bob, quien, a su vez, los empujará al de Carol. Si Carol está conectada con otro participante, Dan, se puede hacer lo mismo.

Dicha red evoluciona hacia una topología distribuida donde todos se conectan con múltiples pares. A menudo habrá múltiples rutas a un destino, y los usuarios podrán elegir la más efectiva.


En conclusión

Hemos discutido dos enfoques de escalabilidad que permiten realizar transacciones sin sobrecargar la blockchain subyacente. Tanto las sidechains como la tecnología de canales de pago aún no han madurado, pero los usuarios las aprovechan cada vez más y desean evitar las deficiencias de las transacciones de la capa base.

A medida que pasa el tiempo y más usuarios se unen a la red, es importante que se mantenga la descentralización. Esto solo se puede lograr imponiendo límites al crecimiento de la blockchain para que los nuevos nodos puedan unirse fácilmente. Los defensores de las soluciones de escalabilidad fuera de la cadena creen que, con el tiempo, la cadena principal solo se utilizará para liquidar transacciones de alto valor, o para conectar / desconectar sidechains y abrir / cerrar canales.