CursosEmpresasBlogLiveConfPrecios

Tipos de almacenamiento

Clase 12 de 21 • Curso de Introducción a Solidity

Clase anteriorSiguiente clase

Contenido del curso

Por qué debes aprender Solidity
  • 1
    Curso de Solidity: Fundamentos y Desarrollo en Blockchain

    Curso de Solidity: Fundamentos y Desarrollo en Blockchain

    01:24
  • 2
    Programación en Solidity para Contratos Inteligentes en Blockchain

    Programación en Solidity para Contratos Inteligentes en Blockchain

    03:23
Introducción a la programación con Solidity
  • 3
    Estructura Básica de Contratos en Solidity

    Estructura Básica de Contratos en Solidity

    10:29
  • 4
    Tipos de datos y variables en Solidity: enteros, booleanos y direcciones

    Tipos de datos y variables en Solidity: enteros, booleanos y direcciones

    12:38
  • 5
    Estructuras y Arrays en Contratos Inteligentes

    Estructuras y Arrays en Contratos Inteligentes

    09:20
  • 6
    Estructuras de datos en Solidity: Mappings y enums

    Estructuras de datos en Solidity: Mappings y enums

    11:53
  • 7
    Estructuras de control en Solidity

    Estructuras de control en Solidity

    10:48
  • 8
    Manejo de Eventos con Solidity

    Manejo de Eventos con Solidity

    05:29
Programación de Funciones en Solidity
  • 9
    Cómo implementar funciones en Solidity

    Cómo implementar funciones en Solidity

    09:13
  • 10
    Uso de Modificadores en Solidity

    Uso de Modificadores en Solidity

    08:41
  • 11
    Manejo de errores

    Manejo de errores

    07:35
Gestionando costos de gas y comisiones
  • 12
    Tipos de almacenamiento

    Tipos de almacenamiento

    05:17
  • 13
    Manejo del gas y comisiones

    Manejo del gas y comisiones

    08:37
  • 14
    Transferencias de ether desde un contrato

    Transferencias de ether desde un contrato

    09:47
  • 15
    Recibir ether desde un contrato

    Recibir ether desde un contrato

    11:50
Conceptos avanzados de Solidity
  • 16
    Manejo de dependencias y librerías

    Manejo de dependencias y librerías

    08:12
  • 17
    Uso de la herencia en Solidity

    Uso de la herencia en Solidity

    14:41
  • 18
    Polimorfismo en contratos inteligentes

    Polimorfismo en contratos inteligentes

    09:05
  • 19
    Tokens

    Tokens

    13:34
  • 20
    Application Binary Interface (ABI)

    Application Binary Interface (ABI)

    06:50
Cómo continuar mi camino desarrollando en Blockchain
  • 21
    Cómo continuar mi camino con Solidity

    Cómo continuar mi camino con Solidity

    01:58
    Ernesto García

    Ernesto García

    teacher•
    hace 4 años

    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
      Johan Muñoz

      Johan Muñoz

      student•
      hace 4 años

      Que buen aporte <3

      Adolfo Sebastián Jara Gavilanes

      Adolfo Sebastián Jara Gavilanes

      student•
      hace 4 años

      Gran aporte

    Jimmy Buriticá Londoño

    Jimmy Buriticá Londoño

    student•
    hace 4 años

    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).

    Luis Alejandro Vera Hernandez

    Luis Alejandro Vera Hernandez

    student•
    hace 4 años

    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.

    Abidan Triguero Calle

    Abidan Triguero Calle

    student•
    hace 3 años

    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:

    CLASE 12 Imagen1TiposDeAlmacenamiento.png

    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; } }
    Miguel Angel Escurra

    Miguel Angel Escurra

    student•
    hace 4 años

    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.
    Carlos Javier Quex Orellana

    Carlos Javier Quex Orellana

    student•
    hace 4 años

    Porque a una variable bool no se le indica si se usa memory o storage?

      Sebastian Perez

      Sebastian Perez

      teacher•
      hace 4 años

      Hola Carlos, no se le indica porque es un atributo que se guarda por valor y no por referencia. Es decir, cuando se almacena un booleano, se almacena un 0 o un 1, y se lee directamente. En cambio, en un string o un struct contamos con información más compleja que no es leida directamente de su almacenamiento y por lo tanto hay que alojar el bloque de información en la memoria o en el storage.

    Jorge Fidel Zubieta Choque

    Jorge Fidel Zubieta Choque

    student•
    hace 3 años

    // 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. }

    Joaquin Jimenez Garcia

    Joaquin Jimenez Garcia

    student•
    hace 3 años

    Es curioso que si en el constructor pasas un "uint" en lugar de "string", no te pide que selecciones el tipo de guardado...

      Alberto Beltrán

      Alberto Beltrán

      student•
      hace 3 años

      Esto sucede porque el tipo de almacenamiento solo existe para los tipos de datos por referencia (arrays, strings, bytes, structs, mappings), mientras que cualquier otro dato (como uint) es un tipo de dato por valor, a los cuales Solidity les asigna un almacenamiento por default, es decir, no debemos ni podemos asignarles uno.

      Puedes leer más sobre esto en la documentación: https://docs.soliditylang.org/en/latest/types.html#data-location

    Marcelo Haro

    Marcelo Haro

    student•
    hace 2 años

    Por favor, en el comentario de Ernesto García menciona acerca de la memoria dinámica, señala que “calldata no puede alojar una cantidad definida de memoria”, esto confunde un poco, por favor entonces calladata puede alojar cantidades indefinidas de memoria? , calladata es de memoria definida o es indefinida?

    O es que tal ves lo que quiso decir fue lo contrario en el comentario, que calladata no puede alojar una cantidad indefinida de memoria, por favor si me pueden guiar con esa duda.

      Sebastian Perez

      Sebastian Perez

      teacher•
      hace 2 años

      Calldata es de sólo lectura. No tiene un límite (si lo tiene, pero es bastante amplio) definido pero no es algo que vayamos a modificar o necesitar saber para escribir los contratos. No se si responde la consulta pero tal vez ayuda a clarificar

    Andres Valencia

    Andres Valencia

    student•
    hace 2 años

    Si entiendo ¿Cuando estoy usando un struct no tengo necesidad entonces de decir que se debe declarar que es <storage>? ¿Solidity ya lo supone?

      Sebastian Perez

      Sebastian Perez

      teacher•
      hace 2 años

      Si el struct es una variable del contrato (es decir, que no está declarada dentro de una función pero sí dentro del contrato), estará almacenado en el Storage y no hace falta que le agregues nada.

    Anderson Eduardo Arévalo Ramírez

    Anderson Eduardo Arévalo Ramírez

    student•
    hace 3 años

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

    Luis von Rickenbach

    Luis von Rickenbach

    student•
    hace 4 años

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

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads