Publicado el 19/04/2023

Lenguajes de Programación para Blockchain - Guía Definitiva

imagen del blog

“¡Tutorial de Solidity!” “¡Aprende Solidity en 2 horas!” “¡Solidity de novato a experto!” Estos son los resultados que encuentras si buscas como aprender a desarrollar programas en la tecnología blockchain. Muchos comienzan su aventura como programadores de Smart Contracts o contratos inteligentes sin siquiera saber lo que son. Muchos otros, con más experiencia en desarrollo de código en la web tradicional, se preguntan “¿Dónde está Javascript?” “¿No puedo programar un contrato inteligente con Java?” “¿Y Python, el lenguaje más popular de los últimos años?”

Pues siento deciros que ni Solidity es el único lenguaje para crear contratos inteligentes, ni se usa Javascript o Python. Pero que no cunda el pánico. Si has hecho un curso de 40 horas sobre programación en Solidity no has tirado tu tiempo a la basura. Es más, te recomiendo que sigas profundizando aún más y aprendas todo lo que puedas. Pero si quieres llegar a ser un buen programador de Smart Contracts es necesario que conozcas los distintos lenguajes de programación que puedas utilizar. Al igual que un mecánico dispone de numerosas herramientas en el taller: cada una le servirá para un problema distinto. Y para los programadores experimentados, he de deciros que existen equivalentes de los lenguajes más populares. Así que quedaos para aprender las diferentes formas en las que podemos programar contratos inteligentes en la tecnología blockchain.

Qué son los Smart Contracts?

Los Smart contracts o contratos inteligentes son programas que quedan almacenados en la cadena de bloques. Para que la red sea compatible con estos programas es necesario que cuenten con una máquina virtual que sea capaz de ejecutarlos. Algunos ejemplos de estas redes son Ethereum Sharding, Polygon, Solana, Binance Smart Chain o Cardano. Una vez los contratos se encuentran desplegados en la red, los usuarios pueden ejecutarlos mediante una transacción. Así, estos programas o contratos disponen de las ventajas de la tecnología blockchain: transparencia, inmutabilidad, descentralización, etc. Estas ventajas tienen su doble cara: y es que, si no podemos modificar un programa, no podremos realizar actualizaciones de seguridad, por lo que es necesario un desarrollo muy cuidadoso para no dar lugar a vulnerabilidades. Otra desventaja es que, al encontrarse en redes públicas, la ejecución de estos programas conllevan un gasto computacional, medido en gas, que se traducirá en dinero. Por lo tanto, también es importante realizar una optimización del código para reducir el gasto de gas. Teniendo en cuenta estos parámetros, coste de gas y seguridad, vamos a conocer los principales lenguajes:

Lenguajes de programación en Blockchain Pública

Solidity

Como hemos dicho en la introducción, Solidity es el lenguaje de programación más extendido ya que fue el primero desarrollado por Ethereum. Solidity es un lenguaje orientado a objetos, con sintaxis muy similar a la de JavaScript. Al ser tan popular la comunidad es muy grande, por lo que es fácil encontrar documentación y foros en los que resolver tus dudas, además de las guías y tutoriales. Se puede usar en todas las redes que soporten la máquina virtual de Ethereum, y la curva de aprendizaje es muy suave, por lo que es sencillo hacerse con el lenguaje en poco tiempo. 

Por lo tanto, es el lenguaje perfecto para empezar y el que debes de dominar si quieres dedicarte al desarrollo de Smart Contracts, ya que la gran mayoría de proyectos en el ecosistema blockchain están desarrollados en Solidity.

Sin embargo, al ser un lenguaje tan reciente aún siguen surgiendo fallas en el código. Además, aún está en evolución, y hay tanta diferencia entre versiones que puede ser bastante complicado trasladar código entre versiones muy alejadas en el tiempo. Otra desventaja es que, al ser tan sencillo, en muchas ocasiones tenemos poco control en el código, lo que puede dar lugar a fallos de seguridad o tener un coste muy elevado en cuanto a gas

Vyper

Si Solidity era el Javascript de los contratos inteligentes, Vyper es el equivalente a Python. Con una sintaxis similar al lenguaje de programación más popular en el mundo tradicional actualmente, en el ecosistema blockchain es el segundo después de Solidity. Al igual que este, es compatible con las máquinas virtuales de Ethereum. 

Vyper es un lenguaje de programación más simple y seguro en comparación con Solidity. Se centra en la seguridad y es más fácil de entender para aquellos que tienen experiencia en Python. 

Sin embargo, esta seguridad y simplicidad en el código se consiguen a costa de prescindir de algunas funcionalidades, bibliotecas y herramientas que sí podemos encontrar en Solidity, lo cual es una desventaja para aplicaciones descentralizadas de mayor complejidad. 

Rust

