Insights

Muchos lenguajes de programación de las criptomonedas

Por qué los stacks cripto utilizan C++, Go, Rust, Solidity, Haskell, Move y WASM — y cómo TRON combina Java-Tron con Solidity y un modelo de Energía/Ancho de banda.

Publicado Equipo de Netts 17 min de lectura

También disponible en: EnglishРусский中文ไทยFrançaisУкраїнськаTürkçeहिंदीفارسیالعربيةHausaPortuguêsTiếng Việt한국어日本語Bahasa IndonesiaDeutschTagalog

Muchos lenguajes de programación de las criptomonedas
Contenido
  1. Fundamentales: Lenguajes de los protocolos base
  2. El trilema y la filosofía del lenguaje
  3. La capa lógica: los contratos inteligentes y su jerga
  4. Verificación formal, o en busca de la perfección
  5. El auge de la programación orientada a recursos
  6. El futuro políglota: WebAssembly (WASM)
  7. Red TRON: Rendimiento y accesibilidad.
  8. Fuera del núcleo: Todo el stack cripto
  9. El elemento humano: habilidades y minuciosidad

La transferencia de valor digital ha sido uno de los cambios tecnológicos más transformadores del siglo XXI. Al igual que la revolución industrial exigió nuevos tipos de acero y maquinaria para construir rascacielos y vías férreas, la revolución blockchain ha exigido una reimaginación completa de los lenguajes mismos que utilizamos para transmitir información a las computadoras.

El campo del desarrollo de software se compara frecuentemente con un taller bien equipado, uno que rebosa de todo tipo de herramientas especializadas. Un artesano hábil no utiliza un mazo para tallar una escultura delicada ni un pequeño cincel para derribar paredes de ladrillo. Cada herramienta tiene su propia razón de ser: creada con esmero y perfeccionada para ese trabajo específico. Y el mundo virtual de los lenguajes de programación no es la excepción.

Y la razón por la que existen tantos lenguajes —desde el clásico C++, que se ha utilizado para construir desde sistemas operativos hasta motores de videojuegos, hasta el moderno Rust, que prioriza la seguridad— es que cada uno encarna una filosofía y una elección de compromisos entre rendimiento, seguridad y productividad del desarrollador. En ningún lugar es más cierto este principio de "usar la herramienta adecuada para el trabajo", o más desesperadamente necesario, que en el ámbito de las criptomonedas y la blockchain.

En este espacio, el código es literalmente la ley y un solo error tipográfico puede provocar que activos por valor de millones de dólares queden inaccesibles; la elección del lenguaje de programación no es un simple detalle de implementación, sino una decisión arquitectónica fundamental que determina todo, desde las características de seguridad y escalabilidad hasta si los sistemas construidos seguirán siendo viables en el futuro.

Fundamentales: Lenguajes de los protocolos base

En el corazón de cualquier criptomoneda se encuentra su protocolo: la premisa básica sobre la cual opera esa red, acuerda hacerlo y proporciona seguridad.

Estos protocolos son como las constituciones inmutables de las economías digitales, y los lenguajes capaces de escribirlos deben ser potentes y eficientes, manteniendo al mismo tiempo un control meticuloso y de bajo nivel sobre los recursos del ordenador. No es de extrañar que Bitcoin, el pionero de toda esta industria, esté escrito en C++.

Este es un lenguaje famoso por su computación ultrarrápida, la asignación manual de memoria y un ecosistema estable; elementos vitales cuando hasta la última gota de eficiencia cuenta en una red internacional que procesa transacciones día tras día, cada segundo. C++ fue elegido específicamente, no por accidente, lo que permitió a Satoshi Nakamoto hacer que el código se ejecutara de forma extremadamente rápida en los primeros nodos que disponían de poco hardware. Ofrecía un control granular sobre cómo se asignaba y liberaba la memoria, lo que evitaba fugas de memoria capaces de colapsar un nodo y fragmentar la red. Este legado perdura hoy en día.

Por su rendimiento y control directos, la mayoría de los grandes proyectos de blockchain siguen confiando en C++. Esto permitió que las primeras criptomonedas (como Litecoin) simplemente hicieran un fork del código base de Bitcoin, cambiaran algunos parámetros (tiempo de bloque, algoritmo de hashing) y estuvieran listas sin necesidad de reescribir toda la lógica. Las monedas de privacidad como Monero también hacen un uso significativo de C++ para soportar las complejas primitivas criptográficas necesarias para operaciones como las firmas de anillo y las direcciones ocultas, donde la velocidad es crucial para garantizar que la red no se detenga bajo altas cargas computacionales.

