Si habéis leído otros artículos de Conquer Blocks, o habéis visto algún vídeo de nuestro canal de youtube, ya sabréis que nos encanta Solidity.
Por esta razón, en este artículo vamos a explicarte qué es Soldity, para qué sirve y vamos a desgranar las características más importantes de este lenguaje.
¿Qué es Solidity? Un poco de historia
Solidity es un lenguaje de programación nació de la necesidad de tener un lenguaje de programación que permitiera desarrollar software sobre tecnología, para algo más que para realizar transacciones monetarias.
Hasta el nacimiento de Ethereum, que es la blockchain para la que se diseñó este lenguaje, sólo existía la blockchain de Bitcoin. Y muchas personas no lo saben, pero Bitcoin también tiene su propio lenguaje de programación: Bitcoin Script.
¿Cuál es el problema de este lenguaje? Pues que, a pesar de que cumple perfectamente su función porque es capaz de realizar todas las transacciones de valor que tienen lugar en la blockchain de Bitcoin, lo cierto es que es un lenguaje bastante limitado. Bitcoin script no es Turing completo, y esto básicamente lo que implica es que no es un lenguaje capaz de resolver problemas complejos.
Este es el contexto en el que nace Solidity: la necesidad de tener un lenguaje Turing completo que permita hacer desarrollos de software complejos sobre tecnología blockchain.
Así que, Solidity entonces es básicamente eso: un lenguaje de alto nivel, orientado a objetos (contratos inteligentes), y diseñado para ejecutarse en la máquina virtual de Ethereum (EVM).
Características de Solidity
- Solidity es un lenguaje orientado a contratos inteligentes (o smart contracts), aunque esto en concreto se explicará más detalladamente en el siguiente punto. Pero para tener una idea principal sobre lo que significa esto, hay que saber que los contratos tienen la capacidad de ejecutarse de forma autónoma en la blockchain cuando algún suceso tiene lugar. Este suceso puede ser una transacción de cualquier tipo: un intercambio de valor, una compra, etc.
- La sintaxis de Solidity es bastante sencilla, porque fue diseñado para ser un lenguaje fácil de aprender. Los fundadores de Ethereum hicieron que la sintaxis de Solidity fuera similar a la de los lenguajes más usados dentro del mundo del desarrollo: Java, JavaScript y Python (entre otros). El objetivo era atraer con más facilidad a desarrolladores con algo de experiencia al mundo del desarrollo blockchain sin que les costase demasiado esfuerzo. Y lo consiguieron, ¡vaya si lo consiguieron!
- Es de tipado estático, lo cual quiere decir que tenemos que especificar en cada momento qué tipo de dato estamos almacenando en las variables que declaramos (si usamos números, direcciones, bytes, cadenas de caracteres, etc). Esto ayuda a evitar errores en tiempo de ejecución.
- Soporta la herencia, así que de esta forma podemos reutilizar código. Esta característica lo hace un lenguaje muy eficiente y optimizado.
- Debido a las características de la propia tecnología blockchain, smart contracts programados en Solidity son inmutables una vez se despliegan en la cadena de bloques, lo cual significa que no se pueden modificar o borrar en ningún caso. Esto es un arma de doble filo, por que por un lado nos aseguramos de que ninguna entidad maliciosa ha podido manipular el código, pero por otra parte es necesario que los desarrolladores blockchain estén muy bien cualificados para que no comentan errores que impliquen brechas de seguridad.
- La filosofía de la blockchain es que todo es público, y esto aplica también a Solidity. Casi todo el código (por no decir todo) es público, open source. Gracias a esto, los desarrolladores blockchain pueden ahorrarse bastante trabajo y también aprender de otros programadores. Además se utilizan muchas bibliotecas y estándares que facilitan mucho los desarrollos.
¿Para qué se utiliza?
Como ya se ha ido comentando a lo largo del artículo, Solidity es un lenguaje que sirve para programar contratos inteligentes o smart contracts.
Para entender un poco mejor qué diferencia tiene esto con los desarrollos de software tradicionales, es necesario saber qué es un contrato inteligente.
Los contratos inteligentes son scripts de código, en el que se programan una serie de reglas que constituyen un acuerdo entre dos o más partes. Al igual que un contrato tradicional. La ventaja que presentan es que, al estar escritos en algún lenguaje de programación, no son interpretables de forma subjetiva por ninguna de las partes. Y además, por las características de la blockchain son inmutables, así que no pueden modificarse una vez se despliegan, y también son autoejecutables, funcionan automáticamente.
Solidity es el lenguaje más utilizado en el desarrollo de contratos inteligentes, por varios motivos. El primero, es que este lenguaje, como hemos comentado antes, es el primero que ha existido que fuera Turing Completo. Pero además de esto, también hay que destacar que es un lenguaje optimizado y que está diseñado para ejecutarse en la Ethereum Virtual Machine.
Esta máquina virtual es la piedra angular de Ethereum, y ha marcado tanto la diferencia en el mundo de la blockchain, que hoy en día la grandísima mayoría de las cadenas de bloques que existen, han replicado esta máquina virtual. Por lo tanto, Solidity es compatible con todas estas blockchain.
Master de Desarrollo Blockchain de Conquer Blocks
En Conquer Blocks sabemos la relevancia de este lenguaje y sabemos todo el potencial que tiene. Precisamente por eso, cuando tuvimos que elegir qué lenguaje impartir en nuestro Máster de Desarrollo Blockchain, no tuvimos que pensarlo mucho.
Solidity, además de ser un gran lenguaje de programación, también da la flexibilidad de poder desarrollar en la gran mayoría de redes que existen hoy en día, y esto como desarrollador es bastante interesante.
Si te gustaría aprender este lenguaje (y muchas cosas más), en Conquer Blocks podemos ayudarte con nuestro Máster de Desarrollo Blockchain. Puedes acceder a toda la información asociada al Máster en el siguiente link.
➡️ Accede al máster de desarrollo blockchain de Conquer Blocks, pulsa aquí.