1.4 ¿Qué es un contrato inteligente





Curso de Solidity: 1.4 ¿Qué es un contrato inteligente

1.4 ¿Qué es un contrato inteligente

Un contrato inteligente, o smart contract en inglés, es un programa que se ejecuta en una blockchain, como la de Ethereum. La idea de un contrato inteligente es reemplazar o mejorar los contratos tradicionales mediante la automatización de la ejecución de sus términos y condiciones, eliminando así la necesidad de intermediarios. Un contrato inteligente se autoejecuta cuando se cumplen las condiciones previamente codificadas en él.

Detalles Fundamentales de un Contrato Inteligente

Para entender completamente qué es un contrato inteligente, es necesario abordar algunos conceptos básicos y también entender cómo se estructura y se ejecuta un contrato inteligente en la práctica.

1. Características Principales

  • Autonomía: Una vez desplegado en la blockchain, un contrato inteligente funciona automáticamente sin necesidad de intervención humana.
  • Inmutabilidad: Una vez que un contrato inteligente es desplegado en la blockchain, no puede ser modificado. Esto garantiza la integridad del contrato.
  • Transparencia: Todos los contratos desplegados en la blockchain son visibles y auditable por cualquier persona, lo que garantiza transparencia.
  • Determinismo: La ejecución del contrato produce el mismo resultado independientemente de quién lo ejecute, siempre y cuando se den las mismas condiciones.

2. Estructura Básica de un Contrato en Solidity

Solidity es el lenguaje de programación más común para la creación de contratos inteligentes en la blockchain de Ethereum. Veamos un ejemplo básico de un contrato inteligente:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0

contract SimpleStorage {
    // Declaración de una variable de estado
    uint256 storedData

    // Función para establecer el valor de la variable
    function set(uint256 x) public {
        storedData = x
    }

    // Función para obtener el valor de la variable
    function get() public view returns (uint256) {
        return storedData
    }
}

En este ejemplo, el contrato SimpleStorage permite almacenar y recuperar un valor numérico. Vamos a desglosar este código:

  1. Licencia y Versión del Compilador: SPDX-License-Identifier: MIT y pragma solidity ^0.8.0 indican la licencia del contrato y la versión del compilador de Solidity, respectivamente.
  2. Declaración de Contrato: contract SimpleStorage define el inicio del contrato.
  3. Variable de Estado: uint256 storedData declara una variable de tipo entero sin signo (uint256) que se almacena en la blockchain.
  4. Función de Escritura: function set(uint256 x) public permite al usuario establecer el valor de storedData.
  5. Función de Lectura: function get() public view returns (uint256) permite al usuario recuperar el valor de storedData. La palabra clave view indica que esta función no modifica el estado del contrato.

3. Despliegue de un Contrato Inteligente

Para desplegar un contrato inteligente en la red de Ethereum, se necesitan Ether (la criptomoneda de Ethereum) para pagar las tarifas de gas. El proceso de despliegue incluye compilar el código del contrato y enviar una transacción que contiene el código compilado a la blockchain.

4. Interacción con Contratos Inteligentes

Una vez desplegado, cualquier usuario puede interactuar con el contrato llamando a sus funciones. Las interacciones que modifican el estado del contrato requieren el pago de gas, mientras que las lecturas del estado no.

Uso Avanzado de Contratos Inteligentes

Los contratos inteligentes pueden ser combinados para crear sistemas más complejos, como aplicaciones descentralizadas (dApps), protocolos financieros y mucho más. Aquí hay un ejemplo de un contrato inteligente más avanzado que incluye eventos y modificaciones (modifiers):

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0

contract AdvancedStorage {
    uint256 storedData

    // Evento que se emitirá cuando se establezca un nuevo valor
    event DataStored(uint256 indexed newValue)

    // Modificador para verificar condiciones
    modifier onlyValidValue(uint256 x) {
        require(x > 0, Value must be greater than zero)
        _
    }

    function set(uint256 x) public onlyValidValue(x) {
        storedData = x
        emit DataStored(x) // Emitir evento
    }

    function get() public view returns (uint256) {
        return storedData
    }
}

En este contrato:

  1. Evento: event DataStored(uint256 indexed newValue) define un evento que se emite cuando se establece un valor nuevo.
  2. Modificador: modifier onlyValidValue(uint256 x) define una condición que debe cumplirse antes de ejecutar la función.
  3. Emitir Evento: emit DataStored(x) se usa para emitir un evento cuando se establece un nuevo valor.

Esta complejidad adicional permite una mayor flexibilidad y control sobre el comportamiento del contrato.

En resumen, los contratos inteligentes son una herramienta poderosa para la automatización y ejecución de acuerdos sin necesidad de intermediarios, y Solidity es uno de los lenguajes principales para desarrollarlos en la blockchain de Ethereum. Con el entendimiento de estos conceptos básicos y avanzados, puedes empezar a crear tus propios contratos inteligentes para diversas aplicaciones.


AnteriorSiguiente

[mwai_chat]

Deja una respuesta

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