cadena de bloques
Cuando hablamos de criptografía y blockchain, una de las primeras cosas que nos viene a la mente es la descentralización. Nos encanta la idea de un sistema que funcione sin ninguna autoridad central o un solo punto de falla. Pero resulta que la mayoría de las aplicaciones y billeteras criptográficas que conoce y usa dependen de proveedores centralizados para su backend stack.
Si bien las propias cadenas de bloques son elogiadas por la descentralización que crearon, y muchos protocolos se clasifican por su descentralización, la mayoría de las aplicaciones criptográficas que conoce y usa en realidad tienen que depender de proveedores centralizados. Estos servicios ejecutan sus propios nodos para conectarse a la cadena de bloques y, a su vez, proporcionan una API (interfaz de programación de aplicaciones) a sus clientes.
La cuestión es que no hay realmente ninguna buena razón para esto, aparte de las aplicaciones de billetera. A medida que las criptomonedas se acercan más que nunca a los consumidores y finalmente se expanden, incluso las empresas de comercio electrónico se dan cuenta de que su backend stack ahora necesita trabajar en estrecha colaboración con la cadena de bloques. ¿Necesita rastrear la cantidad de billeteras en Ethereum? ¿Necesita saber qué sucedió con una transacción específica? ¿Quieres saber qué direcciones han recibido dinero de una determinada dirección? Todas estas actividades pueden ser importantes, ya sea que tenga una tienda en línea o administre un fondo de inversión.
¿Por qué necesitamos proveedores centralizados?
La única forma en que puede conectarse directamente a la cadena de bloques es ejecutando un nodo. Un nodo es esencialmente un programa que se ejecuta en una computadora que se conecta a otros nodos para enviar información de un lado a otro, verificar la validez de las transacciones enviadas entre personas y almacenar información importante sobre el estado de la cadena de bloques.
Los nodos son la columna vertebral de una cadena de bloques. Son lo que lo conecta a la red y le brindan todos los datos que necesita para tomar decisiones informadas. Pero también hay muchos otros usos para los nodos además de solo extraer y validar transacciones. Los nodos son básicamente como servidores que ejecutan software de criptomonedas y almacenan una copia de la cadena de bloques. Son como su propia copia personal de toda la información en la cadena de bloques y le permiten interactuar con ella enviando o recibiendo transacciones e interactuando con contratos inteligentes o aplicaciones descentralizadas (dapps).
También puede usar un nodo como billetera personal si desea tener más control sobre sus fondos; esto se conoce como “nodo completo” porque almacena todas las transacciones de todas las cuentas en su disco duro, pero esto significa que necesita más espacio de almacenamiento que las billeteras normales.
No necesita ejecutar un nodo usted mismo si desea usar una de estas aplicaciones: ejecutan sus propios nodos y se conectan a través de ellos para enviar transacciones (u obtener información). Sin embargo, es posible (ya veces preferible) que los usuarios ejecuten sus propios nodos para que puedan interactuar directamente con la red en lugar de hacerlo a través de una aplicación o un sitio web.
Pero debe entenderse que nunca podrá ejecutar un nodo en su teléfono por múltiples razones, pero una de las claves es que las cadenas de bloques son demasiado grandes: solo Ethereum ocupa 746,19 Gb. Si quisiera ejecutar un nodo usted mismo, tendría que dedicar su computadora, y no hay forma de que pueda hacerlo a través de una extensión de navegador o una aplicación móvil. Pero necesita un nodo para obtener datos confiables en tiempo real de la cadena de bloques. La opción alternativa es simplemente usar el nodo de otra persona.
Cómo confiar en esos datos
La cadena de bloques tiene que ver con la falta de confianza. Por eso es tan atractivo. Y por qué puede estar seguro de que sus datos se almacenan en un libro público, y cualquiera puede verlos sin necesidad de confiar en ninguna entidad.
Pero seamos claros: si bien las cadenas de bloques no son confiables, no son completamente inmutables. Todavía dependen de empresas e individuos para proporcionar acceso al libro mayor, lo que significa que si alguien quiere manipular sus datos, podría haber formas de hacerlo. Dicho esto, existen algunos elementos disuasorios naturales contra la manipulación de los datos, y esos elementos disuasorios provienen de otras empresas que desean que sus clientes continúen utilizando sus servicios. Es probable que todos sus clientes abandonen rápidamente a cualquier empresa que intente manipular los datos, por lo que esa es una de las principales razones por las que no debemos preocuparnos de que nuestros datos se manipulen demasiado.
Cómo ejecutar su propio nodo
De hecho, puede ejecutar su propio nodo, como lo hacen muchos desarrolladores y aplicaciones. Si bien puede ser difícil, ciertamente es factible.
Cuando se trata de la red Ethereum, hay tres tipos de nodos: nodos completos, nodos ligeros y nodos de archivo. Los nodos completos almacenan toda la cadena de bloques para interpretar los datos y ofrecer capacidades de sincronización rápida. Los nodos de luz solo realizan un seguimiento de las partes de la cadena de bloques a las que se accede comúnmente; son útiles para billeteras pero no para dapps. Los nodos de archivo ni siquiera se molestan en mantener una copia de la cadena de bloques; son útiles para archivar información, pero no mucho más.
Echemos un vistazo más de cerca a los tipos de nodos:
- Un nodo completo es una computadora que realiza una determinada función en la red Ethereum y ejecuta el software del cliente para hacerlo. Los nodos completos descargan todos los bloques de la cadena de bloques y los almacenan en su disco duro. Esto permite a los usuarios verificar transacciones por su cuenta sin tener que confiar en otras partes involucradas en la confirmación de transacciones. También evita que los mineros alteren los bloques existentes, ya que se descargan directamente de otros mineros que ya los han descargado ellos mismos. Los nodos completos también pueden interactuar directamente con contratos inteligentes en la cadena de bloques pública, lo que les permite implementar contratos inteligentes en la cadena de bloques pública. Ejecutar un nodo completo es una forma importante de ayudar a fortalecer la red Ethereum. Sin embargo, esto tiene un costo. Los nodos completos pueden suponer una carga para el hardware y los recursos de ancho de banda de su equipo. La recuperación de datos completos también puede llevar mucho tiempo, a veces lleva varios días sincronizar sus datos cuando el nodo se implementa por primera vez. Luego, debe mantener, actualizar y mantener su nodo en línea para no tener que repetir el proceso de sincronización completo cada vez que se lanzan actualizaciones de software.
- Los nodos ligeros son un tipo de cliente de Ethereum que no descarga todos los bloques de la cadena de bloques. En cambio, solo descargan los que pertenecen al saldo de su propia cuenta. Esto significa que los clientes ligeros no necesitan mucho espacio en disco o ancho de banda, ya que solo necesitan realizar un seguimiento de las transacciones recientes que afectan el saldo de su propia cuenta en lugar de todo lo que ha sucedido alguna vez en la cadena de bloques. Lo más importante que hay que entender acerca de los clientes ligeros es que no son completamente infieles. Todavía usan un nodo completo como puerta de entrada a la red y, por lo tanto, deben confiar en que no les mienta ni los engañe de ninguna manera. Esto puede ser un problema para algunas personas que desean privacidad absoluta, pero para la mayoría de los usuarios está bien porque de todos modos no necesitan privacidad absoluta cuando usan una billetera Ethereum.
- Los nodos de archivo son otro tipo de nodo que almacena todos los datos de cada bloque creado y crea un archivo de estados históricos de blockchain. Los nodos de archivo conservarán los datos históricos incluso después de que un cliente haya terminado la sincronización, lo que los hace útiles para aplicaciones como exploradores de bloques o servicios de análisis de cadenas. En el caso de Ethereum, estos nodos se pueden ejecutar en cualquier máquina, pero generalmente se ejecutan en servidores con mucho espacio en disco. ¡Cuanto más almacenamiento tenga, más tiempo permanecerá accesible su archivo!
Aplicaciones que pueden ayudarlo a ejecutar su propio nodo
los Fundación Etéreo mantiene varios clientes diferentes para diferentes lenguajes de programación. Estos clientes pueden ser útiles para los desarrolladores porque les permiten interactuar con la red y otros nodos de la red utilizando varios lenguajes de programación. Los clientes más comunes de la Fundación incluyen Go, Rust, Java y C#. Varios desarrolladores externos también han creado clientes de Ethereum para una mayor compatibilidad con el idioma. Los usos más comunes para los clientes de Ethereum incluyen interfaces de transacción y minería, pero sus casos de uso pueden ir mucho más allá de las interacciones básicas de blockchain.
Puede elegir entre algunas aplicaciones diferentes si desea ejecutar su propio nodo. La lista incluye Geth, Mente abisal, Besu, Erigony OpenEthereum (que en realidad está en desuso).
- Geth es la implementación oficial de Go del protocolo Ethereum, lo que lo convierte en el cliente más popular del mercado. Tiene una gran base de usuarios y ofrece herramientas tanto para consumidores como para desarrolladores.
- Nethermind es una implementación de Ethereum escrita en el lenguaje de programación de pila tecnológica C# .NET que se ejecuta en todas las plataformas principales, incluidas BRAZO. El cliente Nethermind se puede utilizar para crear redes privadas de Ethereum o aplicaciones descentralizadas
- Erigon es una implementación de Ethereum completamente rediseñada que está escrita en Go. Sin embargo, los planes futuros exigen que se transfiera a otros idiomas. Este cliente puede completar una sincronización de nodo de archivo completo en menos de tres días con menos de 2 TB de espacio de almacenamiento, lo que lo hace extremadamente eficiente. Erigon ofrece varias funciones que lo convierten en una buena opción para configurar una aplicación de nodo. Es fácil de instalar, configurar y ejecutar, tiene una comunidad de desarrollo activa con actualizaciones frecuentes y correcciones de errores, y es compatible con múltiples sistemas operativos, incluidos Windows, Linux y MacOS.
- Besu es un cliente Ethereum basado en Java que admite casos de uso operativo, implementación y desarrollo de contratos inteligentes y dapp. También es de código abierto, por lo que puede usarlo para sus propios proyectos sin restricciones ni tarifas.
- El cliente OpenEthereum está escrito en Rust y tiene licencia GPLv3. Si bien ya no cuenta con soporte activo, todavía tiene muchas funciones y puede ser útil para los desarrolladores que desean personalizar sus propios productos o servicios con el soporte de Ethereum.
Los desarrolladores que usan Ethereum tienen opciones para implementar sus proyectos. Si su idioma preferido no es compatible con la Fundación Ethereum, puede usar uno de los clientes de terceros disponibles para proporcionar soporte de idioma adicional. Con cualquiera de estos clientes, aún debe actualizar regularmente los archivos binarios y pensar en escalar en caso de solicitudes complejas. Pero obtendrá todos los beneficios y la confianza en su propia solución.
Si es un investigador o simplemente una persona interesada en blockchain, le recomendamos que intente configurar y ejecutar su propio nodo. De esa manera, aprenderá más sobre él y podrá participar directamente en él.
Creación de aplicaciones en la parte superior
Construir una aplicación sobre una cadena de bloques puede ser una excelente manera de agregar valor a la red, pero no siempre es la mejor opción. Si está creando una aplicación que debe estar disponible públicamente, tiene más sentido confiar en una API estructurada proporcionada por un tercero que puede manejar el trabajo pesado.
La mayoría de las aplicaciones enfocadas en criptografía están construidas sobre la API proporcionada por operadores centralizados. En lugar de trabajar como administrador del sistema, puede concentrarse en crear aplicaciones de alto nivel aprovechando los datos de la cadena de bloques. Puede ser un bot simple que le envíe notificaciones sobre las transacciones y tan complejo como un sistema de pago que podrá recibir datos ultrarrápidos de la cadena de bloques y notificar a sus clientes sobre las transacciones completadas. Prácticamente todos los servicios analíticos y los fondos de cobertura utilizan nodos de terceros para extraer gigabytes de datos y crear estrategias de inversión, y estudiar el comportamiento de la cadena de bloques, diversas fluctuaciones y anomalías. Incluso en cripto cumplimiento y los procedimientos AML (anti-lavado de dinero) se vuelven necesarios e incluso esperados por la mayoría de los clientes y agencias gubernamentales
La tecnología Blockchain aún está en pañales y la industria apenas comienza a explorar su potencial. Pero una cosa es segura: los datos en blockchains serán un gran negocio. Hemos visto lo rápido que han crecido algunas de las cadenas de bloques más grandes y, al igual que la Web 2.0, necesitamos servicios centralizados para brindar experiencias de cliente perfectas para las empresas que recién comienzan a sumergirse en las criptomonedas. Al final, cualquier persona interesada aún podrá conectarse directamente con la cadena de bloques, pero nosotros, como industria, debemos ofrecer servicios centralizados que ayuden a estas empresas tradicionales a entregar datos a sus clientes: los desarrolladores construyen dapps sobre estas cadenas de bloques.
En otras palabras, no solo estamos hablando de crear aplicaciones sobre cadenas de bloques; estamos hablando de crear aplicaciones que puedan interactuar fácilmente con los sistemas existentes para que no haya barreras que impidan que las empresas adopten tecnologías de cadena de bloques y, al mismo tiempo, puedan brindar a sus clientes los mismos datos confiables que esperan de las soluciones de software empresarial tradicionales. Este Dia.