Solidity es un lenguaje de alto nivel orientado a objetos para implementar contratos inteligentes (smart contracts).
Los contratos inteligentes son programas que rigen el comportamiento de las cuentas dentro del estado de Ethereum.
Se ejecutan automáticamente en la blockchain (en este caso Ethereum) cuando las condiciones preestablecidas se cumplen.
Un contrato en el sentido de Solidity es una colección de código (sus funciones) y datos (su estado) que reside en una dirección específica en la cadena de bloques de Ethereum. Veamos un ejemplo sencillo:
Ejemplo 1. Un contrato denominado SimpleStorage para setear y obtener un dato de tipo uint.
// SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.4.16 <0.9.0; contract SimpleStorage { uint storedData; function set(uint x) public { storedData = x; } function get() public view returns (uint) { return storedData; } }
Podríamos decir que Plutus sería el Solidity de Cardano y Cardano el Ethereum de Plutus.
La documentación oficial nos dice:
- Solidity es un lenguaje de llaves diseñado para la máquina virtual Ethereum (EVM).
- Está influenciado por C++, Python y JavaScript.
- Puede encontrar más detalles sobre los lenguajes en los que se inspiró Solidity en la sección de influencias del lenguaje.
- Solidity tiene tipos estáticos, admite herencia, bibliotecas y tipos complejos definidos por el usuario, entre otras características.
- Con Solidity, puede crear contratos para usos como votación, financiación colectiva, subastas ciegas y billeteras multifirma.
Como funciona un Smart contract
- Se escribe el contrato inteligente en Solidity (o Plutus).
- Se publica en la blockchain (en este caso en Ethereum). Donde nadie puede modificarlo o borrarlo.
- Cuando se cumplen las condiciones, el contrato se ejecuta automáticamente.
Digamos que una persona quiere comprar una cripromoneda y envía el pago. Entonces el contrato inteligente validará la transacción y enviará la criptomoneda si el pago es válido.
Ejemplo 2. Un "Hola, mundo".
pragma solidity ^0.8.0; contract HolaMundo { string public mensaje = "Hola, Mundo!"; }
Ejemplo 3. Contrato (token ERC-20 básico), que permite crear y transferir tokens en la blockchain.
MiPrimerToken.sol
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; // Contrato ERC-20 básico contract MiPrimerToken { // Variables de estado string public nombre = "MiPrimerToken"; string public simbolo = "MPT"; uint256 public totalSupply; // Mapeo para almacenar los balances de cada cuenta mapping(address => uint256) public balanceOf; // Evento para notificar transferencias event Transfer(address indexed from, address indexed to, uint256 value); // Constructor: inicializa el supply total y lo asigna al creador del contrato constructor(uint256 _supplyInicial) { totalSupply = _supplyInicial; balanceOf[msg.sender] = _supplyInicial; // El creador del contrato recibe todos los tokens } // Función para transferir tokens function transfer(address _to, uint256 _value) public returns (bool success) { require(balanceOf[msg.sender] >= _value, "Saldo insuficiente"); // Verifica que el remitente tenga suficientes tokens balanceOf[msg.sender] -= _value; // Resta los tokens del remitente balanceOf[_to] += _value; // Suma los tokens al destinatario emit Transfer(msg.sender, _to, _value); // Emite el evento de transferencia return true; } }
Requisitos Previos
- Entorno de Desarrollo: Puedes usar Remix, un IDE en línea para desarrollar y desplegar smart contracts.
- Metamask: Para interactuar con la blockchain desde tu navegador.
Cómo probar el contrato
- Abre Remix.
- Crea un nuevo archivo (MiPrimerToken.sol) y pega el código.
- Compila el Contrato: Ve a la pestaña "Solidity Compiler".
- Selecciona la versión 0.8.0 o superior.
- Haz clic en "Compile MiPrimerToken.sol".
- Despliega el Contrato:
- Ve a la pestaña "Deploy & Run Transactions".
- Selecciona el entorno "JavaScript VM" para pruebas locales.
- En el campo "Deploy", ingresa el _supplyInicial (por ejemplo, 1000000).
- Haz clic en "Deploy".
- Interactúa con el Contrato: Una vez desplegado, verás las funciones del contrato.
- Prueba la función transfer enviando tokens a otra dirección (puedes generar cuentas en Remix).
En próximas entregas profundizaremos más sobre el tema.
Enlaces:
https://soliditylang.org/https://codemonkeyjunior.blogspot.com/2025/03/criptomonedas-que-son-y-para-que-sirven.html
https://github.com/solidity-docs/es-spanish
Comentarios
Publicar un comentario