Las state variables son variables definidas fuera de cualquier función dentro de un contrato en Solidity. Su valor se almacena de manera permanente en la blockchain, a diferencia de las variables locales que solo existen durante la ejecución de una función. Son ideales para guardar información como balances, direcciones o configuraciones importantes.
public
, private
, internal
o external
.
Se definen fuera de las funciones y pueden inicializarse directamente o mediante un constructor.
pragma solidity ^0.8.0;
contract Ejemplo {
// State variables
uint public numero; // Variable pública
address private owner; // Variable privada
string internal mensaje; // Variable interna
// Constructor para inicializar variables
constructor() {
owner = msg.sender;
mensaje = "Bienvenido";
}
}
Modificador | Descripción |
---|---|
public
|
La variable puede ser accedida desde dentro y fuera del contrato. |
private
|
Solo accesible dentro del contrato donde se define. |
internal
|
Accesible dentro del contrato y contratos derivados. |
external
|
No aplicable directamente a variables, solo a funciones. |
contract Balance {
uint public balance;
// Función para actualizar el balance
function setBalance(uint _balance) public {
balance = _balance;
}
// Función para consultar el balance
function getBalance() public view returns (uint) {
return balance;
}
}
contract Autorizacion {
address public owner;
constructor() {
owner = msg.sender; // Dirección del creador del contrato
}
// Función para verificar si una dirección es la del propietario
function esPropietario() public view returns (bool) {
return msg.sender == owner;
}
}
contract Mensaje {
string public mensaje;
// Función para establecer el mensaje
function setMensaje(string memory _mensaje) public {
mensaje = _mensaje;
}
// Función para obtener el mensaje
function getMensaje() public view returns (string memory) {
return mensaje;
}
}
1. Costo en gas: Usar state variables para almacenamiento es más costoso que usar variables locales o eventos debido al espacio que ocupan en la blockchain.
2. Actualización: Cada vez que actualices una state variable, se genera una transacción, lo que implica costos adicionales.
3. Optimización: Minimiza el uso de state variables para reducir costos en gas.
Para más información sobre las state variables, consulta la documentación oficial de Solidity.
Jorge García
Fullstack developer