Cálculo y Diseño del ADN en PlatziPong NFTs
Curso de Dapps: Introducción al Desarrollo de Aplicaciones Descentralizadas
Contenido del curso
Arquitectura de DApps
Setup del proyecto
- 7

Setup de Proyectos Blockchain con Node.js y Yarn
04:32 min - 8

Instalación y configuración de Hard Hat para contratos inteligentes
11:07 min - 9

Compilación y despliegue de contratos inteligentes con Hard Hat
04:31 min - 10

Actualización de Testnets en Ethereum: Goerli y Sepolia
01:52 min - 11

Despliegue de Contratos Inteligentes en Redes de Prueba con Hard Hat
13:52 min - 12

Manejo seguro de llaves privadas en proyectos blockchain con .env
07:47 min - 13

Alternativas a Hard Hat para Desplegar Contratos Inteligentes
09:04 min
Desarrollo del contrato inteligente
- 14

Implementación de OpenZeppelin en Smart Contracts Ethereum
15:54 min - 15

Extensión de Funcionalidad en Contratos ERC721 con OpenZeppelin
11:04 min - 16

Funciones de Metadata en NFTs y OpenSepaline
20:44 min - 17

Cálculo y Diseño del ADN en PlatziPong NFTs
Viendo ahora - 18

Implementación de contratos inteligentes en Solidity para NFTs
13:44 min - 19

Generación de ADN Pseudoaleatorio en Contratos Solidity
12:01 min - 20

Asignación de ADN y URL de imagen en NFTs con Solidity
16:57 min
Probando nuestro Smart Contract
Conclusión
Cálculo y Diseño del ADN en PlatziPong NFTs
Resumen
Construir un sistema de identidad único para cada NFT requiere mucho más que asignar una imagen al azar. En el caso de los PlatziPunks, cada token posee un ADN numérico que determina sus trece propiedades visuales, desde el color de piel hasta los accesorios. Comprender este mecanismo es clave para programar smart contracts que generen coleccionables verdaderamente únicos.
¿Cómo se genera la imagen de un PlatziPunk a partir de su metadata?
El atributo image dentro del JSON de metadata debe apuntar a una representación visual del NFT. Existen dos caminos principales para lograrlo:
- SVGs on-chain: algunos desarrolladores construyen gráficos SVG directamente dentro del blockchain y los codifican en base64. Es válido, pero considerablemente más complejo.
- API externa: en este proyecto se utiliza una URL pública del dominio
avatars.ioque recibe parámetros y retorna un SVG combinando las facciones del avatar [1:30].
La API ya retorna un SVG listo para usarse. Esto significa que plataformas como OpenSea o cualquier aplicación web pueden insertar esa URL en una etiqueta <image> y mostrar el PlatziPunk sin procesamiento adicional.
¿Qué propiedades componen un PlatziPunk?
Cada PlatziPunk cuenta con trece propiedades combinables [3:08]. Algunas de ellas pueden tener hasta veinte variaciones, mientras que otras solo cuatro o cinco. La combinación de todas estas propiedades es lo que genera la rareza de cada NFT, un concepto fundamental en cualquier colección de coleccionables digitales.
Dependiendo de ciertas condiciones, un atributo puede mostrarse o no aunque esté especificado. Esto añade una capa de aleatoriedad que hace que cada PlatziPunk sea potencialmente irrepetible.
¿Qué es el ADN y cómo se estructura en Solidity?
El ADN es un número secuencial calculado internamente en Solidity, almacenado como un uint256 (unsigned integer de 256 bits) [3:42]. Aunque este tipo de dato soporta números enormes, solo se utilizan los últimos veintiséis dígitos, organizados en trece pares.
Cada par de dígitos corresponde a una de las trece propiedades del PlatziPunk. Con dos dígitos se cubren valores del 0 al 99, suficiente para mapear incluso las propiedades con veinte variaciones.
¿Cómo se extraen los pares de dígitos con operaciones matemáticas?
El procedimiento para separar cada par del número completo se basa en dos operaciones aritméticas: módulo y división entera [4:48].
- Primer par (últimos dos dígitos): se calcula
ADN % 100. El módulo entre cien elimina todo excepto los dos dígitos finales. - Segundo par (penúltimos dos dígitos): se calcula
(ADN % 10000) / 100. El módulo entre diez mil conserva los últimos cuatro dígitos y la división entre cien descarta los dos de la derecha.
En Solidity no existen los números de punto flotante (floating point), por lo que la división entera trunca automáticamente los decimales. Si el resultado intermedio fuera 23.45, Solidity devuelve directamente 23 [5:32].
La regla general es:
- El módulo define cuántos dígitos conservar desde la derecha.
- La división define cuántos dígitos eliminar desde la derecha.
Practicar este procedimiento en papel antes de codificarlo es una recomendación directa, ya que constituye la pieza fundamental del sistema de ADN.
¿Cómo se convierte un número de ADN en un atributo visual?
Una vez extraído el par de dígitos correspondiente, hay que traducirlo a un atributo concreto como un color de piel o un tipo de accesorio [6:25]. Las propiedades están definidas como arreglos dentro del blockchain, y cada arreglo tiene una propiedad length.
El mapeo funciona así:
- Se toma el valor del par de dígitos, por ejemplo
89. - Se aplica
89 % lengthdel arreglo de atributos. - Si el arreglo de colores de piel tiene cierta cantidad de elementos, el resultado será un índice válido dentro del rango.
Por ejemplo, 89 % cantidadDeColores podría dar 5, y el índice cinco correspondería a dark brown [6:58]. Este mecanismo permite que cadenas de ADN diferentes generen atributos similares, lo cual es parte del diseño de rareza de la colección.
Esta arquitectura es completamente personalizable. Si quieres agregar más atributos, basta con extender el ADN utilizando más pares de dígitos del uint256 e incorporarlos en la metadata, un ejercicio excelente para profundizar en Solidity.
¿Has experimentado con sistemas de generación procedural para NFTs? Comparte tu enfoque y las variaciones que has probado.