Cómo creamos 50000 NFTs únicos para Polkadot Decoded 2022 (en un mes)

w3n:guido
Parity Technologies | Español
11 min readMar 19, 2023

Traducción en Español del Artículo: How we created 50K Unique NFTs for Polkadot Decoded 2022 (in one month) (Octubre 4, 2022) / Parity Technologies: parity.io

Colaboradores del blog:

Simon Telezhkin, Visual 3D Designer de Parity Technologies
Ignasi Albero, Brand Lead de Web3 Foundation
Hamid Alipour, Fullstack Product Engineer de Parity Technologies

Para Polkadot Decoded 2022, se nos ocurrió la idea de ofrecer a los asistentes presenciales y online algo muy especial: ¡su propio y único NFT! Sigue leyendo para saber más sobre este concepto de regalo y sobre cómo nuestro equipo creó una colección de 50000 avatares diferentes -que representan el pluralismo y la innovación del ecosistema Polkadot- en tan solo un mes.

La idea detrás de los NFT del evento

Aunque a todo el mundo le gusta recibir stickers geniales en los eventos, para Polkadot Decoded 2022 queríamos dar a los asistentes algo más exclusivo que llevarse a casa.

Elegimos un NFT generado proceduralmente, que permitía a cada asistente tener su propio avatar único, creando una enorme colección entre los miembros de la comunidad que asistieron a Polkadot Decoded. Todos los NFT servían como prueba de asistencia. Queríamos dar a la gente un objeto de coleccionista para recordar el evento. Por lo tanto, los NFT se diseñaron para que no se vendieran (tú tampoco venderías tu pulsera de tu festival de música favorito, ¿verdad?).

Con diferentes niveles de NFT, la rareza de los recuerdos dependía de la antelación con la que la gente se inscribiera. Los que se inscribieron entre los 1000 primeros tuvieron derecho a los NFT más exclusivos, que podían reclamar mediante un código enviado por correo electrónico durante el evento Polkadot Decoded.

Cómo diseñó Simon los 50000 NFT de Polkadot Decoded

El diseñador visual 3D Simon Telezhkin, que se había incorporado a Parity pocas semanas antes del evento, se metió de lleno en el proyecto cuando le pidieron que creara 50000 NFT únicos para Polkadot Decoded.

Ideó un plan para crear 50000 NFT en el plazo previsto. Entre la creación, el renderizado y la finalización del arte, se necesitan meses de trabajo, y Simon sólo tenía un mes hasta el evento.

Mientras pensaba en procesos que le ahorraran tiempo, pensó en renderizar con máscaras para dar a ciertas partes de la imagen un color diferente u optar por granjas de render. Pero ambos métodos podían dar como resultado tener que crear aún más imágenes, trabajar con toneladas de datos o acabar con NFT de formas demasiado parecidas (sólo con variaciones de color).

Así es como llegó al pixel art: una estilización divertida que se adaptaba a todos los requisitos del proyecto NFT.

Simon creó las piezas con la herramienta gratuita Blender. Aunque prefiere Houdini como su DCC (Digital Content Creation), Blender resultó ser una gran herramienta para crear piezas modulares y renderizar. Así fue el proceso de creación:

Paso 1. Creación de un sistema modular para los personajes

Simon empezó separando las distintas partes de cada personaje droide modular:

  1. Parte superior con la cara y la máscara
  2. Parte inferior con la barbilla, el cuello y los hombros
  3. Parte central con las orejas, viseras y laterales
  4. Parte trasera con la cabeza
  5. Ropa

Al crear 50000 imágenes de 5 módulos, todo lo que necesita son 9 variaciones para cada módulo para obtener (⁹⁵=)59049 variaciones. Sin embargo, no todos los módulos se crean igual. Si sólo cambias las orejas, el pelo y la ropa pero dejas la parte superior e inferior de la cara igual, dos versiones pueden parecerse bastante. Como MVP esto funciona, pero Simon estaba decidido a aportar más variedad a los personajes. Lo que nos lleva al siguiente paso.

Paso 2. Combinar todas las piezas modulares

Aunque es imposible cambiar manualmente el atributo de visibilidad a múltiples objetos cincuenta mil veces, puedes instalar el plugin FZRandomizer 3 — un complemento de Blender que te permite aleatorizar personajes y otros objetos de malla. Aunque el plugin carecía de estabilidad al trabajar con 50000 imágenes, era rápido, capaz de hacer archivos JSON, y de trabajar con probabilidades.

Paso 3. Un poco de YouTube y un poco open-source

Para el renderizado, Simon optó por una combinación de renderizado de luz en ciclos, conversión a datos de sombreado y renderizado de nuevo. Esta idea se inspiró en este tutorial de Mezaka. Mientras que el plugin de Mezaka se ralentizaba después de 3000 imágenes, open-source vino al rescate. Con unos pocos cambios en el código, Simon fue capaz de rehacer los shaders, e implementar controladores para cambiar los colores y materiales en función de la renderización de fotogramas.