El trilema y la filosofía del lenguaje

A medida que la industria de la blockchain se desarrollaba y los desarrolladores luchaban con el llamado "Trilema de la Blockchain" —básicamente descentralización, seguridad y escalabilidad a un coste combinado—, comenzaron a asegurar fondos para sí mismos, pero también a construir lo que se conoció como modelos económicos basados en tokens.

La elección del lenguaje de programación también se convirtió en una palanca significativa en este equilibrio.

Ethereum y el riesgo de SPOF. El proyecto Ethereum era consciente de que un punto único de falla (SPOF) podría significar la ruina y, por lo tanto, abogó desde el principio por un escenario multicliente para mantener la descentralización como eje central. Esto implicaba que el protocolo Ethereum no sería una aplicación, sino más bien un estándar que podría implementarse en muchos lenguajes.

Su cliente más utilizado —Geth— está desarrollado en Go, un lenguaje diseñado por Google para software de tipo servidor potente y conectado a la red. Las primitivas de concurrencia ligeras de Go, llamadas gorutinas, lo hacen particularmente adecuado para gestionar las miles de conexiones de red simultáneas que un nodo de blockchain necesita mantener para propagar transacciones y bloques entre sus pares. Combine eso con una sintaxis sencilla y una excelente biblioteca estándar para obtener una mezcla realmente buena de rendimiento frente a facilidad para el desarrollador, lo que permite iterar rápidamente y atraer a una base de colaboradores más amplia.

Un segundo cliente de Ethereum de alto perfil fue (primero Parity, luego OpenEthereum), desarrollado a su vez en Rust. Rust, una creación de Mozilla, adopta una filosofía diferente. Pone un gran énfasis en la seguridad de la memoria, intentando descartar clases enteras de errores de programación en tiempo de compilación con un sistema inventivo propio (propiedad y préstamo o *ownership & borrowing*).

Mientras que C++ permite a los desarrolladores controlar manualmente la memoria (y la soga con la que pueden ahorcarse), y Go utiliza un recolector de basura para hacerlo de forma automática (con cierta penalización de rendimiento no especificada), Rust aprovecha reglas fundamentales muy literales durante el tiempo de compilación. Esto significa que una amplia gama de errores que detendrían —o permitirían a un adversario explotar— estos nodos, simplemente no pueden expresarse utilizando Rust válido.

Esta variedad de lenguajes para el mismo protocolo no es una debilidad; es una fortaleza inmensa. Si se descubre una vulnerabilidad en la implementación en Go de Ethereum, la red puede seguir funcionando con el cliente de Rust sin verse afectado, algo que no sería posible sin el soporte multilenguaje. Construir a este nivel requiere no solo habilidad con un lenguaje, sino una experiencia profunda y forjada con el tiempo en sistemas distribuidos, redes entre pares y criptografía avanzada.

La capa lógica: los contratos inteligentes y su jerga

Si el protocolo base es un sistema operativo, los contratos inteligentes son las aplicaciones revolucionarias que se ejecutan en él. Y son esos fragmentos de código autoejecutable, con los términos del acuerdo expresados directamente como líneas de código, los que desbloquean toda la promesa de la cadena de bloques para aplicaciones que van desde las finanzas descentralizadas (DeFi) hasta la identidad digital.

El lenguaje utilizado por la mayoría para escribir contratos inteligentes es Solidity. Fue creado para ejecutarse en la EVM y su sintaxis es, intencionadamente, muy similar a la de JavaScript, lo que no solo permitió que fuera bastante fácil de aprender para la comunidad de desarrolladores más grande del mundo (JavaScript), sino que también influyó en una gran parte del código ya escrito en otros lenguajes. Fue esta accesibilidad la que impulsó el impulso inicial hacia las aplicaciones descentralizadas y la rápida expansión del ecosistema de Ethereum. Solidity permitió a los desarrolladores pensar fundamentalmente en su código en términos de “contratos”, “mapeos” y “eventos”, todas ellas abstracciones que se correspondían perfectamente con un modelo mental de acuerdos financieros.

Sin embargo, la historia de Solidity es también una historia (como todas las historias de seguridad informática) de duras lecciones aprendidas.

