CursosEmpresasBlogLiveConfPrecios

Estructuras de datos en Solidity: Mappings y enums

Clase 6 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

    Mapas

    Los mapas son estructuras de datos de tipo llave-valor, que permiten apuntar un tipo de dato a otro en forma de diccionario.

    El tipo de la llave puede ser cualquier tipo de dato elemental, (por ejemplo, uint), y el tipo de dato del valor puede ser cualquier dato elemental o complejo, (se pueden inclusive hacer estructuras multidimensionales)

    mapping(<key type> => <value type>) <visibility> <name>;

    Enum

    Representa una lista de valores posibles creados por el usuario, una variable del tipo de enum declarado sólo puede tomar los valores enumerados.

    enum { <value1>, ..., <valueN> }
      Adolfo Sebastián Jara Gavilanes

      Adolfo Sebastián Jara Gavilanes

      student•
      hace 4 años

      Excelente aporte!! Muchas gracias

      Carlos Rodríguez

      Carlos Rodríguez

      student•
      hace 3 años

      Grandioso sus aportes profe, como siempre.

    Gustavo Aceredo

    Gustavo Aceredo

    student•
    hace 4 años

    Seria bueno generarle la cultura a los nuevos programadores para que las clases, variables, enum, contratos no solo sean formato camelcase sino que tambien se escriban en ingles. Por lo demas todo viene excelente

    Luis Dotto

    Luis Dotto

    student•
    hace 4 años

    Veo que en el video figura la opcion de call, en mi caso no me figura, pero se soluciona haciendo click en el nombre del parametro. Entiendo que se habra actualizado el Remix.

    Screenshot 2021-11-16 133752.png
      Luis Reynaldo Marino

      Luis Reynaldo Marino

      student•
      hace 4 años

      estoy atrapado en este loop, lo mas parecido a una solucion ha sido esta publicación pero quedo igual porque no comprendo bien a que se refiere con darle click en el nombre del parametro..ayudaa

    Luis Alejandro Vera Hernandez

    Luis Alejandro Vera Hernandez

    student•
    hace 4 años

    Mapping

    • Permite almacenar datos asociando una llave:valor mapping (string -> string) countries;
    countries['Felipe'] = 'Colombia'; countries['Laura']= 'Ecuador'; countries['Felipe'] // 'Colombia'; countries['Laura'] // 'Ecuador';

    Enum types

    Las enumeraciones son la forma de crear tipos de datos definidos por el usuario, generalmente se usa para proporcionar nombres para constantes integrales, lo que hace que el contrato sea mejor para el mantenimiento y la lectura. Las enumeraciones restringen la variable con uno de los pocos valores predefinidos

    enum <enumerator_name> { element 1, elemenent 2,....,element n }
    Marcos Kinam Diaz Rodriguez

    Marcos Kinam Diaz Rodriguez

    student•
    hace 4 años
    pragma solidity >=0.7.0 <0.9.0; contract Saldo { mapping(address => uint) public balance; enum Estado { Iniciado, Finalizado } Estado public estadoDelContrato; constructor() { estadoDelContrato = Estado.Iniciado; balance[msg.sender] = 1000; estadoDelContrato = Estado.Finalizado; } }
    Abidan Triguero Calle

    Abidan Triguero Calle

    student•
    hace 3 años

    RESUMEN CLASE 6: MAPPINGS Y ENUMS

    I.- MAPPINGS

    Es un tipo de almacenamiento de un valor identificado por una clave la cual puede ser de un tipo de dato diferente. Permite acceder al valor directamente desde su clave sin necesidad de iterar todos los valores almacenados.

    II.- ENUM

    Representa una serie de valores creados por el usuario, los cuales van a ser representados externamente por un nombre, pero internamente por un valor entero. Son utilizados principalmente para manejar estados dentro de los contratos.

    REMIX:

    CLASE 6 Imegn1MappingsEnums.png

    Mappings.sol

    // SPDX-License-Identifier: GLP-3.0 pragma solidity >=0.7.0 <0.9.0; contract Saldo { mapping(address => uint) public balance; enum Estado { Iniciado, Finalizado } Estado public estadoDelContrato; constructor() { estadoDelContrato = Estado.Iniciado; balance[msg.sender] = 1000; estadoDelContrato = Estado.Finalizado; } }
      Carlos Rodríguez

      Carlos Rodríguez

      student•
      hace 3 años

      Gran resumen mi amigo.

    Jorge Arribas Castañeyra

    Jorge Arribas Castañeyra

    student•
    hace 4 años

    array --> lista sin indice mapping --> lista con indice

      Rodrigo Ramos Xochiteotzin

      Rodrigo Ramos Xochiteotzin

      student•
      hace 3 años

      Esto es un error. En realidad el array sí es una lista con índices, aquí y en China (en Solidity, como en C, como en Python o JS). El número que pones entre corchetes cuando llamas a un elemento del array corresponde a la posición o al índice que ocupa ese elemento respecto de esa lista. . Por otro lado, el mapping como tal no es una lista. Es más preciso decir que su estructura de datos es un hash map. Éstos no tienen un índice (como sí lo tienen los arrays) para identificar a sus elementos, más bien sus elementos se identifican por una llave que cuyo valor pones entre corchetes cuando lo llamas y te retorna el valor.

    Gustavo Carballo Reyes

    Gustavo Carballo Reyes

    student•
    hace 4 años

    Hola 😃 Tengo una duda, realmente no entiendo muy bien que es lo que hace el constructor, alguien tendra alguna definicion mas basica o sencilla??

      Santiago Leonel Fiebke

      Santiago Leonel Fiebke

      student•
      hace 4 años

      Básicamente, inicializa tus variables con el valor que necesites.

      Omar Francisco Herrera Ortiz

      Omar Francisco Herrera Ortiz

      student•
      hace 4 años

      Es una función en la que se ejecuta código en el momento en el que se "crea" (se hace deploy) el contrato

      Normalmente se usa para darle valor a variables que serán utilizadas más adelante, por eso hay muchos de ejemplos donde se declara la variable owner y dentro del constructor se le da el valor

    HECTOR BECERRIL MEDINA

    HECTOR BECERRIL MEDINA

    student•
    hace 4 años
    Captura de pantalla de 2022-02-18 11-55-09.png
    Alan Viñals

    Alan Viñals

    student•
    hace 3 años
    • Los elementos que no le demos valor, solidity le da un valor por defecto.
    • Cualquier elemento entero que no le hayamos definido un valor, tendrá de valor 0.
      Carlos Rodríguez

      Carlos Rodríguez

      student•
      hace 3 años

      Excelente esos apuntes, es bueno tenerlo presente.

    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 Saldo {

    mapping(address => uint) public balance; // mapedo donde address es // unit para valor positivo que represent su balance // => para separar entre la clave (direccion) y valor ayuda memoria enum Estado { Iniciado, Finalizado } // el enum es el estado de la transccion con 2 estados Estado public estadoDelContrato; // para poder simbolizar el estado debemos declarar una variable del tipo estado // donde almacenaremos el estado actual del contrato de forma TEMPORAL en el momento en que estamos trabajando constructor() { // logica para inicializar balance y estado estadoDelContrato = Estado.Iniciado; balance[msg.sender] = 1000; // declaro un valor inicial para el balance. // este actua por mdio de una cuenta debemos enviar el mensaje. // sender crea el contrato para setearle un balance inicial en este caso de 1000 estadoDelContrato = Estado.Finalizado; }

    }

      Carlos Rodríguez

      Carlos Rodríguez

      student•
      hace 3 años

      Buena.

    HECTOR BECERRIL MEDINA

    HECTOR BECERRIL MEDINA

    student•
    hace 4 años

    mapping: Es un tipo especial de arreglo llamados arreglos asociativos.

    enum: Coleccion ordenada de valores, el primer elemento corresponde con el elemento 0 (cero).

    VICTOR AHUMADA MATOS

    VICTOR AHUMADA MATOS

    student•
    hace 4 años

    no me esta compilando, no se que error tengo que aun estoy peliando con el codigo para que funcione

    no_compila.png

      Sebastian Perez

      Sebastian Perez

      teacher•
      hace 4 años

      Hola Victor, fijate que "estado" lo definiste con minúscula, pero "Estado" lo citaste con mayúsculas, por eso el error

    Fidel Parabacuto

    Fidel Parabacuto

    student•
    hace 2 años

    Hay que practicar y practicar para agarrarle la mano. Les dejo este código comentado de cómo lo entendí yo.

    Nota: probablemente me gaste todo el gas si fuera algo real y la lógica no sería la mejor pero tenía que entender cómo funciona todo

    // SPDX-License-Identifier: MIT pragma solidity 0.8.18; contract TestMappingEnums{ // Mapping que relaciona direcciones con saldos mapping(address => uint) public balance; // Enum que define posibles estados del contrato enum Estado {Iniciado, Finalizado} // Variable que almacena el estado actual del contrato Estado public estadoDelContrato; constructor(){ // Se establece el estado inicial como "Iniciado" estadoDelContrato = Estado.Iniciado; // Se asigna un saldo inicial de 0 al remitente (msg.sender) balance[msg.sender] = 0; } // Función para sumar 1000 al saldo del remitente cada vez que se ejecuta function sumBlance() public{ balance[msg.sender] += 1000; } // Función para cambiar el estado del contrato a "Finalizado" function closeBalance() public{ estadoDelContrato = Estado.Finalizado; } // Función para obtener el saldo del remitente function getBalance() public view returns(uint){ return balance[msg.sender]; } }
    Carlos Rodríguez

    Carlos Rodríguez

    student•
    hace 3 años

    Los enums tienen una importancia significativa, debido a que nos permiten visualizar el estado del contrato, esto a nivel de desarrollo en blockchain es súper fundamental ya que nos permite saber si el código que escribimos estando ya en la red, funciona como lo planificamos.

    Carlos Villamil

    Carlos Villamil

    student•
    hace 4 años

    Algo que ayuda mucho y te va ahorrando tiempo es guardar con el control+s que te compila automáticamente :D

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