Pallets, únicos y más: Configuración de la Colección NFT

Los NFT (abreviatura de Non-Fungible Tokens) son activos únicos que no son intercambiables y que pueden utilizarse para registrar la propiedad de cualquier activo único no fungible en el libro mayor de la blockchain. En el framework de Substrate, el módulo de blockchain (pallet) que almacena y gestiona los activos NFT se denomina “Uniques”, y es una forma mucho más segura de mintear.

Mientras que la mayoría de las redes blockchain utilizan smart contracts que se ejecutan sobre la blockchain, en Polkadot, la pallet Uniques es un módulo compuesto como parte de la propia blockchain que proporciona la funcionalidad básica para crear colecciones y artículos NFT. Esto aporta un mayor nivel de seguridad, ya que sólo hay una implementación en la cadena cuya seguridad está auditada y ya ha sido probada por muchos proyectos.

En cambio, los ecosistemas basados en smart contracts utilizan un csmart contract distinto para cada proyecto de NFT. Esto aumenta la posibilidad de que se produzcan errores o puertas traseras durante el desarrollo, por lo que cada proyecto debe auditarse y verificarse por separado.

Otra gran cosa sobre la pallet Uniques es que es muy fácil para cualquiera crear su propia colección NFT on-chain, sin mucho desarrollo o depender de terceros desarrolladores para construir smart contracts (ya que no hay necesidad de desarrollar y desplegar ningún smart contract).

Para las NFT de Polkadot Decoded, optamos por la pallet Uniques para poder dedicar todos nuestros esfuerzos a las obras de arte, y no a desarrollar smart contracts. Al fin y al cabo, publicar 50000 NFT ya era suficiente trabajo de por sí. Por suerte, esta no era nuestra primera colección de esta envergadura, por lo que podíamos hacer uso de las herramientas de automatización que creamos para colecciones anteriores (sigue leyendo para saber más sobre estas herramientas open-source).

Con la pallet Uniques como pallet elegida, lo último que había que considerar era si mintear la colección NFT en Polkadot o en Kusama. Actualmente, la pallet está desplegada como módulo en parachains de bien común tanto en Polkadot (Statemint Parachain) como en Kusama (Statemine Parachain). Kusama resultó ser la opción más rentable en aquel momento.

💡 Conviene saber
La pallet Uniques tiene la intención de proporcionar la funcionalidad básica NFT fuera de la caja y permite a todos crear su propia colección NFT. En la próxima versión de la pallet, “Uniques V2”, se añadirá más funcionalidad básica. La intención es mantener la funcionalidad básica en la pallet, que puede ampliarse mediante parachains de la comunidad para casos de uso más personalizados, como NFT componibles y juegos. Más información sobre las parachains de NFTs.

Es hora de que Hamid haga el Minteo los 50000 NFTs!

Cuando las obras de arte estuvieron listas, llegó el momento de que Hamid minteara los NFT.

Si se hiciera manualmente, mintear 50000 NFT únicos en la cadena sería un proceso muy largo y engorroso. Por suerte, Hamid disponía de una herramienta cli para automatizar todo el proceso de minteo.

Le mostraremos los pasos manuales necesarios para crear una colección y mintear los NFT y, a continuación, cómo se utilizó la herramienta cli para automatizar el proceso de minteo.

Paso 1. Crear una colección

Usando la pallet Unique, creamos una llamada uniques.create, que crea una colección con un id de colección que puede ser usado para mintear los ítems en esa colección.

Paso 2. Distribuir los NFT

Utilizando las direcciones de correo electrónico de todos los asistentes a Polkadot Decoded, pudimos enviar un código secreto de regalo que la gente podía utilizar en esta página para reclamar su NFT. Cada código estaba formado por números aleatorios (más información sobre el proceso de creación aquí) utilizados como semillas en el llavero para derivar los pares de claves de la cuenta y sus direcciones correspondientes, que luego podrían utilizarse como la dirección del propietario de cada NFT preimpreso.

Paso 3. Mintear todos los NFT

Utilizando la llamada uniques.mint, es el momento de mitear finalmente todos los NFT. Durante el minteo, cada artículo se asignará a una dirección. Cuando se reclamen los códigos secretos de los NFT, la aplicación de reclamación comprobará si la dirección correspondiente deriva de ese código secreto y transferirá todos los NFT y activos. La aplicación de reclamación permite al destinatario crear una nueva cuenta a través de la aplicación o seleccionar una cuenta existente de Polkadot-JS Extension o Parity Signer wallet.

Paso 4. Establecer todos los metadatos

Una vez creados (o miteados) los elementos NFT en la blockchain, es necesario establecer los metadatos para cada elemento. Estos metadatos enlazan con un archivo JSON que contiene el nombre de la NFT, la descripción y la URL de la imagen. Hemos utilizado el siguiente formato, que es compatible con la mayoría de los monederos e interfaces de usuario.