Debido a la inmutabilidad de la cadena de bloques, los errores en un contrato inteligente también pueden tener consecuencias permanentes y graves, como se vio en casos como el hackeo de la DAO o la congelación del monedero multifirma de Parity.

Estos episodios sirvieron como recordatorio: aunque la sintaxis sea similar a la de JavaScript y resulte legible, existen complejidades peligrosas ocultas bajo la superficie. Como resultado, las cadenas de bloques más recientes han probado diferentes enfoques. Sistemas como Sovrin y Dfinity también se han inclinado por Rust, confiando en sus garantías en tiempo de compilación para reforzar la seguridad de sus contratos inteligentes. Rust tiene como objetivo prevenir las "condiciones de carrera" (data races) y otros tipos de comportamientos erróneos similares que suelen sufrir los sistemas de alto rendimiento.

Verificación formal, o en busca de la perfección

En una parte del ecosistema académicamente más avanzada y de alta seguridad, proyectos como Cardano y Tezos han adoptado un enfoque radicalmente distinto. Cardano tomó la decisión radical y contraintuitiva de basar su implementación principal en Haskell y su plataforma de contratos inteligentes (Plutus) como un dialecto de Haskell. Haskell es un lenguaje funcional puro con sólidas bases matemáticas.

Concibe la computación como la evaluación de funciones matemáticas y evita los "efectos secundarios": cambios en el estado del sistema que pueden no ser predecibles. Esto es lo que hace que Haskell sea tan adecuado para la verificación formal: un desarrollador puede demostrar matemáticamente que su código es correcto. En lugar de probar el código con un puñado de entradas potenciales, los desarrolladores pueden demostrar que el código funcionará correctamente para todas las entradas posibles.

Esa es la contrapartida: una que reduce considerablemente el grupo de desarrolladores y los hace menos experimentados, con el fin de ofrecer una seguridad y fiabilidad supuestamente inigualables para contratos financieros de alto valor.

Tezos: Se trata del lenguaje nativo de Tezos llamado Michelson, un lenguaje de bajo nivel basado en pilas diseñado para verificaciones formales, ya que cuando se gestionan millones de dólares, se desea tener una estimación de lo que hará el contrato.

El auge de la programación orientada a recursos

Más recientemente, ha comenzado a concretarse un nuevo paradigma en lenguajes como Move. Un proyecto de Meta (Facebook) del cual Aptos y Sui obtienen sus blockchains de alto rendimiento, Move fue diseñado específicamente para centrarse en los activos digitales. En Solidity, un token no es más que una entrada en un libro de contabilidad dentro de un contrato. En Move, se puede pensar en un token como un “recurso”, es decir, un tipo de estructura de datos especial que nunca puede ser copiada ni eliminada implícitamente, sino solo movida de una ubicación de almacenamiento a otra.

Este modelo evita errores comunes como el doble gasto y la quema de tokens en la capa del lenguaje mediante el uso de recursos. Cambia el modelo mental de “actualizar una base de datos” al de “mover objetos físicos”, que es más parecido a cómo entendemos el valor de forma innata. Con esta innovación, los contratos inteligentes seguros serían “lo predeterminado”, considerando al lenguaje en sí mismo como una barrera de protección contra algunas de las formas más comunes de exploits financieros.

El futuro políglota: WebAssembly (WASM)

Durante años, la EVM ha sido la campeona indiscutible, pero se acerca un nuevo contendiente: WebAssembly (WASM). Creado originalmente para ejecutar código de alto rendimiento en navegadores web, WASM está emergiendo como un estándar para contratos inteligentes en redes como Polkadot, Cosmos y Near. Esta es la belleza de WASM: ser un objetivo de compilación y no un lenguaje fuente.

Esto significa que los desarrolladores ahora pueden escribir contratos inteligentes en Rust, C++, AssemblyScript (un lenguaje similar a TypeScript) o, de hecho, en cualquier otro lenguaje que se compile a WASM. Esto rompe el monopolio de los lenguajes diseñados específicamente para blockchain y, en su lugar, permite a los desarrolladores utilizar sus herramientas, librerías y conocimientos profesionales en el sector cripto. Esboza una visión de un futuro políglota en el que las barreras de entrada se han reducido significativamente, y donde el éxito depende más de crear aplicaciones excelentes que de aprender una nueva sintaxis.

