3. Fundamentos de Solidity

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.

Anterior...Siguiente

[mwai_chat]

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *