En el mundo de la informática, un "cliente" se refiere a cualquier tipo de software que se descarga en su computadora y le ayuda a interactuar con otro tipo de software o servicio proporcionado por un servidor. Por ejemplo, Gmail es un cliente de software que se conecta a un servidor de correo electrónico y permite a los usuarios enviar y recibir correos electrónicos.
Un cliente Ethereum es el software necesario para permitir que los nodos Ethereum lean bloques en la cadena de bloques Ethereum y en los contratos inteligentes basados en Ethereum. Un "nodo" es la pieza en ejecución del software cliente. Para ejecutar un nodo, primero debe descargar una aplicación cliente Ethereum .
¿Qué son los nodos de Ethereum ?
Un "nodo" es una computadora que realiza una determinada función en la red Ethereum y ejecuta un software de cliente para realizarla. Dependiendo de cuáles sean sus necesidades específicas, ya sea una aplicación descentralizada (dapp) o una billetera, existen tres tipos diferentes de nodos que cualquier cliente puede ejecutar: nodos completos, nodos ligeros y nodos de archivo. Cada nodo interpretará los datos de manera diferente y ofrecerá diferentes métodos de sincronización; esto se refiere a la rapidez con la que su nodo puede recuperar información actualizada para que su cliente la interprete.
- Los nodos completos están llenos de datos; almacenan y pueden distribuir todos los datos de blockchain de la red Ethereum . Un nodo completo participará adicionalmente en la validación de bloques (es decir, verificará todos los bloques y estados de la red).
Una ventaja de implementar un nodo completo es que puede interactuar directamente con cualquier contrato inteligente en la cadena de bloques pública. Los nodos completos también pueden implementar contratos inteligentes directamente en la cadena de bloques pública.
Sin embargo, el uso y almacenamiento completo de datos, así como la funcionalidad directa de contratos inteligentes, tienen un costo. Los nodos completos pueden ser una carga para el hardware y los recursos de ancho de banda de su computadora. La recuperación de datos completos también puede llevar mucho tiempo y, a veces, lleva varios días sincronizar los datos cuando se implementa el nodo por primera vez. Luego, el nodo debe mantenerse, actualizarse y mantenerse en línea para no tener que repetir el proceso de sincronización completo.
- Los nodos ligeros son similares al nodo completo pero manejan menos información. El nodo ligero almacena información de la cadena de encabezado (información básica almacenada en un bloque, como una marca de tiempo y el hash del bloque anterior), pero solo recibirá información adicional a Request. Pueden verificar la validez de los datos pero no participan plenamente en la validación del bloque. Los nodos ligeros casi siempre se implementan dentro de clientes remotos. Debido a que estos nodos no asumen procesos de escritura y almacenamiento de datos más intensivos, han demostrado ser útiles para dispositivos de baja capacidad como los teléfonos inteligentes.
- Los nodos de archivo son nodos que almacenan toda la información que hace un nodo completo y crean un archivo de estados históricos de blockchain. Los nodos de archivo conservarán datos históricos incluso después de que un cliente haya finalizado la sincronización. Los nodos completos y ligeros, por otro lado, "podarán" los datos históricos de la cadena de bloques, lo que significa que pueden reconstruir, pero no retener esta información.
Si bien los nodos de archivo pueden no ser útiles para el usuario promedio, han demostrado ser efectivos en la aplicación de exploradores de bloques, proveedores de billeteras y análisis de cadenas.
¿Qué es un cliente Ethereum ?
Los clientes pueden resultar útiles para los desarrolladores porque les permiten interactuar con la red y otros nodos de la red utilizando varios lenguajes de programación. La Fundación Ethereum mantiene varios clientes diferentes para diferentes lenguajes de programación, incluidos Go, Rust, Java y C#. Varios desarrolladores externos también han creado clientes Ethereum para brindar mayor soporte lingüístico.
Los usos más comunes de los clientes de Ethereum incluyen interfaces de transacciones y minería, pero sus casos de uso pueden ir mucho más allá de las interacciones básicas de blockchain.
La Fundación Ethereum mantiene los siguientes clientes:
- Mente abisal (C#, .NET) https://nethermind.io/client
Estos brindan a los desarrolladores opciones para implementar sus proyectos basados en Ethereum. Si su idioma preferido no es compatible oficialmente con la Fundación Ethereum , existen numerosos clientes Ethereum de terceros para brindar soporte de idioma adicional.
La razón por la que todos estos clientes diferentes son posibles es porque Ethereum está definido por una especificación formal (es decir, el " Libro Amarillo "). Las especificaciones formales que componen Ethereum distinguen a la cadena de bloques de Bitcoin. Mientras que Ethereum define comportamientos estándar que deben seguir todos los clientes de Ethereum , Bitcoin Core no tiene tales definiciones. Al proporcionar documentación coherente y un lenguaje claro, las especificaciones de Ethereum permitieron que la cadena de bloques permitiera implementaciones de software independientes, pero interoperables, de un cliente Ethereum .
Tipos de cliente Ethereum
Cliente completo
Los clientes completos almacenan toda la cadena de bloques Ethereum ; un proceso que puede tardar varios días en sincronizarse y requiere una enorme cantidad de espacio en disco: más de 1 Terabyte para ser exactos, según las últimas cifras . Los clientes completos permiten que los nodos conectados realicen todas las tareas en la red, incluida la minería, la validación de transacciones y encabezados de bloques y la ejecución de contratos inteligentes.
Cliente ligero
Los clientes de Ethereum pueden implementarse total o parcialmente. La descripción general anterior brinda una explicación de cómo funciona un cliente "completo", sin embargo, es importante saber que no siempre es necesario ejecutar un cliente completo. Normalmente, cuando el almacenamiento de datos y la velocidad están en juego, los desarrolladores optarán por utilizar lo que se denomina "clientes ligeros".
Los clientes ligeros ofrecen un subconjunto de la funcionalidad de un cliente completo. Los clientes ligeros pueden proporcionar velocidades más rápidas y liberar disponibilidad de almacenamiento de datos porque, a diferencia de los clientes completos, no almacenan la cadena de bloques Ethereum completa.
El alcance de la funcionalidad de un cliente ligero se adapta a los objetivos del cliente Ethereum . Por ejemplo, los clientes ligeros se utilizan con frecuencia para claves privadas y gestión de direcciones de Ethereum dentro de una billetera. Además, tienden a manejar interacciones de contratos inteligentes y transmisiones de transacciones. Otros usos para clientes remotos incluyen instancias web3 dentro de objetos JavaScript, navegadores dapp y recuperación de datos de tipos de cambio.
Cliente remoto
Existe un tercer tipo de cliente llamado cliente remoto que es similar a un cliente ligero. La principal diferencia es que un cliente remoto no almacena su propia copia de la cadena de bloques, ni valida transacciones ni bloquea encabezados. En cambio, los clientes remotos dependen completamente de un cliente completo o liviano para brindarles acceso a la red blockchain de Ethereum . Este tipo de clientes se utilizan predominantemente como billetera para enviar y recibir transacciones.
La diferencia entre nodos y clientes.
Los nodos y los clientes trabajan ONE y ambos términos suelen usarse indistintamente. Sin embargo, ambos operan por separado para poder acceder a la red Ethereum .
Piense en los nodos y clientes que funcionan como una computadora que accede a Internet: el nodo es un sistema operativo, como Windows o iOS, y el cliente es la computadora misma. La computadora cliente le brinda al usuario la posibilidad de acceder al sistema operativo del nodo, que a su vez le brinda la posibilidad de acceder a Internet. Diferentes computadoras podrán darte acceso al mismo sistema operativo y los diferentes sistemas operativos te darán acceso al mismo Internet.
MetaMáscara
Para ver cómo funcionan los clientes de Ethereum en el mundo real, podemos mirar MetaMask como ejemplo. MetaMask es una billetera basada en navegador, un cliente de llamada a procedimiento remoto (RPC) y un explorador de contratos básico. Cualquier computadora con Chrome, Firefox, Opera o Brave Browser puede ejecutar MetaMask.
MetaMask es una implementación de un cliente remoto que interactúa con blockchain a través de un cliente ligero. Para evitar problemas de seguridad, MetaMask opera su propio cliente ligero para comunicarse con el cliente remoto a fin de garantizar una seguridad efectiva y certeza de las transacciones.
MetaMask se diferencia de otras carteras basadas en navegador porque aplica una instancia web3 en el lector de JavaScript de un navegador, proporcionando acceso a la red principal de Ethereum y también a otras redes de prueba, incluidas la red de prueba de Ropsten, la red de prueba de Kovan y la instancia local de un nodo RPC. Incluso con su funcionalidad única, MetaMask aún ejecuta un cliente remoto tal como lo hacen la mayoría de las otras billeteras de navegador. El cliente remoto permite la funcionalidad de almacenamiento de billetera, transmisión de transacciones e inyecciones de JavaScript web3.