Red TRON: Rendimiento y accesibilidad.

En el vasto ecosistema de plataformas blockchain, TRON aspira a ofrecer un alto rendimiento y escalabilidad, además de convertirse en una plataforma descentralizada de entretenimiento e intercambio de contenidos que, en última instancia, beneficiará a los creadores sin necesidad de un intermediario centralizado. Las decisiones arquitectónicas de TRON derivan de estas aspiraciones y proporcionan un ejemplo interesante de ingeniería pragmática.

El cliente principal, Java-Tron, está programado en Java, el cual ha sido el caballo de batalla del panorama del software empresarial durante décadas. Esta fue una elección estratégica intencionada. Java está probado en entornos empresariales, es muy estable y opera sobre la increíblemente eficiente Máquina Virtual de Java ([JVM]), un monumento al diseño de software de sistemas que sustenta una red mundial.

Su función de optimización de compilación JIT integrada en la JVM garantiza que los nodos en la red TRON puedan mantener un alto rendimiento a lo largo del tiempo.

También fue una decisión que ayudó a TRON a aprovechar una enorme comunidad global de desarrolladores de Java y el rápido desarrollo de su infraestructura principal basada en la tecnología de consenso de Prueba de Participación Delegada (DPoS), diseñada para ofrecer velocidad y rendimiento.

Para su capa de contratos, TRON tomó otra decisión estratégica clave: utilizaron una máquina virtual compatible con la EVM de Ethereum. Lo que significaba que cualquier persona capaz de programar un contrato inteligente, ya fuera un «minnow» o una «whale» (esto me incluyó a mí durante mi fase de ERC-20), también podía escribirlos para la red Tron utilizando el lenguaje de contratos inteligentes Solidity.

Este tipo de intercompatibilidad ha sido un gran impulso para el crecimiento, permitiendo que las dApps y los desarrolladores existentes que han estado trabajando dentro del ecosistema de Ethereum migren o se expandan sin problemas a la red TRON. Si bien TRON ofrece soluciones para esos aspectos, interactuar con ella conlleva un modelo de recursos realmente interesante y complejo basado en la Energía y el Ancho de Banda.

El modelo de «gas» de Ethereum funciona como un modelo básico en el que se paga ETH por cada operación. El modelo de TRON no utiliza el cargo de gas y separa los recursos. El ancho de banda de la red se consume en los bytes de la transacción (el tamaño del cuerpo y de los datos), mientras que el Gas se utiliza para la potencia o tiempo de cómputo para procesar la lógica que incluye el contrato inteligente.

Si bien esto puede dar lugar a transacciones «gratuitas» cuando un usuario tiene suficiente TRX congelado, para las aplicaciones con altos volúmenes de transacciones —pensemos en un juego descentralizado popular, un algoritmo de trading de alto tráfico o incluso un servicio financiero con mucha actividad— el ciclo de demanda perpetua ejerce una enorme presión sobre las operaciones. Cualquier dApp que se quede sin Energía verá cómo sus acciones fallan, lo que resulta en una mala experiencia de usuario y en la pérdida de negocio.

Esto ha dado lugar a un mercado de nicho, pero importante, de servicios que se encargan de la automatización del alquiler de Energía en la red TRON. Los grandes poseedores pueden «congelar» su TRX para producir Energía que pueden prestar a otros usuarios. La automatización de este proceso es una necesidad para cualquier negocio serio en TRON. Garantiza que las aplicaciones funcionen de manera fluida, económica y sin interrupciones. Puede ahorrar hasta un 80% del coste frente a la quema directa de TRX para pagar comisiones al utilizar estas plataformas.

La automatización del alquiler de Energía convierte un aspecto del juego que sería una tarea diaria y pesada en algo no intrusivo que se ejecuta en segundo plano, ¡permitiendo que los desarrolladores se concentren en el código en lugar de en su saldo de recursos!

Fuera del núcleo: Todo el stack cripto

Una aplicación descentralizada de 2020 es más que solo su contrato inteligente on-chain. Es un stack de tecnologías que ejecutan su aplicación web en el lado del cliente de extremo a extremo. Lo que el usuario ve y con lo que interactúa, la llamada dApp frontend, se creará utilizando lenguajes de desarrollo web consolidados: JavaScript o TypeScript combinados con un framework basado en componentes como React, Vue.js o Svelte.

