html
3. Fundamentos de Solidity
Solidity es un lenguaje de programación diseñado específicamente para escribir contratos inteligentes que se ejecutan en la máquina virtual de Ethereum (EVM). Al ser un lenguaje de alto nivel y de tipado estático, Solidity permite a los desarrolladores definir la estructura, lógica y comportamiento de los contratos inteligentes de manera clara y segura. En este apartado, exploraremos en profundidad los fundamentos de Solidity, incluyendo su sintaxis básica, tipos de datos, estructuras de control y más.
Sintaxis Básica
La sintaxis de Solidity es similar a la de JavaScript, lo que facilita su comprensión para aquellos que ya están familiarizados con este lenguaje. Un contrato en Solidity es una colección de funciones y datos (estado) que reside en una dirección específica en la blockchain de Ethereum.
Definición de un Contrato
En Solidity, todo comienza con la definición de un contrato. A continuación, se muestra un ejemplo básico de un contrato en Solidity:
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0 contract MiPrimerContrato { // Una variable de estado que almacena un número entero uint256 public miNumero // Una función para establecer el valor de miNumero function setNumero(uint256 _numero) public { miNumero = _numero } // Una función para obtener el valor de miNumero function getNumero() public view returns (uint256) { return miNumero } }
En este ejemplo:
pragma solidity ^0.8.0
: Especifica la versión del compilador de Solidity a utilizar.contract MiPrimerContrato
: Define un nuevo contrato llamado MiPrimerContrato.uint256 public miNumero
: Declara una variable de estado pública llamada miNumero de tipo entero sin signo de 256 bits.function setNumero(uint256 _numero) public
: Define una función pública para establecer el valor de miNumero.function getNumero() public view returns (uint256)
: Define una función pública de solo lectura para obtener el valor de miNumero.
Tipos de Datos en Solidity
Solidity admite varios tipos de datos como enteros, booleanos, direcciones, cadenas de caracteres, enumeraciones, estructuras, matrices y más.
Enteros y Booleanos
Los enteros pueden ser con signo (int
) o sin signo (uint
) y de varios tamaños (por ejemplo, int8
, int256
, uint8
, uint256
). El tipo booleano (bool
) almacena valores verdadero (true
) o falso (false
).
uint8 pequeñoNumero = 255 int256 granNumero = -123456789 bool esVerdad = true
Direcciones
El tipo address
es una variable de 20 bytes que almacena una dirección Ethereum.
address contratoPropietario = 0x1234567890abcdef1234567890abcdef12345678
Cadenas de Caracteres
El tipo string
almacena cadenas de texto.
string mensaje = Hola, Ethereum!
Enumeraciones
Las enumeraciones (enum
) permiten definir un conjunto de valores constantes con nombre. Son útiles para representar estados o modos.
enum Estado { Inactivo, Activo, Completado } Estado estadoActual = Estado.Inactivo
Estructuras
Las estructuras (struct
) permiten agrupar múltiples variables relacionadas en un solo tipo.
struct Persona { string nombre uint8 edad } Persona public juan = Persona(Juan, 30)
Matrices
Solidity soporta matrices de tamaño fijo y dinámico.
uint[] numerosDinamicos // Matriz dinámica de enteros no firmados uint[5] numerosFijos // Matriz fija de enteros no firmados con tamaño 5 numerosDinamicos.push(1) // Agrega un elemento a la matriz dinámica
Estructuras de Control
Solidity soporta las estructuras de control básicas como condicionales (if
, else
), bucles (for
, while
, do...while
) y break
/continue
.
Condicionales
function verificarNumero(uint256 _numero) public pure returns (string memory) { if (_numero > 100) { return El número es mayor que 100 } else if (_numero == 100) { return El número es igual a 100 } else { return El número es menor que 100 } }
Bucles
function sumarHasta(uint256 _max) public pure returns (uint256) { uint256 suma = 0 for (uint256 i = 0 i <= _max i ) { suma = i } return suma } function contarHasta(uint256 _max) public pure returns (uint256) { uint256 contador = 0 while (contador < _max) { contador } return contador }
Esto cubre los fundamentos básicos de Solidity. Comprender estos conceptos es crucial para avanzar en la construcción de contratos inteligentes complejos y seguros. A medida que avanzas, te encontrarás con características avanzadas como herencia, modificadores, eventos y más.
Deja una respuesta