Día 12: Mappings: Almacenamiento Eficiente en Smart Contracts

Tabla de contenidos

Bienvenidos al día doce de #SolidityDe0a100. Antes de adentrarnos en el contenido de esta entrega, quiero tomarme un minuto para agradecer a cada una de las personas que están siguiendo esta saga y que, a través de mensajes y conversaciones diversas, me han hecho saber su aprecio por el contenido compartido. Esto me compromete a continuar entregándoles diariamente este contenido con el que paso a paso esperamos llevarlos a una mejor comprensión de la programación de smart contracts. ¡Ahora sí, iniciemos!

En este artículo, vamos a profundizar en el mundo de los mappings (mapeos) en el lenguaje de programación Solidity. Los mappings son una estructura de datos fundamental en Solidity que permite a los desarrolladores crear potentes pares clave-valor para un almacenamiento y recuperación eficientes de datos. Exploraremos la sintaxis, propiedades y uso de los mappings, junto con ejemplos prácticos para mejorar tu comprensión. ¡Así que empecemos y desbloqueemos el potencial de los Mappings en Solidity!

Mapping en Solidity:

 

En Solidity, los mappings se crean utilizando la sintaxis mapping(tipoClave => tipoValor). El tipoClave puede ser cualquier tipo de valor integrado, como address, bytes, string o incluso otro contrato. Por otro lado, el tipoValor puede ser cualquier tipo, incluyendo otro mapping o un array. Los mappings proporcionan una forma eficiente de asociar valores con claves únicas y recuperarlos fácilmente más tarde.

Ejemplo de Contrato Mapping en Solidity:

En este contrato Mapping, hemos definido un mapping llamado myMap que asigna direcciones (address) a enteros sin signo (uint). La función get nos permite recuperar el valor asociado con una dirección específica. Si nunca se estableció un valor para esa dirección, devolverá el valor predeterminado de uint, que es 0. La función set actualiza el valor en una dirección dada y la función remove restablece el valor al valor predeterminado.

Los mappings se vuelven aún más poderosos cuando se usan en forma anidada. Veamos el concepto de mappings anidados con un ejemplo:

En el siguiente contrato NestedMapping, introducimos un mapping anidado llamado nested. Este mapping asigna direcciones (address) a otro mapping, que a su vez asigna enteros sin signo (uint) a booleanos (bool). Esto permite una estructura de almacenamiento bidimensional, lo que facilita el acceso eficiente a los valores según tanto la dirección como el índice entero.

Ejemplo de Contrato NestedMapping en Solidity:

Análisis de los Smart Contracts:

 

Ahora, analicemos el comportamiento y la funcionalidad de los contratos inteligentes proporcionados en detalle.

El contrato Mapping:

 

El contrato Mapping demuestra un escenario básico de uso de mappings. Incluye tres funciones:

  1. get: Esta función toma una dirección _addr como parámetro y devuelve el valor entero sin signo asociado almacenado en el mapping myMap. Si no se estableció ningún valor para la dirección proporcionada, devolverá el valor predeterminado de uint, que es 0.
  2. set: La función set permite a los usuarios actualizar el valor en una dirección específica _addr en el mapping myMap. Toma un entero sin signo _i como el nuevo valor y lo asigna a la dirección correspondiente.
  3. remove: Con la función remove, los usuarios pueden restablecer el valor en una dirección dada _addr en el mapping myMap. Elimina el valor, estableciéndolo de nuevo al valor predeterminado de uint, que es 0.

El contrato NestedMapping:

 

El contrato NestedMapping demuestra el uso de mappings anidados. Incluye tres funciones:

  1. get: Esta función toma una dirección _addr1 y un entero sin signo _i como parámetros y devuelve el valor booleano asociado con el mapping anidado nested. Incluso si el mapping anidado no está inicializado, Solidity devolverá el valor predeterminado de bool, que es false.
  2. set: La función set permite a los usuarios actualizar el valor booleano en el mapping anidado nested. Toma una dirección _addr1, un entero sin signo _i y un booleano _boo como parámetros, y asigna el valor booleano a la dirección y al índice entero correspondientes.
  3. remove: La función remove elimina el valor booleano en una dirección específica _addr1 y un entero sin signo _i en el mapping anidado nested. El valor eliminado volverá al valor predeterminado de bool, que es false.

¡Espero que esta explicación te haya sido útil para comprender los mapping en Solidity y cómo se utilizan en contratos inteligentes! Recuerda siempre compilar e implementar el contrato en una red de desarrollo de Ethereum para interactuar con él.

¡Te invito a que te unas a esta fascinante experiencia en el desarrollo de Smart Contracts en Ethereum!

Ver Video Completo

Más sobre Blockchain & Web3

You cannot copy content of this page

Scroll al inicio

Aplica para el proceso de admisión del programa master emprendimiento blockchain architecture & networks programming

¿Estas preparado para ver como tu carrera profesional se acelera más que nunca? Envíanos tus datos y agendamos tu entrevista. ¡Las plazas son muy limitadas!

Aplica para el proceso de admisión del programa MASTER INGENIERO BLOCKCHAIN FROM WEB2 TO WEB3

¿Estas preparado para ver como tu carrera profesional se acelera más que nunca? Envíanos tus datos y agendamos tu entrevista. ¡Las plazas son muy limitadas!

Próxima Promoción: Abril 2023