{
"name": "name of the item",
"description": "A human readable description of the item. Markdown is supported."
"image": "This is the URL to the image of the item. Can be just about any type of image (including SVGs, which will be cached into PNGs by OpenSea), and can be IPFS URLs (ipfs://ipfs/<CID>) or paths.",
}

Paso 5. Almacenar los metadatos de forma segura

Para almacenar los metadatos y cualquier activo relacionado, utilizamos un almacenamiento descentralizado como IPFS (InterPlanetary File System). Para esta colección, almacenamos los metadatos en IPFS y utilizamos Pinata para fijar nuestros activos en IPFS.

Pinning en IPFS se refiere al concepto de que un servidor, o grupo de servidores, garantiza mantener siempre almacenada la información de modo que los archivos nunca se eliminan de la red.

Aunque IPFS es un sistema de almacenamiento descentralizado, entre iguales, y los datos se almacenan en caché en los nodos IPFS, a veces los nodos pueden borrar los datos antiguos para hacer sitio a nuevos contenidos. El anclaje garantiza que, en cualquier momento, los archivos estén disponibles en al menos un servidor (o unos cuantos) para que la red IPFS pueda acceder a ellos. Puedes alojar tu propio servidor IPFS o utilizar un servicio de terceros, como Pinata, que ofrece el pinning como servicio.

Al almacenar y pinear activos, obtendrás una dirección para esos archivos en IPFS. Éstas se denominan CID (Content ID) y pueden utilizarse para recuperar los activos a través de las IPFS gateways.

Paso 6. Crear CIDs de metadatos

Repasemos todos los pasos uno a uno:

  1. Cargar la imagen de cada NFT en IPFS
  2. Obtener el CID de esa imagen en IPFS
  3. Crear un archivo JSON con el nombre, la descripción y un enlace al CID de la imagen
  4. Sube ese archivo json a IPFS
  5. Obtener el CID del archivo metadata.json en IPFS
  6. Utilice la llamada setMetadata de la paleta Uniques para establecer los metadatos NFT en el CID de IPFS.

Un ejemplo de metadatos de nuestra campaña:

{
"name": "Polkadot Decoded 2022 POAPs Tier 1",
"image": "ipfs://ipfs/QmPotLZPgW9AvNzuNGB24zVqbWY9eP7Sbrzk3KCdydyB66",
"description": "The Polkadot Decoded NFTs were minted and distributed as POAPs for Polkadot Decoded v3 that was held on June 29th and 30th, 2022, with a fully hybrid experience of online and in-person events. All those who registered were able to claim a one of a kind, unque NFT that they could additionally use as their avatar for the conference. Each tier varied in how rare the NFTs were, with tier 1 being the most rare, then tier 2, tier 3, and so on."
}

Cuando las wallets o las interfaces de usuario de NFT quieren recuperar y presentar una NFT, van a la blockchain y encuentran el CID de ese archivo metadata.json, que está almacenado en la pallet Uniques. A continuación, analizan la información -utilizando el CID de la “image” para recuperar los activos NFT reales- y los presentan en la interfaz de usuario.

Paso 7. Automatizar con nuestra herramienta cli

Si todas las NFT fueran iguales, sólo tendríamos que establecer un metadato para toda la colección llamando a uniques.setCollectionMetadata. Sin embargo, para nuestra enorme colección necesitábamos generar y subir 50000 imágenes a IPFS, obtener sus CID y generar 50000 metadatos para cada NFT en blockchain llamando a uniques.setMetadata.

Hacer esto manualmente habría sido una pesadilla. Por suerte, no tuvimos que hacerlo gracias a nuestra herramienta cli, que automatizó este proceso.

Cómo utilizamos la herramienta cli:

  1. Poner la información NFT en un archivo .csv
  2. Definir el flujo de trabajo de minteo en un archivo JSON, que está configurado para utilizar ese archivo .csv como archivo de datos
  3. Llamar al cli para ejecutar el flujo de trabajo definido

Estos pasos automatizan todo el flujo de trabajo: desde la creación de la colección hasta el minteo de artículos, secretos y direcciones para regalos, la carga de imágenes en IPFS, la generación de metadatos para cada NFT, la carga en IPFS y, por último, la configuración de los metadatos en una paleta Uniques para cada artículo, tal y como se ha descrito anteriormente.

Con todas estas operaciones, el minteo tardaba aproximadamente un segundo por NFT, por lo que los scripts se ejecutaban durante casi 13 horas en total. Afortunadamente, todo estaba automatizado, por lo que el minteo se realizó durante la noche y estuvo lista para ser distribuida el primer día de Polkadot Decoded.

Proyecto finalizado: Conozca a los felices propietarios

Después de Polkadot Decoded, se reclamaron 25.000 NFT de distintos niveles, ¡lo que dio lugar a muchos nuevos propietarios felices! La colección completa puede verse aquí. A continuación, podrás ver algunos de los NFT minteados y sus nuevos propietarios.

--

--

w3n:guido
Parity Technologies | Español

Polkadot Ambassador / Global Lead & On-Chain Council Member of Polimec Foundation https://x.com/web3sir