En el back-end, se necesitan una gran cantidad de servicios off-chain para lograr una aplicación robusta. Estos pueden ser indexadores de datos, similares a The Graph (que emplea un lenguaje de consulta llamado GraphQL), lo que permite que los datos complejos de la blockchain sean fácilmente consultables. Una blockchain es una base de datos pésima para recuperar información como "muéstrame todos los NFT de este usuario acuñados en 2023", por lo que los indexadores leen la cadena y organizan los datos en bases de datos convencionales.

Para esta capa, lenguajes como Go y Node.js son muy adecuados para servir estos datos en APIs escalables que alimentan a los frontends, ya que son excepcionales en el manejo de peticiones de red concurrentes. Python también es uno de los favoritos, especialmente para el análisis del movimiento de datos, como el scripting o el aprendizaje automático (machine learning), que pueden nutrirse de los datos de la blockchain.

Las amplias librerías de ciencia de datos en Python significan que los analistas on-chain que rastrean los movimientos de las "ballenas" o calculan el sentimiento del mercado cuentan con esa ventaja de jugar en casa.

Algunos proyectos, como Lisk, han ido un paso más allá con el enfoque en JavaScript al desarrollar un kit de desarrollo de software (SDK) completo que otorga a los desarrolladores el poder de crear sus propias blockchains personalizadas desde cero bajo JavaScript, proporcionando un enorme atajo para los desarrolladores que se lanzan a este espacio.

Esta visión full-stack también envía una señal: construir en el ecosistema cripto es multilingüe, donde se eligen diferentes herramientas para cada capa de la infraestructura (stack). Pero para aquellos que escriben los sistemas backend en la red TRON, contar con una forma sólida de alquilar Energía de manera programática no es solo una conveniencia; es un elemento de la misma categoría que la gestión de sus bases de datos y el enrutamiento de sus API.

El elemento humano: habilidades y minuciosidad

La asombrosa variedad de lenguajes de programación en la industria cripto refleja una realidad profunda: la tecnología es tan buena como quienes la crean. Construir una red segura, escalable y verdaderamente descentralizada es una tarea enorme. Requiere equipos de desarrollo con años, a veces décadas, de experiencia en estas áreas.

El lenguaje de un proyecto —ya sea C++ orientado al rendimiento, Rust enfocado en la seguridad, Haskell verificado formalmente o JavaScript amigable para el desarrollador— dice mucho sobre lo que el equipo más valora de la informática y cómo desea cambiar el mundo para mejor.

La naturaleza de código abierto de la mayoría de estos proyectos impulsa y conecta a las mentes más brillantes del mundo; es un ecosistema saludable donde compartir es innovar y el código es público para que cualquiera lo inspeccione, mientras se impulsa a toda la industria hacia adelante en conjunto. Los errores en un cliente de Go pueden servir de retroalimentación para el diseño de un cliente de Rust. Los avances en el modelo de recursos de Move pueden ser adoptados en el compilador de Solidity.

Es constante, es un aprendizaje colectivo.

Esta maraña de tecnologías y la implacable necesidad de optimización demuestran un requerimiento creciente de herramientas dedicadas que puedan dominar la complejidad de un ecosistema determinado. A medida que las redes se vuelven más especializadas, las herramientas que las rodean también deberán cambiar.

Para los desarrolladores y las DApps que operan en redes de vanguardia como TRON, el uso de sistemas uno a uno para sus recursos —como la Energía (TRX) y el Ancho de Banda— a menudo puede ser un factor disuasorio debido a la ineficiencia de costos y a la propensión a errores asociados con la gestión manual de recursos. Si se omite una renovación, las transacciones pueden fallar; si se realiza un pago excesivo de forma manual, se puede desperdiciar capital.

Y aquí es donde intervienen las plataformas profesionales, abstrayendo la necesidad de comprender y mantener dicha complejidad y ofreciendo la capa de “infraestructura como servicio” que la industria necesita para consolidarse.

Como ejemplo, Netts Workspace ofrece una suite completa de gestión de Energía en la red TRON: programación inteligente, optimización de costos en tiempo real y automatización delegada. Proporciona una API robusta y un panel de control completo para la gestión financiera y el análisis; simplifica la gestión de recursos para que los creadores y las empresas puedan concentrarse en desarrollar sus aplicaciones sin preocuparse por el mantenimiento de la infraestructura.

compartir X Telegram LinkedIn Reddit

Siguiente paso