Tutorial de Solidity: Guía Definitiva

Solidity

En esta guía aprenderás a programar con Solidity, que es el lenguaje de programación que se utiliza principalmente para crear Smart Contracts en la Blockchain de Ethereum. Sin embargo, Solidity también se usa en muchas otras Blockchains, como por ejemplo la Binance Smart Chain o la Blockchain de Tron.

Información! Esta guía todavía se encuentra en desarrollo y se irá completando en los sucesivos días. La guía se centra en el aprendizaje y en la sintaxis de Solidity. Sin embargo, una vez terminada, os enseñaré a crear un proyecto real con Solidity. Este proyecto podría ser un DEX o una Wallet. Iré agregando una o más guías por semana.

Para estar al día, recuerda seguirme en Twitter 😉

Introducción

En esta guía no nos centraremos inicialmente en la creación de un proyecto, sino en al sintaxis y uso de Solidity. Tras ello, nos embarcaremos en una serie de proyectos con los que estarás listo para crear tus propios proyectos o por qué no, los de una empresa que te contrate.

Antes de comenzar, es altamente recomendable que consultes el siguiente tutorial, en donde aprenderás conceptos básicos, como qué es una Blockchain o qué son las wallets o las transacciones:

Si echas un ojo a la sintaxis del lenguaje JavaScript, podría parecerte similar a Solidity. Sin embargo, las diferencias  son tremendas. En el siguiente ejemplo puedes observar un Hola Mundo, que es la aplicación más sencilla que podrías crear:

pragma solidity ^0.8.10;

contract HolaMundo {
    string public saludo =  "Hola Mundo!";
}

Podría date la impresión de que debido a la similitud de su sintaxis con JavaScript, podrías ponerte a programar con Solidity directamente. Sin embargo, solamente se parecen en su sintaxis más básica, ya que las reglas de Solidity son muy diferentes.

En esta guía aprenderás a programar con Solidity desde cero. Sin embargo, es más que recomendable que conozcas algún otro lenguaje de programación de antemano, ya que se harán referencias a estructuras o convenios comunes de otros lenguajes. Por ejemplo, no es recomendable que sigas este tutorial si nunca has programado con JavaScript. Si quieres puedes consultar antes la siguiente guía, aunque como digo, deberías haber creado al menos alguna aplicación:

A diferencia de otras guías en las que tienes con configurar tu entorno de programación, como por ejemplo alguna implementación de Ethereum o una Blockchain local, en esta guía usaremos el IDE Remix, que es un entorno de programación de Solidity que podrás usar desde tu navegador. De este modo podrás crear y desplegar contratos sin los problemas de configuración que podrían darse en tu entorno local.

Para usar Remix bastará con que visites esta URL. Remix incluye todo lo que necesitas, incluyendo cierta cantidad de ETH para usar a modo de Gas. No se trata de Ethereum real, pero te permitirá enviar transacciones a la Blockchain con la que se integra como si fuese la Blockchain real de Ethereum.

En esta guía aprenderás cuáles son los tipos de datos de Soldity, cuáles son los tipos de variables, cómo usar funciones, cómo interactuar con otros contratos, cómo enviar ETH e incluso algo de Solidity Assembly, que es el lenguaje de bajo nivel sobre el que funciona Solidity. Finalmente, también veremos cómo crear una Wallet e incluso cómo crear tu propio DEX con Solidity, JavaScript y HTML.

Entorno de programación

Para crear Smart Contracts con Solidity puedes usar un entorno de programación local, con la complejidad que conlleva. Es algo que veremos más adelante. Sin embargo, de entrada, lo más recomendable mientras aprendes la sintaxis de Solidity es que uses el IDE Remix, que es un entorno de programación online que te proporcionará todo lo que necesitas:

Par su configuración inicial, basta con que actives la opción de autocompilado.

Crea un Smart Contract

