¿Qué es un light client y por qué debería importarte?
Desarrollador Front-end @ Parity Technologies
Los light clients son elementos cruciales en los ecosistemas de blockchain. Ayudan a los usuarios a acceder e interactuar con una blockchain de forma segura y descentralizada sin tener que sincronizar toda la blockchain. En este artículo, explicaré en palabras sencillas qué es un light client, qué no es y de dónde viene.
Antes de hablar de lo que es un light client, empecemos por aclarar qué es un cliente. En informática, un cliente es una pieza de hardware o software que se conecta a un servidor. Un navegador de Internet, por ejemplo, es un cliente: se conecta al servidor de un sitio web para solicitar su contenido. En el contexto de una cadena de bloques, un cliente es un software que se conecta a otros clientes de forma P2P. Como todos estos clientes se comunican entre sí, forman una red en la que cada cliente es un nodo. Por este motivo, también se utiliza el término nodo en lugar de cliente.
En el caso de Ethereum, solía haber un solo tipo de nodo, ahora denominado nodo completo. Este software se encarga de verificar y transmitir las transacciones y los bloques en la red. Debido al “entorno sin confianza” de (la Internet abierta) y a la naturaleza de una cadena de bloques, cada nodo completo necesita descargar y verificar cada uno de los bloques y, por tanto, cada una de las transacciones de cada bloque.
Parity Ethereum y Geth, los dos clientes de Ethereum más populares, hoy en día, pueden funcionar en una PC portátil medianamente potente. Sin embargo, descargar y verificar toda la cadena de bloques requiere tiempo y recursos. Por ejemplo, para sincronizar completamente la cadena de bloques de Ethereum es necesario utilizar un SSD. Un disco duro convencional (HDD) no puede seguir el ritmo de las operaciones de entrada/salida necesarias por segundo.
Los casos de uso del Nodo Completo
Hoy en día, las organizaciones y los individuos manejan nodos completos porque lo necesitan para su negocio. Piensa en los mineros, los exploradores de bloques y los intercambios. Los usuarios individuales pueden querer ejecutar un nodo completo porque es la forma más segura de interactuar con la cadena de bloques. A una escala mucho menor, también podrían hacerlo por puro altruismo para ayudar a la red. Ejecutar un nodo completo las 24 horas del día requiere un buen nivel de conocimientos y recursos que la mayoría de los usuarios, comprensiblemente, no están dispuestos a invertir. Excepto para los mineros, no hay ningún incentivo incorporado para ejecutar un nodo completo a pesar de que esta pieza de infraestructura es crítica para la red.
Como resultado, la mayoría de los usuarios que interactúan con la cadena de bloques utilizarán, voluntariamente o no, una pieza de infraestructura centralizada. Los software de billeteras más populares dependen por defecto de un nodo alojado por un tercero. Estos clientes se conectan a un nodo remoto y confían completamente en sus respuestas de una manera no probada criptográficamente.
El aspecto positivo es, obviamente, la mejora de la experiencia del usuario, ya que los usuarios de estos monederos no necesitan ejecutar su propio nodo. Sin embargo, se ven obligados a confiar en un nodo de terceros. Metamask, MyEtherWallet y MyCrypto se conectan a un nodo remoto por defecto, pero siguen permitiendo a los usuarios conectarse a su propio nodo local si lo desean.
Este no es el caso de los monederos Jaxx o Exodus, que se conectan a un nodo remoto por defecto sin opción de conectarse al propio nodo local del usuario. Las apps de billeteras móviles no se mencionan aquí, ya que los teléfonos móviles no pueden ejecutar nodos completos.
Compañías como Infura se dedican a gestionar nodos completos y los ponen a disposición de quienes los necesitan, de forma gratuita. Abstraerse de la molestia de sincronizar un nodo completo permite a cualquier usuario acceder a la blockchain sin esfuerzo. Este tipo de soluciones ayudan a que Ethereum sea accesible a más usuarios.
Sin embargo, aunque esta iniciativa ha sido un gran aporte al ecosistema, representa un punto único de fallo centralizado que es antitético a la filosofía de la cadena de bloques descentralizada. Hasta hace un par de meses, los desarrolladores de wallets no tenían otra opción.
“Nuestro objetivo es crear un protocolo que sea compatible con distintos grados de “ligereza”, desde los clientes que no almacenan casi nada hasta los que lo almacenan casi todo.” — PIP, Parity Light Protocol
La alternativa de peso ligero: Light Clients.
Un light client o nodo light es una pieza de software que se conecta a los nodos completos para interactuar con la cadena de bloques. A diferencia de sus homólogos de los nodos completos, los nodos light no necesitan funcionar 24 horas al día, 7 días a la semana, ni leer o escribir mucha información en la cadena de bloques. De hecho, los light clients no interactúan directamente con la cadena de bloques, sino que utilizan los nodos completos como intermediarios. Los light clients dependen de los nodos completos para muchas operaciones, desde solicitar las últimas cabeceras hasta pedir el saldo de una cuenta.
La forma en que están diseñados los protocolos de los light clients, les permite interactuar con los nodos completos en un modo de confianza-minimizada. Este es un aspecto crucial que hay que entender, así que vamos a dar un paso atrás para revisar los fundamentos de la blockchain de Ethereum:
- Los usuarios habituales envían transacciones en la red utilizando nodos completos, nodos ligeros o nodos remotos de confianza.
- Los nodos completos reciben transacciones de sus pares en la red, comprueban la validez de estas transacciones y las difunden a la red.
- Los mineros son nodos completos conectados a un software específico. Reciben y verifican las transacciones de la red como un nodo completo normal, pero además invierten mucha energía en encontrar la solución a un problema para poder crear el siguiente bloque.
Los nodos completos utilizados por los mineros logran un consenso sobre qué bloque debe añadirse a la cadena de bloques y construirse sobre ella. Cualquier bloque que tenga al menos 10 bloques construidos encima se considera seguro en el sentido de que las transacciones que contiene tienen una probabilidad muy baja de ser revertidas.
Ahora, volvamos a nuestros light clients. Como punto de partida, un light client necesita descargar las cabeceras de los bloques de la cadena de bloques. El light client no necesita confiar en el nodo completo para cada solicitud que haga al nodo completo. Esto se debe a que las cabeceras de los bloques contienen una información llamada raíz del árbol de Merkle. La raíz del árbol de Merkle, también conocido como Hash, es como una huella digital de toda la información de la cadena de bloques sobre los saldos de las cuentas y el almacenamiento de los contratos inteligentes. Si cualquier pequeña información cambia, esta huella digital también cambiará.
Asumiendo que la mayoría de los mineros son honestos, se supone que las cabeceras de los bloques y, por tanto, las huellas digitales que contienen son válidas. Un light client puede necesitar solicitar información a los nodos completos, como el saldo de una cuenta específica. Conociendo las huellas digitales de cada bloque, un light client puede verificar si la respuesta dada por el nodo completo coincide con la huella digital que tiene. Esta es una poderosa herramienta para probar la autenticidad de la información sin conocerla de antemano.
Como los light clients necesitan enviar varias peticiones para realizar operaciones sencillas, el ancho de banda total de la red necesario es mayor que el de un nodo completo. Por otro lado, la cantidad de recursos y almacenamiento necesarios es bastante menor en magnitud a la de un nodo completo, al tiempo que se consigue un nivel de seguridad muy alto. Al requerir sólo unos 100 MB de almacenamiento y una baja potencia de cálculo, ¡un nodo light puede funcionar en un dispositivo móvil! Esto significa que un teléfono móvil puede acceder a la blockchain de forma descentralizada.
Como requiere una fracción de la información de un nodo completo, un nodo light puede sincronizarse con una blockchain mucho más rápido. Actualmente se tarda alrededor de una hora en sincronizar toda la blockchain de la mainnet de Ethereum con un light client, pero cualquier cosa que supere un par de segundos para que el nodo se sincronice sería demasiado para cualquier aplicación. Se han desarrollado soluciones para que los light clients se sincronicen con la parte superior de la blockchain rápidamente, aunque estas soluciones a menudo incluyen intercambios.
Actualmente, los clientes ligeros tienen un punto de control de la cadena de bloques de confianza integrado en su código. Gracias a ello, el cliente sólo necesita descargar las últimas cabeceras, lo que le permite lograr una sincronización en cuestión de segundos. Los usuarios de light clients confían en que los desarrolladores de los clientes integren un punto de control válido. Esta contrapartida se considera aceptable, ya que los usuarios ya tienen que confiar en los desarrolladores para la implementación del cliente. Para realizar una sincronización de forma rápida y descentralizada, Parity Technologies desarrolla actualmente una solución alternativa que permite a los light clients realizar una sincronización por deformación de forma similar a los nodos completos.
“En el futuro, los Light Clients están por todas partes.” – Marty McFly
Desafíos de los Light Clients
Los light clients son adecuados para los usos habituales, como el envío de algunas transacciones y la verificación del saldo de las cuentas. Las principales críticas que se hacen a los light clients son que éstos no ayudan directamente a la red. No verifican más información que la que necesitan para su propio propósito, no sirven ni retransmiten información de la red a otros pares, y utilizan recursos de los nodos completos sin dar nada a cambio.
En comparación con los nodos completos, los light clients proporcionan una experiencia de usuario final mucho mejor, al tiempo que permiten a los usuarios finales acceder a la blockchain de forma descentralizada y segura. La clave es encontrar una manera de incentivar a los individuos e instituciones para que ejecuten nodos completos, sirvan a los nodos light y castiguen a los nodos completos maliciosos que brindan datos malos. Una forma de hacer que los light clients sean sostenibles es hacer que realicen micropagos por cada solicitud realizada a los nodos completos.
En un futuro próximo, los light clients desempeñarán un papel importante en la fragmentación de Ethereum para permitir que los validadores sincronicen diferentes fragmentos rápidamente. Los light clients también podrían utilizarse para denunciar a los actores maliciosos (validadores o autoridades de plasma). La incentivación completa de los nodos por parte de los light clients es un área de investigación activa, ya que la incentivación es clave para la estabilidad del ecosistema.
Hay ideas prometedoras para permitir que los light clients se sincronicen rápidamente y evitar los inconvenientes mencionados. Una idea es permitir que los nodos completos proporcionen pruebas de conocimiento cero (por ejemplo, zk-STARK) de la última cabecera conocida. El light client podría entonces verificarlo y sincronizarse con la parte superior de la cadena sin conocimiento previo del estado de la cadena de bloques.
En definitiva, los light clients serán la columna vertebral de las aplicaciones descentralizadas a corto plazo, y esto es una muy buena noticia para un ecosistema descentralizado fácil de usar.