No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Curso de Introducci贸n a Solidity

Curso de Introducci贸n a Solidity

Sebasti谩n Leonardo Perez

Sebasti谩n Leonardo Perez

Tipos de almacenamiento

12/21
Recursos

Aportes 9

Preguntas 1

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Tipos de almacenamiento

  • Storage: Memoria persistente. Es el m谩s costoso. Similar a la memoria ROM
  • Memory: Variables temporales durante ejecuci贸n. Se asimila a la RAM
  • Calldata: Son constantes definidas en el entorno de ejecuci贸n de una variable. No son modificables.

Memoria din谩mica

La raz贸n por la que un string necesita un sufijo que indique el uso de memoria, es debido a que es memoria din谩mica, por lo que calldata no puede alocar una cantidad definida de memoria, por lo que tenemos que indicarle que esa variable la pase por la memoria vol谩til (RAM/memory), para que la funci贸n la pueda manejar correctamente.

Este efecto ocurre con cualquier cosa que sea de tama帽o no definido, por ejemplo:

  • Un arreglo
  • Un string

Storage:

Hace referencia a todos los datos guardados permanentemente en la blockchain. 驴Pero cu谩les son estos datos? Las variables de nuestro contrato que hayan sido declaradas en el scope global fuera de cualquier m茅todo (funci贸n del contrato), a esto se le denomina el ESTADO de nuestro Smart Contract. Puedes entenderlo como los datos del disco duro de tu ordenador, solo que est谩n en la blockchain, esto es, descentralizados en millones de discos duros u otros dispositivos de almacenamiento persistente (nodos).

Data Location

  • Storage: Queda guardada dentro de la blockchain, siempre vamos a poder obtener el valor almacenado, pues este nunca se va borrar. Memoria Persistente.

  • Memory (Modificable): Solo existe mientras se llama una funci贸n y no podemos acceder de nuevo a el dato. Temporales. Costo menor al STORAGE

  • Calldata: Solo existe mientras se llama la funci贸n.

Por defecto las variables de estado se almacenan en el storage y los par谩metros en memory.

RESUMEN CLASE 12:
TIPOS DE ALMACENAMIENTO

  • Storage: es el almacenamiento persistente de los contratos, por lo tanto su costo es superior.

  • Memory: almacenamiento temporal, su contenido est谩 ligado al 谩mbito de la funci贸n que lo declara. Su costo es menor al de storage.

  • Calldata: es donde se alojan los par谩metros y su comportamiento es similar al de memory.

REMIX:

Almacenamiento.sol

// SPDX-License-Identifier: GLP-3.0

pragma solidity  >=0.7.0 <0.9.0;
contract Almacenamiento {

    string private nombre;

    constructor(string memory palabra) {
        nombre = palabra;
    }
    
}

Tipos de almacenamiento

  • Storage : structs, arrays, strings, cuando queremos indicarle que viene de una estructura previamente almacenada en un contrato.
  • Memory: El 90% de las veces que estemos desarrollando funciones la utilizaremos para el manejo de par谩metros.

// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.7.0 <0.9.0;

contract Almacenamiento {

string private nombre;
// al ser private pasa a ser parte del storage

constructor(string memory palabra) {
// memory porque la funcion va a ser de uso temporal
    nombre = palabra;
    // palabra al ser el contenido de la variable nombre y nombre ser private => palabra pasa a ser parte del storage!
}

// Cuando utilizar Storage?
// Cuando la informacion esta almacenada en alguna estructura desde algun contrato como strcuts, arrays, strings.
}

Es curioso que si en el constructor pasas un 鈥渦int鈥 en lugar de 鈥渟tring鈥, no te pide que selecciones el tipo de guardado鈥

Funciona como una clase y un contrato es una clase jejejje creo

Esta es una de las cosas que mas me cuesta entender dentro de solidity, muy buena clase!