AtomicAssets: Estructura del estándar de NFT más popular de la blockchain.

Marcos DK
eosbarcelona
Published in
8 min readNov 2, 2020

Pink Network, uno de los principales productores de bloques de WAX blockchain, ha desarrollado un smart contract para tokenizar activos digitales que, tras el éxito del ya revisado en anteriores publicaciones smart contract de CryptoLions (SimpleAssets), se está posicionando de forma arrolladora como el nuevo estándar para NFTs.

Existen diferencias muy importantes entre los smart contracts de CryptoLions y de Pink Network. La más importante es que AtomicAssets, de Pink Network, solo contempla los NFTs mientras que SimpleAssets puede utilizarse tanto para FTs como para NFTs.

Aparte de esta importante diferencia cabe destacar que el éxito del smart contract AtomicAssets se debe, sin duda, al sistema de clasificación de los assets y a la enorme cantidad de información que recoge cada NFT acuñado, lo cual lo hace realmente versátil para infinidad de aplicaciones.

Organización de los NFT en AtomicAssets

Para acuñar NFTs con el smart contract de AtomicAssets es necesario definir en primer lugar la estructura de nuestra colección de assets. Para entender esta estructura vamos a utilizar un ejemplo imaginario para un posible video juego.

Supongamos que quiero desarrollar un juego multijugador RPG llamado “Total WAX MRPG”. En este juego los jugadores podrán escoger personajes de juego y podrán equiparlos con prendas de vestir y con armas. Todo el conjunto de NFTs que se empleen en el juego estarán dentro de una colección que llamaré, por ejemplo, “totalwaxmrpg” (siguiendo las normas de creación de nombres en WAX blockchain; hasta 12 caracteres, leras y números del 1 al 5y el símbolo del punto).

Puedo hacer una serie de agrupaciones de assets dependiendo de atributos compartidos. Aunque tenga varios tipos de personajes para jugar todos ellos tendrán los mismos atributos: nombre, fuerza, destreza, vigor, etc. Lo mismo me puede pasar con el vestuario; sin importar si estamos hablando de botas o de guantes todas las prendas del guardarropa del juego seguirán un esquema determinado de atributos: defensa, desgaste, modificadores de magia, defensa o ataque, etc. Y lo mismo podría pasar con las armas. De esta manera estamos creando esquemas generales a grupos de assets gracias a los atributos compartidos.

En último lugar podrá darse el caso de que un artículo, como puede ser “Espada del Destino Siniestro” no sea un objeto único, sino que pueda lograrse como recompensa múltiples veces y por diferentes jugadores en las misiones del juego. Para ello habrá que diseñar una plantilla en la que se asignarán los valores concretos del modelo de asset a partir de los atributos especificados en su plantilla.

De esta forma, cada NFT acuñado lleva la información de la plantilla desde la cual ha sido forjado, el esquema con los atributos que puede tener (o que puede llegar a tener*) y la colección a la que pertenece.

*Toda esta información se almacena con datos inmutables, pero mediante software es posible añadir y modificar la información de los datos mutables del NFT, siempre y cuando esos datos hayan sido definidos en el esquema del mismo. Esto permite a los juegos u otro tipo de aplicaciones extender la utilidad del asset más allá de un contenedor fijo.

Otro de los atributos de un NFT que han hecho que el smart contract AtomicAssets sea tan aclamado (sobre todo entre los coleccionistas) es su control sobre el orden en que el asset ha sido acuñado; el número “mint”. Cuanto más bajo sea su número, más valor se le da en el mercado de compra/venta.

Cómo crear la colección de NFTs con el smart contract AtomicAssets en AtomicHub

El proceso de creación de la colección, una vez iniciada sesión en atomichub.io, sería el siguiente:

Haciendo click en NFT Creator iremos a la sección de creación de los NFT, como indica su nombre, viendo por ahora únicamente la opción de crear una colección nueva. Al hacer click en “Create New Collection” pasaremos a la definición de nuestra colección:

  • Podremos seleccionar una imagen desde nuestro ordenador para que identifique a la colección.
  • Daremos un nombre a la colección respetando las reglas de creación de nombres en WAX.
  • Podemos definir un Display Name, esto es; un nombre más humanizado para la colección.
  • Conviene detallar una pequeña descripción de la colección en donde podemos incluir información extra que consideremos importante para el conocimiento de los visitantes.
  • También podemos añadir una URL a la página principal de nuestro proyecto.
  • El Market Fee especifica el % de beneficio que podremos obtener con cada operación de compra/venta que se realice en los mercados secundarios de NFT independientemente de quién sea el vendedor o el comprador.

