Día 4: Comprendiendo Tipos de Datos en Solidity

Tabla de contenidos

Hoy es nuestro cuarto día de #SolidityDe0a100, y exploraremos “Los Tipos de Datos Primitivos en Solidity”. Sé que muchos están ansiosos por comenzar a construir contratos inteligentes, pero les aseguro que si dominan bien los fundamentos básicos, al final de esta serie podrán considerarse Desarrolladores Blockchain. Así que no se apresuren, más bien disfruten del recorrido. También les recuerdo que comenten y den “like” a cada uno de los episodios de esta serie, ya que esto servirá como constancia para poder otorgar a cada participante su respectivo NFT, que garantizará su participación y podrá ser validado directamente en la Blockchain.

Solidity es un lenguaje de programación utilizado para escribir contratos inteligentes en la blockchain de Ethereum, y los tipos de datos juegan un papel crucial en la definición y manipulación de la información. Comprender los tipos de datos primitivos es fundamental para construir contratos inteligentes robustos y eficientes.

En este artículo, exploraremos los tipos de datos primitivos en Solidity, incluyendo boolean, uint256, int256 y address. Además, examinaremos un contrato inteligente de ejemplo que utiliza estos tipos de datos para obtener una comprensión práctica de su uso.

Boolean: Tomando Decisiones

Comencemos con el tipo de dato booleano. Las variables booleanas pueden tener uno de dos posibles valores: true o false. Se utilizan para representar condiciones lógicas y son esenciales para la toma de decisiones dentro de los contratos inteligentes. La palabra clave bool se usa para definir variables booleanas en Solidity. En nuestro contrato de ejemplo Primitives, tenemos una variable booleana llamada boo que se establece en true. Esta variable puede ser accedida por cualquier persona y proporciona transparencia en el estado del contrato. Los desarrolladores pueden utilizar variables booleanas para controlar el flujo de ejecución, validar condiciones y habilitar o deshabilitar ciertas funcionalidades dentro de sus contratos.

Enteros sin signo: Desde 0 hasta el Infinito

Solidity ofrece una variedad de tipos de enteros sin signo (uint) que representan números enteros no negativos. La palabra clave uint va seguida de un número que indica la cantidad de bits utilizados para almacenar el valor. Por ejemplo, uint8 utiliza 8 bits, permitiendo valores entre 0 y 2^8-1.

Nuestro contrato Primitives muestra el uso de uint8, uint256 y el tipo genérico uint. La variable u8 se le asigna un valor de 1, mientras que u256 y u se establecen en 456 y 123, respectivamente. La palabra clave uint es un alias de uint256 en Solidity.

Los enteros sin signo se utilizan comúnmente para representar cantidades, saldos, marcas de tiempo y otros valores no negativos dentro de los contratos inteligentes. Elegir el tipo de entero apropiado en función del rango y la precisión requeridos es crucial para optimizar los costos de gas y garantizar la integridad de los datos.

Enteros con signo: Números Positivos y Negativos

Los tipos de enteros con signo (int) en Solidity permiten representar números enteros tanto positivos como negativos. Al igual que con los enteros sin signo, la palabra clave int va seguida de la cantidad de bits utilizados para almacenar el valor. Por ejemplo, int8 puede representar valores desde -2^7 hasta 2^7-1. En el contrato Primitives, hemos utilizado int8, int256 y el tipo genérico int. La variable i8 se le asigna un valor de -1, mientras que i256 e i se establecen en 456 y -123, respectivamente. Cabe destacar que int es un alias de int256 en Solidity.

Los enteros con signo son útiles cuando se trata de valores que pueden ser tanto positivos como negativos, como saldos de cuentas, clasificaciones o mediciones que pueden tener diferentes signos. Elegir el tipo de entero con signo adecuado según el rango requerido es crucial para realizar cálculos precisos y evitar problemas de desbordamiento o subdesbordamiento, si quieres saber mas acerca de esta vulnerabilidad te invito a leer Overflow and underflow.

Direcciones: Identificando Participantes

En aplicaciones descentralizadas, es esencial identificar e interactuar con los participantes en la cadena de bloques. Solidity proporciona el tipo de dato address para representar direcciones de Ethereum. Una dirección es un valor de 20 bytes que puede contener la dirección de una cuenta externa o la dirección de un contrato.

En nuestro contrato Primitives, declaramos una variable address llamada addr con una dirección de Ethereum predefinida. Las direcciones se utilizan comúnmente para enviar y recibir Ether, interactuar con otros contratos e implementar mecanismos de control de acceso dentro de los contratos inteligentes.

Byte: Secuencias de Datos

Solidity ofrece dos tipos para manejar datos de bytes: arreglos de bytes de tamaño fijo y arreglos de bytes de tamaño dinámico. En nuestro contrato, mostramos el uso de un arreglo de bytes de tamaño fijo con bytes1. El tipo bytes1 representa un solo byte y puede contener valores que van desde 0x00 hasta 0xFF. Los bytes y arreglos de bytes son útiles cuando se trata de datos binarios, como hash criptográficos, identificadores de contenido IPFS o cualquier otra secuencia de bytes. Proporcionan flexibilidad para manipular y acceder a bytes individuales dentro de la estructura de datos.

Valores Predeterminados: Manejando Variables no Asignadas

Cuando se declaran variables en Solidity sin asignarles un valor, automáticamente se les asigna un valor predeterminado. Este comportamiento es esencial para evitar que variables no inicializadas causen un comportamiento inesperado dentro de los contratos inteligentes.

En nuestro contrato Primitives, tenemos varias variables no asignadas que demuestran los valores predeterminados para diferentes tipos de datos. La variable defaultBoo de tipo bool se le asigna false, defaultUint de tipo uint se le asigna 0, defaultInt de tipo int se le asigna 0, y defaultAddr de tipo address se le asigna 0x0000000000000000000000000000000000000000.

Al comprender los valores predeterminados de diferentes tipos de datos, los desarrolladores podemos garantizar una inicialización adecuada y manejar eficazmente las variables no asignadas dentro de nuestros contratos inteligentes.

Aquí tienes un ejemplo de código en Solidity en el que implementamos un contrato inteligente para demostrar el uso de los tipos de datos primitivos mencionados anteriormente:

Este es un contrato simple que muestra cómo declarar e inicializar diferentes tipos de datos primitivos en Solidity. Es importante tener en cuenta que este ejemplo es meramente ilustrativo, ya que en aplicaciones reales, estos tipos de datos se utilizarían en contextos más complejos y funcionales dentro de los contratos inteligentes. Te recomiendo probar cada uno de los fragmentos que vayamos viendo en Remix, para que puedas experimentar de primera mano su funcionamiento. Además, te sugiero que agregues nuevas variables y modifiques la funcionalidad del código proporcionado, ya que es así como realmente se aprende a programar.

¡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