Si por ejemplo quieres crear un nuevo contrato con Remix, bastará con que hagas clic derecho en contracts y luego en New File. Luego introduce por ejemplo MiContrato.sol como nombre del contrato. El contrato estará inicialmente vacío.

Todo contrato debe comenzar con la sentencia pragma, que sirve para indicar el número de versión de Solidity que el compilador debe usar a la hora de compilar el contrato. Por ello, comenzaremos por indicar la versión de Solidity que usará el contrato mediante la sentencia pragma:

pragma solidity ^0.8.0;

Puedes obtener más información acerca de esta sentencia en el siguiente tutorial:

Luego crearemos el contrato en sí mismo mediante al sentencia contract, que irá seguida del nombre del contrato, que por convenio estará en notación Pascal Case:

pragma solidity ^0.8.0;

contract MiContrato {
    /* ... */
};

Puedes definir más contratos dentro de un mismo archivo, aunque no es recomendable si quieres mantener tus contratos organizados:

pragma solidity ^0.8.0;

contract MiContrato {
    /* ... */
};

contract MiContrato2 {
    /* ... */
};

Para compilar el contrato no tendrás que hacer absolutamente si has activado el autocompilado de Remix.

Sintaxis de Solidity

A continuación encontrarás una serie de guías que te ayudarán a aprender todos los conceptos que necesitarás de la sintaxis de Solidity para poder crear y estructurar tus Smart Contracts:

Cuando programas con cualquier lenguaje de programación, siempre dispondrás de mecanismos que te permitirán definir el flujo de tu código. Los tipos de estructuras de control más comunes son los bucles y las estructuras condicionales:

Solidity, al igual que la gran mayoría de lenguajes de programación, también dispone de estructuras más complejas compuestas de datos más simples. Estas estructuras son los arrays, los mappings y las estructuras:

Mediante tu Smart Contract también podrás interactuar con elementos externos, enviando datos a otros sistemas como pueden ser una app o una interfaz web. Esto es posible gracias a los eventos:

Con Solidity no solamente podrás interactuar con elementos externos a la blockchain, sino también con otros Smart Contracts. Puedes lograr esto de diversas formas:

Algunas de las operaciones más comunes que realizarás con Solidity serán las de recepción y envío de ETH mediante tu Smart Contract. Puedes encontrar cómo lograrlo en los siguientes tutoriales:

Cuando creas un Smart Contract debes tener en cuanta todos los posibles caminos que puede seguir tu código. Los Smart Contracts necesitan ser muy seguros, siendo este el motivo de que las auditorías estén tan bien pagadas. A continuación puedes encontrar los mecanismos de control de errores existentes en Solidity:

Solidity también te permite crear una especie de middleware que puedes aplicar a tus funciones, pudiendo así reutilizar ciertas partes de tu código. Estos mecanismos reciben el nombre de modificadores:

Solidity también soporta herencia de clases, al igual que la gran mayoría de lenguajes orientados a objetos. A continuación puedes encontrar un tutorial acerca de la herencia en Solidity:

Proyectos de introducción

Si ya has aprendido la sintaxis de Solidity, tu siguiente paso será crear un proyecto real. A continuación te enseño cómo crear una wallet multifirma con Solidity. Te guío a través de la creación del contrato, del uso de Truffle, de los tests y también de  la interfaz:

Esto es todo por ahora.


Avatar de Edu Lazaro

Edu Lázaro: Ingeniero técnico en informática, actualmente trabajo como desarrollador web y programador de videojuegos.

👋 Hola! Soy Edu, me encanta crear cosas y he redactado esta guía. Si te ha resultado útil, el mayor favor que me podrías hacer es el de compatirla en Twitter 😊

Si quieres conocer mis proyectos, sígueme en Twitter.

2 comentarios en “Tutorial de Solidity: Guía Definitiva

Deja una respuesta

“- Hey, Doc. No tenemos suficiente carretera para ir a 140/h km. - ¿Carretera? A donde vamos, no necesitaremos carreteras.”