3.3 Variables de estado, locales y globales

Punto del curso de Solidity: 3.3 Variables de estado, locales y globales

En Solidity, las variables pueden clasificarse en tres categorías principales: variables de estado, variables locales y variables globales. Cada tipo tiene su propio ámbito y características que son cruciales para entender el comportamiento y la gestión de los datos en un contrato inteligente.

Variables de Estado

Las variables de estado son variables que se almacenan permanentemente en el almacenamiento de blockchain. Esto significa que las modificaciones a estas variables son persistentes y la información se conserva incluso después de que la ejecución del contrato haya terminado.

Ejemplo de una variable de estado:

pragma solidity ^0.8.0

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

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

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

En este ejemplo, storedData es una variable de estado porque se declara fuera de cualquier función y su valor se almacena permanentemente en la blockchain.

Variables Locales

Las variables locales son aquellas que se declaran dentro de funciones y existen solo durante la ejecución de esas funciones. Estas variables no utilizan espacio en la blockchain y se destruyen una vez que la función ha terminado de ejecutarse.

Ejemplo de variables locales:

pragma solidity ^0.8.0

contract LocalVariables {
    function sum(uint256 a, uint256 b) public pure returns (uint256) {
        // Declaración de dos variables locales
        uint256 result = a   b
        
        // Variable local no afecta el estado del contrato
        return result
    }
}

Aquí, result es una variable local que se utiliza para almacenar el resultado de la suma de a y b. Esta variable existe solo durante la ejecución de la función sum y se destruye después.

Variables Globales

Las variables globales son variables especiales que existen de forma implícita y proporcionan información específica sobre la blockchain y sobre el entorno de ejecución de las funciones y transacciones. Estas variables son útiles para acceder a meta-información del contexto de la blockchain.

Ejemplo de variables globales:

pragma solidity ^0.8.0

contract GlobalVariables {
    address public owner
    uint256 public creationTime

    constructor() {
        owner = msg.sender // msg.sender es una variable global que devuelve la dirección del remitente
        creationTime = block.timestamp // block.timestamp es una variable global que devuelve la hora actual del bloque
    }

    function getBlockNumber() public view returns (uint256) {
        return block.number // block.number es una variable global que devuelve el número actual del bloque
    }
}

En este contrato:

  • msg.sender proporciona la dirección de quien invocó la función (en este caso, el constructor).
  • block.timestamp proporciona la marca de tiempo actual del bloque cuando se ejecutó la transacción.
  • block.number regresa el número del bloque actual.

Resumen

En resumen, entender las diferentes categorías de variables en Solidity es fundamental para la correcta escritura y gestión de contratos inteligentes. Las variables de estado permiten almacenar datos permanentemente en la blockchain, las variables locales ayudan en cálculos y operaciones intermedias dentro de funciones, y las variables globales proporcionan acceso a información crítica del entorno de la blockchain y la ejecución de transacciones.

AnteriorSiguiente

[mwai_chat]

Deja una respuesta

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