Estructura y Desarrollo de Contratos Inteligentes en Solidity
Clase 6 de 21 • Curso de Introducción a Celo con Solidity
Resumen
¿Cómo se estructura un contrato inteligente?
Un contrato inteligente, o smart contract, es una pieza fundamental dentro del ecosistema de blockchain, permitiendo la ejecución de programas de manera descentralizada y segura. Este tipo de contratos presenta características como la irrevocabilidad y la inmutabilidad, haciendo que sean ideales para sistemas de finanzas descentralizadas. Los contratos inteligentes están conformados por diversas partes esenciales:
- Cabecera: Incluye las instrucciones como los pragmas y las referencias a otros contratos.
- Declaración del contrato: Define el nombre y las características adicionales del contrato.
- Variables de estado: Determinan la información que el contrato gestionará.
- Métodos o funciones: Determinan las operaciones que modifican o interaccionan con las variables de estado.
¿Qué tipos de funciones existen en los contratos inteligentes?
Dentro de los contratos inteligentes podemos encontrar principalmente tres tipos de funciones que determinan su interacción con la blockchain:
-
Funciones tipo View: Estas funciones solo leen información de la cadena sin modificar el estado de las variables, por lo tanto, no requieren pasar por un algoritmo de consenso y su ejecución es gratuita.
-
Funciones normales: Se encargan de modificar los estados del contrato, implicando un costo debido a la necesidad de consenso entre los nodos de la blockchain.
-
Funciones puras: Son utilizadas para cálculos o verificaciones sin necesidad de leer o escribir sobre el estado del contrato, y no tienen un costo en ejecución.
¿Cómo crear tu primer contrato inteligente en Remix IDE?
Para poner en práctica la creación de contratos inteligentes, el Remix IDE es una herramienta sencilla ya que permite desarrollar y probar contratos en un ambiente controlado. A continuación, te guiamos en la creación de un contrato básico "HolaMundo":
¿Cuál es la estructura básica de un contrato?
Un contrato sencillo como "HolaMundo" en Solidity puede estructurarse como se muestra a continuación:
pragma solidity ^0.8.0;
contract HolaMundo {
string private frase;
constructor() {
frase = "Hola Mundo";
}
function getFrase() public view returns (string memory) {
return frase;
}
function setFrase(string memory newFrase) public {
frase = newFrase;
}
}
- Pragma: Define la versión del compilador Solidity para asegurar la compatibilidad.
- Constructor: Inicializa la variable
frase
al instanciar el contrato. - Función getFrase: Permite leer el valor actual de
frase
. - Función setFrase: Permite modificar el valor de
frase
.
¿Cómo compilar y desplegar un contrato en Remix IDE?
Una vez escrito el código, el siguiente paso es compilar y desplegar el contrato:
-
Compilación: Selecciona la versión correcta del compilador según el pragma, y compila tu contrato.
-
Despliegue: Utiliza el entorno javaScript VM de Remix IDE, que simula una máquina virtual Ethereum, para desplegar tu contrato sin necesidad de interactuar con la red principal. Aquí podrás ver cómo el constructor se ejecuta y se inicializa
frase
con "Hola Mundo". -
Interacción: Una vez desplegado, puedes llamar a las funciones del contrato, como
getFrase
para obtener la frase actual osetFrase
para actualizar el mensaje.
La exploración de contratos inteligentes no termina aquí. Continúa aprendiendo e implementando funcionalidades avanzadas, como condicionales y bucles, para enriquecer tus contratos. Sigue desarrollando tus habilidades y adapta tus contratos a necesidades más complejas en el apasionante mundo de blockchain. ¡Tu aventura en el desarrollo de contratos inteligentes apenas comienza!