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.
Contenidos
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:
- Qué es una Blockchain: Si el concepto de cadena de bloques es nuevo para ti, consulta el tutorial de introducción a la Blockchain.
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:
- Aprende JavaScript: Guía Definitiva de JavaScript
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:
- Aprende Remix: Tutorial de Introducción a Remix
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:
- Sentencia pragma de Solidity: Qué es y cómo se usa la sentencia pragma de solidity
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:
- Variables en Solidity: Tipos de variables en Solidity
- Constructores en Solidity: Qué es un constructor en Solidity y cómo se usa
- Funciones en Solidity: Qué es una función en Solidity, cómo se declara y cómo se usa
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:
- Condicionales en Solidity: Tipos de estructuras condicionales en Solidity
- Bucles en Solidity: Tipos de bucles en Solidity
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:
- Arrays en Solidity: Qué son los arrays en Solidity y cómo se usan
- Mappings en Solidity: Qué son los mappings en Solidity y cómo se usan
- Estructuras en Solidity: Qué son las estructuras Solidity y cómo se usan
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:
- Eventos en Solidity: Qué son los eventos en Solidity y cómo se usan
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:
- Interacción entre Smart Contracts: Cómo interactuar con Smart Contracts en Solidity
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:
- Envío de ETH: Cómo enviar ETH desde tu Smart Contract con Solidity
- Recepción de ETH: Cómo recibir ETH en tu Smart Contract con Solidity
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:
- Errores en Solidity: Mecanismos de control de errores 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:
- Modificacores en Solidity: Qué es un modificar en Solidity y cómo se usa
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:
- Herenca y Solidity: Qué es la herencia en Solidity y cómo se implementa
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:
- Wallet Multifirma: Cómo crear una Wallet Multifirma con Solidity y React
Esto es todo por ahora.
como puedo recuperar un contrato que compilé y al cerrrar el navegador y por recomendacion de metamask borré el historial web, no lo encuentro …
gracias
Creo que desgraciadamente no lo vas a poder recuperar, ya que los contratos se almacenan en almacenamiento local de tu navegador.