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.
Deja una respuesta