Storage y Memory se utilizan para determinar si los tipos de re referencia (reference types) van a ser almacenados en memoria (no es persistente) o en storage (es persistente).
La máquina virtual de Ethereum (EVM) tiene tres áreas donde almacenar valores:
La máquina virtual de Ethereum (EVM) tiene tres áreas donde almacenar valores:
- Storage: Es la zona del contrato inteligente donde se guardan de manera persistente las variables. Cada vez que se ejecute el contrato o una función los valores estarán allí. Consume muchos recursos.
- Memory: Es la zona del contrato inteligente que mantiene las variables temporales, se borra cada vez que se ejecuta el contrato o se llama a una función diferente. Consume pocos recursos.
- Stack: Almacena un pequeño conjunto de variables locales, no consume apenas recursos pero apenas tiene capacidad.
Solidity dispone de las palabras clave memory y storage para determinar dónde alojar la variable.
Si asignamos una variable marcada como memory a una variable storage solo estamos copiando los datos no creando una variable storage.
Sin embargo si lo hacemos al revés, o sea asignamos una variable storage a una variable memory si que estaremos creando una variable memory.
Cuando creas una variable fuera de una función la estás alojando en el storage del contrato.
Y bueno, aquí termina mi pequeño resumen, espero que os sea de utilidad.
Comentarios