Este lenguaje ha adquirido gran popularidad gracias al crecimiento de las redes de Solana y Polygon. Y es que este lenguaje, antes extendido principalmente entre la comunidad científica, es el que se utiliza para la programación en las redes de Solana y Polygon, las cuales no implementan la máquina virtual de Ethereum. Rust es muy similar a C/C++, por lo que podemos manejar la memoria de nuestro programa, permitiendo un código mucho más pulido en cuanto a seguridad y eficiencia. Pero esto conlleva que su desarrollo sea mucho más complicado y la curva de aprendizaje muy alta, por lo que no es nada recomendable para los principiantes.

Yul/Yul+

Con este lenguaje volvemos a la máquina virtual de Ethereum, pero desde un punto de vista diferente. Solidity y Vyper son lenguajes perfectos para aprender y desarrollar todo tipo de proyectos, sin embargo, habrá ocasiones en las que el coste del gas sea la principal restricción. Para estos casos es necesario que el lenguaje nos permite modificar todos los aspectos del código. Para ello existen los lenguajes de nivel intermedio y bajo, como son Yul y Yul+ respectivamente. Como ya podéis sospechar, se trata de lenguajes muy complicados, en los que hacer lo que en Solidity sería una línea de código, en Yul llegan a ser diez. Por lo tanto, únicamente recurrimos a él cuando sea estrictamente necesario.

Lenguajes de programación en Blockchain Privada

Los lenguajes mencionados hasta ahora son los más usados para las llamadas blockchain públicas: redes donde cualquiera puede acceder, como Bitcoin o Ethereum. Y es que hay otro tipo de red blockchain menos conocida pero muy extendida entre las empresas: las blockchain privadas. Este tipo de redes son administradas por una organización, las cuales son las que asumen los costes de la red y las que identifican y añaden a los participantes. Por lo tanto, en estas redes la seguridad y el coste de gas no serán tan importantes, ya que la seguridad no recae en los protocolos de consenso sino en la identidad de los participantes, y el coste en el administrador. Este tipo de redes no son tan conocidas debido a que su uso se limita a empresas u organizaciones que se benefician de las ventajas de la tecnología blockchain al implementarla en sus procesos, quedando oculto de cara al público. Al igual que en las blockchain públicas, podemos desarrollar contratos inteligentes, más comúnmente llamados chaincodes en este tipo de redes. Debido al carácter privado de las redes, cada una es completamente independiente de otra, por lo que en lugar de hablar de grandes redes como en las blockchain públicas, en el ecosistema privado es necesario tecnologías que permitan la creación de este tipo de redes. Actualmente hay diversos marcos tecnológicos que permiten la creación de redes blockchain privadas y aplicaciones descentralizadas para estas. Las más conocidas son Hyperledger Fabric, R3 Corda y Quorum. Si quieres saber más sobre este tipo de plataformas te recomendamos que te suscribas a la newsletter para leer el artículo que publicaremos sobre ese tema concreto donde podrás profundizar mucho más. Aquí nos centraremos en los lenguajes de programación ¡Vamos a ello!

Nodejs

Se trata de uno de los lenguajes más populares en los últimos años, debido a la proliferación de su padre, Javascript.  Javascript ha llegado a ser uno de los lenguajes más conocidos en los últimos años, ya que se utiliza para la ejecución de código en páginas web. Nodejs surgió a raíz de Javascript para ejecutar código en el lado del servidor. Se trata de un lenguaje rápido, eficaz y fácil de aprender, ya que tiene una sintaxis muy clara y podemos acudir a una gran cantidad de documentación.

Pero esta sencillez en el lenguaje se pierde en la gestión de las librerías necesarias y en la incoherencia entre versiones de Nodejs, haciendo muchas veces inutilizable el mismo código en distintas versiones. Aun así, este lenguaje es usado en la principal blockchain privada, Hyperledger Fabric 

Java

Este lenguaje es uno de los más extendidos y conocidos por los amantes de la programación. Creado como un lenguaje orientado a objetos, es muy potente ya que permite la creación de APIs, una ejecución paralela de los programas optimizando el proceso de ejecución y una gestión segura de los recursos. Además, es un lenguaje de uso general que puede ser utilizado en la mayoría de las plataformas. Por ello se utiliza para la creación de chaincodes en redes privadas como Corda o Hyperledger Fabric. 

Sin embargo, Java no permite una gestión de la memoria, lo que da lugar a que los programas consuman por lo general mucha más memoria y provocando un rendimiento más lento en comparación con otros lenguajes como C y C++.

Go

Desarrollado por Google, se trata de uno de los lenguajes más jóvenes de esta lista. Pero a pesar de su edad, ha tenido una rápida adopción entre los programadores debido a su sencillez sin dejar de lado la eficiencia y la seguridad, ya que además permite la gestión de memoria. Esta rápida adopción ha hecho que se esté convirtiendo en uno de los principales lenguajes para desarrollar chaincodes en Hyperledger Fabric.

Sin embargo, que no se trate de un lenguaje orientado a objetos y su poco tiempo en el mercado hace que la documentación y las librerías sean escasas, dificultando el aprendizaje.

