No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

10 Días
21 Hrs
54 Min
29 Seg
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 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

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 “uint” en lugar de “string”, 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!