Comenzar a programar en Solidity para crear smart contracts en Ethereum puede sonar como un reto bastante difícil. No obstante, en este articulo deseamos mostrarte qué simple es comenzar a desarrollar smart contracts ofreciéndote recursos y una breve entrada al planeta de la programación de este poderoso lenguaje. 

Como ya hemos citado, Solidity es el nombre de un lenguaje de programación de alto nivel, muy semejante al conocido JavaScript, utilizado para la programación Web. Este lenguaje es utilizado para programar smart contracts o bien contratos inteligentes para la blockchain de Ethereum, los que van a ser ejecutados por la EVM.

Más particularmente, Solidity es un lenguaje de alto nivel que nos deja programar sencillamente para EVM y que entonces puede ser compilado bytecode a fin de que por último se ejecuten en la Máquina Virtual Ethereum. Siendo un lenguaje de alto nivel, quiere decir que los desarrolladores cuentan con una herramienta fácil para programar. Eludiendo de esta manera la complejidad de programar utilizando OP_CODES o bien códigos de operación, o bien bytecode de manera directa, algo que sí ocurre en Bitcoin.

Como resultado, la creación de aplicaciones descentralizadas (DApps) resulta una labor considerablemente más fácil de efectuar, repasar y probar, quedando al alcance de cualquier persona con conocimientos básicos de programación.

Herramientas para empezar a programar en Solidity

Documentación y Libros sobre Solidity

Si tienes experiencia en programación, probablemente vas a saber la relevancia de contar con una buena documentación oficial sobre las posibilidades del lenguaje de programación que estás utilizando. Puesto que bien, esta premisa se cumple a conciencia con Solidity. Primeramente, la documentación oficial de Solidity es genial. En su web oficial puedes hallar toda la información técnica que precisas sobre las potencialidades y mejoras que presenta este lenguaje con cada nueva versión. Además de esto, el desarrollo y mejora al lenguaje es incesante probando que la comunidad busca prosperar y también incorporar nuevas funciones para hacer más fácil y seguro la programación de DApps.

Si lo que quieres es programar en Solidity y ya tienes conocimientos anteriores de programación y desarrollo en otros lenguajes, este es el primer sitio al que debes ir. Si al contrario, no tienes conocimientos en programación y desarrollo, primero vas a deber conocer las formas y operaciones básicas de los lenguajes de programación para entonces comenzar tu proceso de aprendizaje sobre Solidity.

Por otro lado, 2 de los libros más esenciales dedicados al desarrollo en Solidity son Solidity Programming Essentials de Ritesh Modi y Ethereum Smart Contract Development de Mayukh Mukhopadhyay. Los dos libros han sido editados por Packt y están concebidos para que interesados en el planeta de programación de Solidity pasen de ser principiantes a avanzados programadores en este lenguaje. Si deseas conocer todavía más sobre Ethereum entonces puedes complementar tu lectura con Mastering Ethereum escrito por Andreas Antonopoulos y Gavin Wood.

Si unes todos estos elementos de lectura entonces empezarás a entender realmente bien qué es Ethereum y de qué forma puedes utilizar Solidity de forma eficaz para programar tu primera DApp y quizás, con suerte, mudar el planeta a mejor.

Herramientas para programación y depuración

Ahora bien, conocer la parte teorética es solo un primer paso para empezar tu camino a programar en Solidity. Mas es un paso sin valor si no eres capaz de llevar ese conocimiento teorético a lo práctico.

Para hacer posible esto vas a deber contar con herramientas para programar y depurar lo que escribas en este lenguaje. En un caso así, los IDE o bien Ambiente Integrado de Desarrollo (Integrated Development Environment, en inglés), van a ser tu herramienta para conseguir esto.

Un IDE es un programa que cuenta de forma integrada con una serie de herramientas que van a hacer más fácil tu tarea de programar en un determinado lenguaje. Normalmente estos IDE poseen correctores de sintaxis, integración con librerías, localizadores de fallos y modos que te dejan probar tu aplicación ya antes de desplegarla de forma pública.

En el caso de Ethereum, existen 2 grandes IDE soportados oficialmente por la comunidad. El primero de ellos es Remix. Remix es un IDE web que podemos utilizar desde nuestro navegador y con el que vamos a poder programar y probar nuestras aplicaciones escritas en Solidity sin precisar instalar nada.

Otra herramienta muy utilizada en el planeta del desarrollo sobre Ethereum y Solidity es Truffle. En verdad, Truffle es por lejos la herramienta mejor integrada del planeta Ethereum para la programación en Solidity. Mas por otra parte, la cantidad de opciones de Truffle lo hace una herramienta compleja de utilizar, de manera especial, si estás empezando a aprender, con lo que solo es conveniente para personas con conocimientos más avanzados.

Del lado contrario está ETHFiddle, una fácil web que te deja ejecutar código escrito en Solidity y aprender a programar de la manera menos compleja posible. No obstante, si lo que buscas es crear tu entorno de programación utilizando alguna otra herramienta, asimismo puedes hacerlo.

Existen otros IDE y complementos que te dejan hacer esto. Por servirnos de un ejemplo, IntelliJ IDEA es un IDE para múltiples lenguajes de programación, pensado singularmente para programar en Java, mas que asimismo puede ser utilizado para programar utilizando Solidity. Otras herramientas de desarrollo como Atom o bien Visual Studio Code asimismo te dejan instalar complementos que habilitan la programación utilizando Solidity. En cualquiera de estos casos, vas a contar con todo lo preciso para poder armar tu código Solidity.

Herramientas de simulación

