Solidity para principiantes ¿Cómo programar mi primer contrato inteligente?

En este artículo vamos a enseñarte a programar un contrato inteligente en el lenguaje de programación más utilizado a día de hoy, que es Solidity. Y lo mejor, ¡es que no necesitas instalar nada! Puedes hacerlo directamente desde tu navegador.

Solidity es un lenguaje de programación orientado a objetos que se creó para la blockchain de Ethereum, y que está basado en lenguajes como JavaScript o Python. Así que si ya sabes estos lenguajes, Solidity te parecerá muy muy sencillo.

Sí, por el contrario, eres completamente principiante, no tienes ni idea sobre programación, ¡NO TE PREOCUPES! Este tutorial está pensado justamente para ti.  Es ser supersencillo, y lo único que vas a necesitar para hacerlo es tu ordenador y conexión a internet.

Solidity es un lenguaje que sirve para programar contratos inteligentes o smart contracts, así que antes de empezar es importante saber qué es y para qué sirve un contrato inteligente.


Una vez sabemos esto, vamos a ponernos manos a la obra.

En primer lugar, tendrás que iniciar tu navegador y acceder al siguiente link: https://remix-project.org/

Verás algo como esto.


Deberás pulsar Remix Online IDE y re redirigirá a la siguiente interfaz. Y ya por fin, podrás empezar a escribir tu código.


Como ves, tienes a la derecha un explorador de archivos con varias carpetas que vienen por defecto. En la primera, que se llama ‘contracts’, también tenemos tres archivos. Se trata de tres contratos inteligentes muy sencillos que Remix nos deja por defecto.

En esta ocasión, no vamos a hacer nada con estos tres contratos así que, vamos a ignorarlos porque vamos a crear uno nuevo.

Sitúate en la carpeta ‘contracts’ y pulsa el botón derecho. Verás que aparece un pequeño menú. Pulsa ‘New File’.


De esta forma se generará un nuevo archivo. Ponle el nombre que quieras, pero es importante que termines con la extensión ‘.sol’. Nosotros vamos a llamarlo ‘Contrato.sol’.

Ahora sí, ¡estamos listos para empezar!

En primer lugar, SIEMPRE que se empieza a programar un contrato inteligente en solidity, es necesario especificar la licencia. Así que esa debe ser la primera línea de tu contrato:


La licencia SPDX (Software Package Data Exchange) es un estándar para identificar y describir los derechos de autor y la licencia de software. En el caso de Solidity, se utiliza para identificar la licencia bajo la cual se ha publicado el código fuente de un contrato inteligente de Ethereum.

La licencia SPDX permite a los desarrolladores y usuarios conocer los términos y condiciones legales bajo los cuales pueden usar, modificar y distribuir el código fuente del contrato inteligente. Esto es importante porque permite asegurar la transparencia y la legalidad en el desarrollo y uso de los contratos inteligentes en la cadena de bloques de Ethereum.

Después, vamos a indicar la versión de compilador. Solidity es un lenguaje que se encuentra en continua mejora, así que verás que existen muchas versiones de compilador. En este caso no es muy relevante cuál vayamos a usar porque el contrato va a ser muy sencillo, pero lo mejor siempre es usar una reciente.


En nuestro caso, como veis, vamos a usar la 0.8.17.

Lo siguiente, sería empezar con el ‘esqueleto’ de nuestro contrato. Escribimos la palabra reservada contract seguida del nombre de nuestro contrato.


Dentro de esas dos llaves, vamos a escribir toda la lógica de nuestro contrato.

El siguiente paso va a ser declarar una variable, en nuestro caso de tipo numérico. Para ello usamos la palabra reservada uint seguida del nombre de la variable.


Después, definimos algo llamado constructor. Para ello utilizamos la palabra reservada constructor.

El constructor es una especie de “función” que solo se ejecuta una vez cuando se despliega el contrato, y nos sirve para darle valores a las variables. En este caso, la variable number va a tener como valor inicial el número 1.



Lo siguiente, será declarar una función para que podamos consultar el valor de esta variable.  Utilizamos la palabra reservada function seguida del nombre de la función. Después especificamos que va a ser public, para que cualquiera pueda usarla.


Esa palabra reservada view que veis en la imagen, simplemente significa que no vamos a modificar valores dentro de esa función.

Como es una función para consultar el valor de number, tenemos que especificar que nos devuelva un valor de tipo uint.

Dentro de las llaves lo único que hacemos es devolver la variable number, y listo.

La siguiente y última función que tenemos nos va a servir para cambiar el valor de la variable number. Por eso, entre los paréntesis, especificamos que tenemos que introducir por parámetro un número entero de tipo uint.


Dentro de la función, simplemente cambiamos el valor de number al nuevo valor, y listo.

Así quedaría nuestro contrato:


Ahora para compilarlo tendríamos que hacer Ctrl+S o pulsar botón azul en el siguiente menú:


Si al pulsarlo sale un tico verde, es que todo ha funcionado correctamente.

Una vez compilado, es momento de desplegar nuestro contrato. Para ello vamos al siguiente menú, y pulsamos el botón naranja:


Al pulsarlo veréis que os aparece lo siguiente:

Como veis, tenemos un botón con el nombre de cada función que hemos escrito antes.

Si pulsamos el botón getNumber veremos lo siguiente:

Como veis, aparece un 1. Que es el valor inicial que le hemos dado en el constructor a la variable number.

Si escribimos un 5 en la función setNumber y le damos al botón, y después volvemos a pulsar getNumber, obtenemos lo siguiente.

Como veis, el valor ha cambiado a 5.

Másterclass sobre Desarrollo Blockchain de ConquerBlocks

Si después de programar y probar este pequeño contrato inteligente, te ha picado el gusanillo del desarrollo blockchain, ¡estás de suerte!

Si pulsas el siguiente link, vas a tener acceso a una masterclass completamente gratuita, en la que te explicamos cuál es la hoja de ruta que tienes que seguir si quieres convertirte en desarrollador blockchain.

Pulsa aquí para acceder a la Masterclass gratuita de Desarrollo Blockchain de ConquerBlocks


Vídeo del artículo:


El programa de Desarrollo Blockchain más vendido del mercado

Descubre el Máster en Desarrollo Blockchain de Conquer Blocks

Descubre el Máster en Desarrollo Blockchain de Conquer Blocks