Por defecto esta es toda la información que podemos especificar de la colección pero, si hacemos clic sobre “Show advanced details” podremos acceder a dos campos muy interesantes:

  • Authorized Accounts: Sirve para especificar los nombres de las cuentas que podrán estar autorizadas para gestionar los NFT con los mismos privilegios que el creador. Esto resulta muy útil si queremos ceder el control de los assets a otros smart contracts como “atomicdropsx”, un smart contract que se utiliza para acuñar los NFT bajo demanda y que, debido a su enorme popularidad, abordaremos en una próxima entrega.
  • Notify Accounts: Permite añadir nombres de cuentas que podrán recibir una notificación cada vez que se realice una transacción con un NFT perteneciente a esta colección. Es útil para realizar seguimientos de nuestros assets desde uno o varios smart contract que acompañen el proyecto.

Si volvemos al NFT Creator podremos ver la colección creada y, haciendo clic en “View Collection”, podremos abordar la creación de los esquemas.

AtomicAssets NFT Creator: Agrupando atributos en esquemas.

La función de los esquemas es la de especificar todos los atributos que tendrá cada uno de los NFT que se acuñen bajo el mismo, ya sean datos inmutables o datos mutables. En nuestro ejemplo, para el esquema “personajes” he dejado los atributos “name” e “img” (aparecen por defecto y si queremos que la imagen principal del asset y su nombre sea vistos en los markets deberemos dejarlos como están) y he añadido dos más, “fuerza” y “destreza”, que no volveré a utilizar más en este artículo ya que se trata de datos mutables (cambian durante el juego) y será el propio código del juego quien se encargue de gestionarlos. Todos los atributos que van a ser utilizados en el NFT, tanto mutables como inmutables así como si recibirán un valor desde el inicio o lo recibirán desde una posible aplicación, deben ser definidos en el esquema del NFT.

Si más tarde nos percatamos de que necesitamos algún atributo más será posible editar el esquema para añadirlo pero, ojo; ¡no podremos cambiar el nombre de los existente ni borrarlos!

Los atributos de un esquema pueden ser de diversos tipos de datos; texto, números con signo o sin signo, enteros, decimales, direcciones IPFS para las imágenes, etc.

Una vez definido el esquema podemos hacer clic en “Create Schema” para crearlo y podremos volver hacia atrás en el NFT Creator para continuar creando más esquemas o empezar con las plantillas de los NFTs.

Plantillas en el NFT Creator de AtomicAssets: Reutilización de datos.

Una vez definido el esquema con los atributos que serán empleados en un NFT ya nos es posible acuñarlo haciendo clic en el botón “Mint New Asset”. Esto sería válido si tan solo vamos a acuñar uno o muy pocas unidades de NFTs. Si, por el contrario, estamos pensando en tiradas más numerosas o en agilizar el proceso, será buena idea crear una plantilla o “template”.

Para ello podremos pulsar sobre el botón “Create New Template” y se nos abrirá la siguiente ventana:

Uno de los campos es la imagen principal que podremos incluirla en la plantilla de varias formas:

  • Haciendo clic en el recuadro de imagen y seleccionándola desde nuestro equipo.
  • Indicando un IPFS hash en el campo de imagen.
  • Escribiendo una URL normal a la ubicación en internet donde tengamos la imagen alojada.

Max Supply representa el número de unidades que podrán acuñarse máximo de este NFT. Si lo dejamos en blanco o a 0 podrán acuñarse de forma indefinida.

El smart contract de AtomicAssets incorpora una acción a la cual podemos llamar de forma manual para limitar en cualquier momento el número posible de NFTs acuñables al número actual de NFTs existentes. Esto sería como “cerrar” la creación de un NFT. El valor máximo de assets se actualizará al total de acuñados independientemente de lo que indicáramos en el momento de crear la plantilla.

Podremos especificar si el asset podrá ser transferido entre usuarios (ya sea mediante compra/venta o por transferencia directa) y si queremos permitir que el asset pueda ser destruido por su propietario (Burn).

Siguiendo con nuestro ejemplo, si los atributos “fuerza” y “destreza” queremos que sean datos mutables que nuestro juego modifique debemos tener cuidado y dejarlos sin rellenar en la plantilla. De lo contrario los crearía como datos inmutables.

Ahora ya tenemos nuestra plantilla creada y podemos empezar a acuñar NFTs a partir de ella.

Mint: Acuñando NFTs con el smart contract AtomicAssets

Haciendo clic en “Mint New Asset” podremos acuñar un nuevo NFT de cualquiera de las plantillas de nuestro esquema. En la lista desplegable bajo “Templates” tendremos un listado de todas las plantillas disponibles.

Debemos especificar el destinatario del asset (nosotros mismos u otro usuario) y el número de unidades que queremos acuñar. Los atributos que han sido declarados en la plantilla ya no pueden ser modificados y, aunque nos deje modificar los que dejamos en blanco, si lo hacemos ¡pasarán a ser datos inmutables!

Ahora nuestros nuevos NFTs estarán en nuestro inventario (o en el inventario de la cuenta de destino) y ya podrá comenzar a operar con él en una aplicación o en los mercados de assets.

--

--

Marcos DK
eosbarcelona

Programador y creador de contenidos digitales. Profesor de informática, game dev y líder de 3DK Render, WAX Guild.