C++

Otro lenguaje muy conocido por los programadores tradicionales es C++, el cual es uno de los más antiguos y ha servido de base para el desarrollo de muchos proyectos blockchain tales como Bitcoin o Litecoin. Se trata de un lenguaje con mucha potencia y velocidad que permite el escalado de grandes aplicaciones. 

Pero esta velocidad y rendimiento se consigue mediante un lenguaje dependiente muchas veces de la plataforma, cuya consecuencia es un aumento en la curva de aprendizaje de este lenguaje, así como la imposibilidad de tener un carácter multiplataforma. Aun así, es uno de los lenguajes más queridos y actualmente se puede usar para el desarrollo de contratos inteligentes en Ripple, el cual está desarrollado a su vez en este lenguaje.

Solidity

No podía faltar el lenguaje más usado para la creación de contratos inteligentes en blockchain pública. Y es que algunas redes privadas, como Quorum, hacen uso de la Ethereum Virtual Machine, por lo que para estas redes podemos seguir usando este lenguaje aunque sean de carácter privado. 

¿Con qué lenguaje de programación blockchain me quedo?

El mejor lenguaje de programación para blockchain pública actualmente sería Solidity porque aunque Vyper aporte un poco más de seguridad y simplicidad, Solidity también es muy seguro  y además te permitirá desarrollar Smart Contracts más completos (al disponer de más bibliotecas y herramientas) y que requieran un código de mayor complejidad. Además te será más fácil encontrar respuestas y soporte en foros de comunidad.

El mejor lenguaje por el que puedes introducirte en el mundo de la programación de Smart Contracts para este tipo de blockchain es Solidity. Este lenguaje ya no solo destaca por su sencillez a la hora de aprender y programar, y la gran cantidad de tutoriales y documentación que puedes encontrar sobre él, sino que Solidity ocupa casi toda la cuota de mercado en el desarrollo de contratos inteligentes y aplicaciones de web3. Por lo tanto, conocerlo y dominarlo será un requisito indispensable si quieres trabajar en proyectos de desarrollo en tecnología blockchain pública.

En resumen, la elección entre Vyper y Solidity depende de las necesidades específicas y complejidad de cada proyecto, pero a día de hoy seguimos 

En el ámbito privado, mas que centrarte en un lenguaje específico es más interesante especializarte en un marco tecnológico. En este caso la recomendación es Hyperledger Fabric, una de las más completas y extendidas, que como hemos visto permite la implementación de sus chaincodes con diversos lenguajes. Además, Hyperledger cuenta con sus propias formaciones y certificaciones si quieres ser todo un experto.

¿Entonces, por dónde empiezo a formarme en programación Blockchain?

Cualquiera puede empezar a buscar información en internet sobre tutoriales de como programar contratos inteligentes. Sin embargo, con tanta documentación y tipos de redes empezar este camino tú sólo puede ser muy difícil y frustrante. Así que, si tu objetivo es convertirte en un profesional de esta tecnología, una opción más interesante sería realizar una formación en la escuela EBIS Business Techschool. EBIS te formará en Solidity e Hyperledger Fabric, te proporcionará toda la información necesaria y te pondrá en contacto con profesionales del sector para que puedas comenzar tus andadas como desarrollador. Ingresa a la plataforma y mira los Másteres en Blockchain que hay , encontrarás el Máster en Desarrollo Blockchain 

Conclusión

En conclusión, los lenguajes de programación para aplicaciones blockchain desempeñan un papel fundamental en el desarrollo y la implementación de soluciones basadas en esta revolucionaria tecnología. A medida que el interés y la adopción de las aplicaciones blockchain continúan creciendo, es importante comprender los diferentes lenguajes disponibles y elegir el más adecuado según las necesidades del proyecto.Los lenguajes de programación como Solidity, Rust, Java, Python y JavaScript ofrecen diversas ventajas y características que los hacen idóneos para el desarrollo de contratos inteligentes, dApps y soluciones blockchain en general. Desde la seguridad y la facilidad de uso hasta el rendimiento y la interoperabilidad, cada lenguaje tiene sus propias fortalezas y debilidades.

Es esencial considerar los requisitos específicos del proyecto, así como la experiencia y familiaridad del equipo de desarrollo, al seleccionar el lenguaje de programación adecuado. La elección correcta puede determinar el éxito y la eficiencia de la aplicación blockchain, así como la capacidad de mantenerla y escalarla en el futuro.

A medida que la tecnología blockchain continúa evolucionando, es probable que veamos el surgimiento de nuevos lenguajes de programación y frameworks especializados en este campo. Además, la comunidad de desarrolladores está trabajando constantemente en mejorar la usabilidad y la eficiencia de los lenguajes existentes, lo que permitirá un desarrollo más rápido y robusto de aplicaciones blockchain.

Autor: Domingo Martinez Rodenas 

Desarrollador de software blockchain en Minsait.

Suscríbase a nuestra Newsletter