Otra herramienta vital para la programación es contar con acceso a la testnet de Ethereum. Esto es preciso en tanto que vas a deber poder probar tu aplicación en un ambiente muy afín al real, mas donde no te cueste dinero ninguna prueba o bien fallo.

Para ello puedes instalar un nodo de Ethereum y proseguirse los pasos de configuración para trabajar sobre ciertas testnet de Ethereum, o acceder a las redes testnet utilizando un deployer (desplegador) con dicha capacidad para el IDE que estés utilizando. El empleo de una red testnet te dejará poner tu DApp en un entorno muy similar al que podrías localizar en internet primordial de Ethereum, y comprobar con lo que exactamente la misma marcha correctamente en todo instante.

Sin embargo, una forma más fácil de conseguir esto es Ganache. Ganache es una herramienta que te deja simular un nodo completo de Ethereum sin los costos asociados de tener un nodo que sostiene todo una blockchain en tu PC. Merced a esto, Ganache es una herramienta considerablemente más fácil, veloz de utilizar y que consigue exactamente los mismos resultados. Además de esto, cuenta con una extensa integración con Truffle y es sencillamente integrable con otros IDE.

Herramientas de análisis de seguridad y monitoreo

Si bien la tecnología blockchain es segurísima, la seguridad es una cosa que requiere proactividad en todo instante. Por esa razón, la comunidad tras Ethereum y Solidity ha creado una serie de herramientas de análisis que asisten a prosperar enormemente la seguridad del código escrito para nuestros smart contracts eludiendo con esto que los bugs se nos escapen y acaben causando pérdidas a nuestros usuarios.

Herramientas como MythX, Mythril o bien Alethio son ciertas opciones más potentes en este sentido, permitiéndote potentes análisis de seguridad (para los casos de MythX y Mythril) y para la monitorización de tus smart contracts (en el caso de Alethio).

Otros recursos de aprendizaje

Por supuesto, esto es solo una pequeña una parte del cosmos de opciones que existen en la comunidad de Ethereum. En tal caso, una de las recopilaciones más completas de herramientas y recursos de aprendizaje para Ethereum y Solidity la puedes localizar en este repositorio de ConsenSys. Aquí vas a poder acceder a diferentes recursos de gran relevancia en la comunidad para aprender al límite como programar en Solidity y sacarle el mayor provecho a tus conocimientos en este lenguaje.

Pero ¿Y si en vez de solo nombrar herramientas te mostramos el potencial de Solidity en un fácil ejemplo? Puesto que bien, si te agrada la idea solo debes proseguir leyendo.

Nuestra primera experiencia con Solidity

Para nuestra primera de programación en Solidity usaremos Remix.

Nuestra elección de esta herramienta responde a que deja probar de forma sencillísima el código que escribimos, como nos ofrece salidas de depuración fácil y la sencillez de utilizar diferentes versiones de Solidity. En un caso así, la primera cosa que vas a deber hacer es ir a esta web y elegir el complemento “Solidity” con la intención de tener todas y cada una de las opciones de programación y depuración para este lenguaje.

Remix Config

Una vez que tengas activo el complemento “Solidity” vas a poder ver la próxima sección de información, y podemos proceder a crear nuestro primer programa en Solidity. Para esto debes ir al “File Explorer” y añadir un nuevo fichero al que vamos a llamar “HolaMundo.sol”.

Copy to Clipboard

Remix código

Muy bien ahora que tenemos nuestro código escrito en Remix, procedemos a compendiar y ejecutar exactamente el mismo. Eso lo podemos hacer llenado a la sección “Solidity Compiler”. En esta sección solo habremos de estar atentos a la versión de Solidity que usaremos para compendiar la que ha de estar entre los factores del pragma del smart contract. Esto es, debemos elegir cualquier versión de Solidity entre 0.5.0 y 0.7.0.  Hecho esto, nos va a bastar con presionar el botón “Compile HolaMundo.sol”.

Remix Compiler

Lo siguiente va a ser efectuar el despliegue del smart contract, lo que podemos hacer el dirigirnos a la sección “Deploy & Run”, en la que debemos hacer click en “Deploy”. Desplegar un contrato tiene un costo en Ethereum, en tanto que se emite una transacción real con la información. Sin embargo, al estar en una red depruebas, esos ether no van a tener costo real.

Remix Deploy

En contestación conseguiremos la próxima respuesta:

Remix Deploy OK

Finalmente vamos a poder ver que nuestra función get() se halla libre para interaccionar con ella. Si hacemos click sobre ella, interaccionamos y conseguiremos la salida aguardada (nuestro mensaje).

Remix función get

Para ver el mensaje completo, podemos hacer click en el botón “Debug” y de esta forma vamos a poder ver toda la salida. En tal salida, podemos ver el mensaje que hemos puesto en el contrato.

Remix Debug

Evita programar por programar

Es cierto que la mejor manera de aprender algo es haciéndolo. Y es esencial que programes, mas procura ponerle sentido a lo que haces. Conque busca hacerlo con una idea de proyecto en psique, con esto te hallarás ante situaciones reales que solucionar.

Para localizar buenas ideas es esencial empaparte de la cultura que rodea toda la tecnología blockchain. Una tecnología que ha sido creada para descentralizar todo lo descentralizable. Seguro que, a poco que pienses, hallarás situaciones donde unos pocos monopolizan el poder, toman resoluciones de forma unilateral y todo ello sin trasparencia.

Recuerda que la tecnología blockchain se ha creado para hacer un planeta más justo, democrático y transparente. Todo ello sin importar un mínimo que caiga quien deba caer por medio: gobiernos, reyes, religiones, corporaciones,… No tengas temor a plantar cara a lo que sea que estimes injusto.