Solidity, es el lenguaje de programación que comenzó a hacer posible las DApps de Ethereum, al permitir a los desarrolladores una forma fácil de realizar complejas aplicaciones distribuidas que sacaran el máximo provecho a la EVM de Ethereum.

El nombre de Solidity hace referencia a un lenguaje de alto nivel de tipado estático con el que se pueden programar smart contracts para la red de Ethereum. Su sintaxis es muy similar a la de lengaujes muy conocidos como C++ o Javascript. Solidity fue creado con el propósito de permitir la escritura de smart contracts de forma sencilla para la red Ethereum. Se trata de un lenguaje diseñado para sacar el máximo provecho a la Ethereum Virtual Machine, permitiendo la creación y desarrollo de smart contracts que puedan ser ejecutados de forma óptima en la EVM.

Para ello el programador puede desarrollar sus aplicaciones en un lenguaje sencillo de utilizar, leer y mantener para que, al terminar, el motor de Solidity convierta ese código sencillo en el código máquina que la EVM entenderá, un código máquina prácticamente imposible de entender por una persona.

En esencia Solidity facilita el desarrollo de smart contracts sobre Ethereum y, aunque no es el único lenguaje, sí fue el primero, el más versátil y sobre el que más contratos inteligentes hay desarrollado.

Logo de Solidity

Solidity, un lenguaje Turing Complete

La principal característica de Solidity es que este lenguaje de programación es de tipo Turing Complete. Gracias a Solidity y a su relación con la EVM los desarrolladores pueden realizar programas que sean Turing Complete. Esto debido a que EVM posee la capacidad de ejecutar cualquier código que sea definido por un desarrollador dentro del marco de sus capacidades.

Esto representa una gran ventaja para la red Ethereum. Gracias a EVM y Solidity los desarrolladores pueden programar acciones que luego serán ejecutadas por la EVM de forma descentralizada en la red Ethereum. Pero esto también implica que se debe disponer de un mecanismo de protección para evitar su mal uso. Este mecanismo es conocido como Gas y sirve para evitar que el sistema pueda ser colapsado por la creación de bucles infinitos u otras acciones maliciosas. Este Gas funciona como el gasto computacional que conlleva procesar una transacción o un smart contract en la red.

El concepto se asemeja por ejemplo a lo ideado por Adam Back con su sistema para luchar contra el spam email, el HashCash.

Importancia y desarrollo de Solidity

Ethereum nació como una alternativa a la red Bitcoin. Su creador, Vitalik Buterin en su momento, propuso incorporar un lenguaje tipo Turing Complete a la red Bitcoin. Ya que consideraba que el lenguaje con el que fue desarrollado Bitcoin era insuficiente para la evolución de la red. Pero al no recibir ninguna respuesta por parte de los desarrolladores, Buterin decidió crear y desarrollar su propio proyecto: Ethereum.

Hoy en día, Bitcoin y Ethereum son las redes más valiosas, conocidas y empleadas por la comunidad de las criptomonedas. Ocupando el primer y segundo lugar respectivamente. No obstante, Bitcoin y Ethereum poseen grandes diferencias. Por ejemplo bitcoin la moneda de la red Bitcoin, fue creada como medio de pago y de resguardo de valor.  Mientras que Ethereum, fue desarrollada con la finalidad de ser mucho más flexible y programable permitiéndole evolucionar con nuevas capacidades en el tiempo.

Esto gracias a EVM y Solidity, las dos herramientas que permiten a los desarrolladores sacar el máximo provecho de Ethereum. Con Solidity, se facilita la tarea de desarrollar aplicaciones distribuidas (DApps) u otras funciones que hagan uso de los smart contracts.

El desarrollo de Ethereum comezó como una idea en la mente de Gavin Wood en 2014. La idea fue materializada por Christian Reitwiessner junto a un equipo de trabajo. El resultado de este trabajo llevó a Solidity. Desde entonces, el desarrollo de Solidity ha mantenido su evolución y en la actualidad se encuentra en la versión 0.5.14 del lenguaje.

Características

  1. Solidity es un tipo de lenguaje orientado a objetos (OO) como C++ y C#.
  2. Fue diseñado específicamente para desarrollar aplicaciones para la red Ethereum. Por lo que sólo corre en la blockchain Ethereum o derivadas compatibles.
  3. Una ventaja que posee este lenguaje es que el código fuente de los programas que son realizados con el mismo puede ser accedido públicamente desde la blockchain. Incluso estando en bytecode, es posible decompilarlo y obtener una muestra bastante clara del código fuente original.
  4. Solidity soporta la herencia y la herencia múltiple, dotándolo de una gran flexibilidad a la hora de programar elementos complejos.
  5. Este lenguaje también proporciona una serie de bibliotecas muy útiles que facilitan la programación de los smart contracts, haciendo que el  código sea reutilizable y más sencillo de mantener.

¿Cuánto sabes, criptonauta?

¿Solidity es el único lenguaje de programación disponible para Ethereum y su EVM?

¡FALSO!

Solidity no es el único lenguaje de programación disponible para Ethereum y su EVM. Existen otras opciones como LLL (Low-Level Language) o Vyper que también pueden ser usados para programar DApps en Ethereum.

Entornos de desarrollos disponibles

Como casi todo lenguaje de programación, Solidity puede explotar las ventajas de un entorno integrado de desarrollo o IDE. En Ethereum, el IDE oficial es conocido como Remix. Este facilita  a los desarrolladores la creación de smart contract, a la vez que permite tener acceso al estado y propiedades de los smart contract ya creados. Además cuenta con poderosas herramientas de corrección y análisis de codigo para ayudar a los desarrolladores a depurar sus programas.

Remix también puede ser ejecutado y usado de forma online a través de Firefox o Chrome o directamente en nuestro ordenador. Y aunque este es el IDE oficial de Ethereum, también existen otros entornos compatibles con el lenguaje Solidity. Por ejemplo, Ethereum Studio es un IDE especializado que proporciona acceso a un entorno completo de Ethereum a través de un intérprete de comando conocido como shell.

  • Visual Studio Code mostrando el plugin de Solidity
  • Remix IDE de Ethereum

Así mismo, nos encontramos a Plugin de Solidity para IntelliJ IDEA, otro IDE creado para el desarrollo de programas informáticos compatible con Solidity. Atom es una herramienta editable que ie se puede emplear para personalizar cualquier cosa. Podemos encontrar un paquete conocido como Etheratom que emplea la biblioteca web3.js para interactuar con un nodo de Ethereum.

Otro IDE que podemos encontrar es el Plugin Visual Studio, creado por Microsoft. Este permite la creación y desarrollo de smart contract a través de un compilador de Solidity. También permite la creación de aplicaciones para Microsoft y aplicaciones webs modernas y servicios en la nube que usen su servicio Azure.

¿Te resultó útil este artículo?
Puntuación media: 4
➜ ¡Comparte el conocimiento y promueve la revolución descentralizada!