Tokens no fungibles (NFT) en el ecosistema Lisk

noviembre 07, 2021 VICTOR HUGO LAZARTE 0 Comments

 


Tutorial de token no fungible (NFT)

Cómo crear una aplicación blockchain que admita NFT. Aprenderá a crear un módulo personalizado que agrega la función para crear y comprar NFT en una aplicación blockchain, y un complemento personalizado que proporciona funciones adicionales relacionadas con NFT.

Fichas fungibles vs no fungibles





Descripción general de la cadena de bloques NFT

En nuestro ejemplo, diseñaremos las siguientes características para la aplicación blockchain:

Como se puede ver en la imagen de arriba, es necesario crear los siguientes componentes:
  1. El módulo NFT (en cadena).

    1. Tres nuevos activos de transacción para el módulo NFT.

  2. El complemento NFT (fuera de la cadena).

Además de la aplicación blockchain, también implementaremos una aplicación frontend , que nos permitirá interactuar con la aplicación blockchain a través de una interfaz de usuario en el navegador.

1. Configuración del proyecto

Cree una nueva carpeta, que contendrá todos los archivos de la aplicación NFT:



A continuación, cree un nuevo archivo, index.jsluego copie y pegue lo siguiente


Este fragmento de código crea una aplicación de cadena de bloques predeterminada, que está configurada para fines de desarrollo. Usaremos esta aplicación como base para la aplicación NFT y la ampliaremos con un módulo y un complemento en los siguientes pasos, para que se adapte al caso de uso deseado.

Crea una nueva carpeta nft_module/y dentro de un nuevo archivo index.js:


Para una mejor descripción, cree un nuevo archivo nft.jsen la nft_module/carpeta.

Ahora abra nft.jsy defina las funciones relacionadas con la NFT, que se utilizarán en los activos y el módulo en los siguientes pasos.

Se implementan las siguientes funciones:

  • registeredNFTTokensSchema: El esquema, cómo se guardan las NFT en la base de datos. Cada NFT tiene las siguientes propiedades:

    • identificación

    • valor

    • ownerAddress

    • minPurchaseMargin

    • nombre

  • CHAIN_STATE_NFT_TOKENS: La clave con la que se guardan las NFT en la base de datos.

  • createNFTToken(): Crea un nuevo NFT en base a la prevista nameownerAddressnoncevalueminPurchaseMarginEl ID para el NFT se crea combinando y aplicando un hash a la dirección del propietario y su 'nonce actual', que en combinación siempre crea un valor único. De esta forma se asegura que cada NFT recién creado tenga un ID único en la base de datos.

  • setAllNFTTokens(): Guarda las NFT proporcionadas en la base de datos.

  • getAllNFTTokens(): Recupera NFT de la base de datos.

  • getAllNFTTokensAsJSON(): Devuelve todos los NFT de la base de datos como JSON.

Es posible que haya notado que usamos parámetros especiales en las funciones, como stateStore_dataAccessEstas variables están disponibles en el módulo y se explican con más detalle en las siguientes secciones La función de aplicación y Acciones .



El usuario tendrá la capacidad de crear, comprar y transferir NFT en la red. Para ello, creamos los activos de transacción correspondientes para el módulo NFT. Cada uno de estos activos de transacción define tanto el esquema de activos para los datos de la transacción como la lógica, cómo se aplican y almacenan estos datos en la base de datos.

3.1. Crear activo NFT

Crea un nuevo archivo create_nft_asset.jsdentro de la transactions/carpeta recién creada .

Ahora abra el archivo y copie y pegue el siguiente código:

Ahora defina todas las propiedades requeridas para el activo de transacción una tras otra.

3.1.1. ID y nombre del activo



3.1.2. Esquema de activos

El esquema de activos describe los tipos de datos requeridos y la estructura de los datos en el activo de transacción respectivo.

Para obtener más información sobre cómo se utilizan los esquemas en la aplicación, consulte la referencia de esquemas .

Para crear una nueva NFT, necesitamos la siguiente información:

  • Nombre: el nombre de la NFT.

  • Valor inicial: el valor inicial del NFT.

  • Margen de compra mínimo: El% del valor del valor inicial, que se suma al valor inicial al comprar el NFT.

Por lo tanto, cree el esquema como se describe a continuación:


Ahora que schemadefine qué datos esperar, podemos usar la validate()función para validar los datos recibidos del activo de la transacción antes de aplicarlo.

3.1.3. La validate()función

Antes de que los datos del activo de la transacción se apliquen en el siguiente paso, use la validate()función para verificar la exactitud de los datos enviados.

La validate()función tiene acceso a:

  • asset: el activo de transacción registrado.

3.1.4. La función de aplicación

La apply()función tiene acceso a:

  • asset: el activo de transacción registrado.

  • stateStore: El almacén de estado es una estructura de datos que mantiene un estado temporal mientras procesa un bloque. Se utiliza aquí para obtener y configurar ciertos datos desde y hacia la base de datos.

  • reducerHandler: Permite al usuario utilizar funciones reductoras de otros módulos dentro de la apply()función.

  • transaction: el objeto de transacción completo.


3.2. Comprar activo NFT

Crea un nuevo archivo purchase_nft_asset.jsdentro de la transactions/carpeta.

De forma análoga a la implementación del createNFTactivo, cree el purchaseNFTactivo pegando el fragmento a continuación.


3.3. Transferir activo de NFT

El último activo de transacción que queremos implementar en este tutorial es la transferNFTtransacción.

Crea un nuevo archivo transfer_nft_asset.jsdentro de la transactions/carpeta. Cree el transferNFTactivo pegando el fragmento a continuación.


4. El módulo NFT

Dentro de la nft_module/carpeta, cree un nuevo archivo index.js.

Abra index.jsy cree el esqueleto, que contendrá todas las partes del módulo NFT:

Ahora defina todas las propiedades requeridas para el módulo una tras otra.

4.1. ID y nombre del módulo

Se recomienda comenzar con los más fáciles: definir el nombre y el ID del módulo.

El ID del módulo debe ser único dentro de la red. El valor mínimo para él es 1024, ya que las otras ID están reservadas para futuros módulos predeterminados del Lisk SDK. Si el ID del módulo no es único, provocará bifurcaciones en la red.

El nombre del módulo también debe ser único dentro de la red; de lo contrario, generará confusión. Por ejemplo, al suscribirse a eventos o invocar acciones de ese módulo.

4.2. El esquema de la cuenta

A continuación, defina el esquema de la cuenta. Esta propiedad define las propiedades que el módulo agrega a cada cuenta de red si se registra posteriormente en la aplicación.

Aquí, esperamos que cada cuenta tenga una propiedad ownNFTs, que es una matriz de NFT que posee la cuenta. Esta vacío por defecto


4.3. Importación de activos de transacciones al módulo

Ahora importemos las transacciones que se crearon en la sección 2: Activos de transacción en el módulo.

Agréguelos a la transactionAssetspropiedad como se muestra en el fragmento a continuación.

La mejor práctica

Es una buena práctica nombrar los activos de transacción importados después de su nombre de clase correspondiente.

En este ejemplo: CreateNFTAssetPurchaseNFTAsset, y TransferNFTAsset.


4.4. Comportamiento

La última característica restante del módulo NFT consiste en crear la siguiente acción getAllNFTTokensque permitirá que el complemento NFT recupere una lista de todos los tokens NFT existentes más adelante.

Para implementarlo, utilizamos la función getAllNFTTokensAsJSON(), que se ha descrito en la sección Funciones relacionadas con NFT .

La variable this._dataAccessse pasa como parámetro. Esta variable está disponible en todo el módulo y se utiliza actionspara acceder a los datos de la base de datos.


5. El complemento NFT

Ahora que toda la lógica en cadena para los NFT está definida en el módulo NFT, agreguemos un complemento NFT correspondiente, que manejará la lógica fuera de la cadena para la aplicación NFT.

El complemento NFT proporcionará una API HTTP que ofrece nuevos puntos finales para datos relacionados con NFT de la cadena de bloques.

Navegue fuera de la nft_modulecarpeta de nuevo a la blockchain_appcarpeta.

Si aún no lo ha hecho, agregue un autor a su package.jsonarchivo. Esta información se utilizará más adelante en el complemento.

Abra index.jsy cree el esqueleto, que contendrá todas las partes del complemento NFT:


Para obtener una descripción general mejorada, primero, cree otro archivo que contendrá las funciones relacionadas con la base de datos del complemento. Aquí, usamos un almacén de clave-valor para guardar los datos, similar a cómo se guardan los datos relacionados en la cadena en el almacén de clave-valor predeterminado de la aplicación blockchain.

Crea un nuevo archivo db.jsCopie y pegue el siguiente fragmento en el archivo recién creado db.js.

db.js contiene varias funciones que se ocupan de los siguientes aspectos:

  • getDBInstance(dataPath,dbName): Crea un nuevo almacén de valores-clave nft_plugin.dbpara el complemento NFT. El almacén de valores clave se utiliza para almacenar información de la cadena de bloques relacionada con NFT del complemento en un esquema que lo hace convenientemente accesible para servicios de terceros.

  • saveTransactions(db, payload): Guarda nuevas transacciones en la base de datos.

  • getAllTransactions(db, registeredSchema): Devuelve una lista de todas las transacciones de la base de datos.

  • getNFTHistory(db, dbKey): Devuelve el historial del propietario de una NFT.

  • saveNFTHistory(db, decodedBlock, registeredModules): Filtros para transacciones del módulo NFT en el bloque decodificado. Actualiza el historial de NFT según la transacción de NFT encontrada en el bloque. Guarda el historial del propietario individual para las NFT correspondientes en la base de datos.

5.2. La lógica del complemento

Ahora regrese index.jse implemente la lógica del complemento deseada.

El complemento proporcionará los siguientes datos adicionales a la aplicación:

  • una lista de todas las NFT existentes y su historial de propietario correspondiente.

  • detalles de una NFT, incluido el historial del propietario, por ID de NFT.

  • una lista de todas las transacciones, incluidos sus ID de módulo y activo y el activo de la transacción.

Para crear estos datos, el complemento necesita escuchar eventos para nuevos bloques en la aplicación blockchain. Cuando se crea un nuevo bloque, el complemento verifica si el bloque contiene transacciones y, de ser así, las guarda en el almacén de valores clave del complemento. En caso de que el bloque contenga transacciones del módulo NFT, también actualizará el historial del propietario de las NFT en la tienda de clave-valor.

Luego crearemos un servidor HTTP y también crearemos los puntos finales de API requeridos para entregar los datos a la aplicación frontend.

Todo esto se definirá dentro de la load()función. Todo el código dentro de la load()función es ejecutado por la aplicación blockchain cuando carga el complemento.

El código de la unload()función se ejecuta en complemento por la aplicación blockchain cuando descarga el complemento.

6. Registro de módulo y complemento

Ahora que se han implementado el módulo y el complemento NFT, es necesario informar a la aplicación blockchain sobre ellos.

Esto se hace registrándolos con la aplicación blockchain como se muestra a continuación.

Abra el nft/blockchain_app/index.jsarchivo nuevamente y copie y pegue el siguiente código:

Guarde y cierre el index.js.

Ahora, cuando la aplicación se inicie nuevamente con node index.js, la aplicación blockchain cargará el módulo NFT recién creado y los complementos y las nuevas funciones estarán disponibles para la aplicación blockchain.

En el siguiente paso, crearemos una interfaz React simple, que nos permite interactuar con la aplicación blockchain a través del navegador.

7. Aplicación frontend

La parte final de la aplicación NFT es la aplicación frontend.

El desarrollo de la aplicación frontend es completamente flexible y puede utilizar cualquier pila de tecnología con la que se sienta cómodo.

En este ejemplo, usamos React para construir la aplicación cliente.

Este tutorial trata principalmente de explicar cómo construir con Lisk SDK, por lo tanto, otras partes de la aplicación frontend no se explican con mucho detalle aquí. Puede encontrar más información sobre cómo crear una aplicación React, por ejemplo, en la documentación oficial de React .

Para mayor comodidad, clone la developmentrama del lisk-sdk-examplesrepositorio de GitHub y use la aplicación NFT frontend_app preparada de los ejemplos de sdk

En este punto, ahora es posible probar la interfaz y verificar que la aplicación NFT blockchain funciona como se esperaba:

Primero, abra una segunda ventana de terminal y navegue hasta nft/blockchain_appAhora inicie la aplicación blockchain con node index.js, si aún no se está ejecutando.

En la primera ventana de terminal, inicie la aplicación frontend con lo siguiente:


Esto debería abrir la aplicación React en el navegador en http: // localhost: 3000 / .

7.1. Caminata frontal

Antes de explorar el código de la aplicación de interfaz, primero hagamos un recorrido por la interfaz en el navegador para ver cómo funciona todo en conjunto.

Realizaremos lo siguiente:

  1. Crea 3 cuentas diferentes.

  2. Envíe una cantidad inicial de tokens a cada cuenta.

  3. Cree un nuevo NFT con la primera cuenta.

  4. Transfiera el NFT recién creado a la segunda cuenta.

  5. Compre el NFT con la tercera cuenta.

  6. Cree un segundo NFT con la primera cuenta, que no se puede comprar.

En las capturas de pantalla de ejemplo, usamos las siguientes credenciales de cuenta:

Sin embargo, también puede crear nuevas credenciales mediante el Create Accountcuadro de diálogo:


7.1.1. La pagina de inicio

La página de inicio es la página de destino que ve al abrir la aplicación de interfaz http://localhost:3000/en el navegador.



En el primer inicio de la aplicación, la página está bastante vacía. Sin embargo, una vez que hayamos creado las primeras NFT, la página de inicio mostrará todas las NFT existentes y sus detalles.

En la barra superior, hay un enlace al explorador de transacciones, que muestra una lista de todas las transacciones que están incluidas en la cadena de bloques. Actualmente, también debería estar vacío, ya que aún no hemos enviado ninguna transacción.

En la parte inferior derecha, hay un botón que se puede utilizar para abrir los diferentes cuadros de diálogo para crear una nueva cuenta, transferir tokens de una cuenta a otra y, lo más importante, para crear nuevas NFT.

Para poder crear y comprar un nuevo NFT, una cuenta debe tener algunos tokens en el saldo de la cuenta. Por lo tanto, primero debemos transferir algunos tokens a las cuentas creadas.

7.1.2. Transferencia de fondos

Haga clic en el Transfer tokenscuadro de diálogo y transfiera una cantidad adecuada de tokens a las cuentas de demostración descritas anteriormente. En nuestro ejemplo, transferimos 2000 tokens a la cuenta del artista y 1000 tokens cada uno a las cuentas de coleccionista.

Para la contraseña, use la contraseña de la cuenta de génesis, haciendo clic en el botón Use genesis accountAhora haga clic en Send fundsEsto enviará los tokens especificados de la cuenta de génesis a la cuenta especificada en el Recipient Addresscampo.

Esto publicará una transacción de transferencia correspondiente a la aplicación blockchain.

Es posible verificar que la transacción fue incluida en un bloque observando los registros de la aplicación blockchain:

Registros de la aplicación blockchain cuando se publica una transacción válida en el nodo
15:20:56 INFO lisk-framework: transacción agregada al grupo (módulo = lisk: aplicación) { "id": "b9d81d996886f28d2f9fd102c2d8407dc86df941eeea0b03c004080e0f100f27", "nonce": "0", "senderPublicKey": "836d4f07c7db6d10c84394c60549d3f95cf61354e2ab5b0965a3fe7120e2f70d" } 15:21:00 INFO lisk-framework: Nuevo bloque agregado a la cadena (module = lisk: app) { "id": "f6d2ee7cb0e76938340f0b8a946389d518e7f27c062759f2c78f47d2841a7010", "altura": 787, "numberOfTransactions": 1 }

7.1.3. Creando una nueva NFT

Ahora que todas las cuentas tienen algunos tokens en el saldo de su cuenta, use la frase de contraseña de la cuenta del artista para crear un nuevo NFT.


Después de aproximadamente 10 segundos, la NFT debería aparecer en la página de inicio, después de actualizar la página.

En la parte inferior de la tarjeta NFT, el usuario ahora tiene la opción de transfero purchaseNFT.


7.1.4. Transferencia de una NFT


Para probar la Transfer NFTopción, transfiera el NFT ahora a la cuenta Collector1:


Debe utilizar la frase de contraseña del propietario actual de la NFT para firmar esta transacción.


Si una cuenta diferente a la del propietario intenta transferir el NFT, la aplicación arrojará un error An NFT can only be transferred by the owner of the NFT., que definimos previamente en la sección de activos de TransferNFT 

7.1.5. Comprar un NFT

Para probar la Purchase NFTopción, compre el NFT con la cuenta Collector2:

Ahora espere nuevamente 10 segundos, para ver el propietario actualizado y el historial de la NFT.


Haga clic en las direcciones de las cuentas en el historial de NFT para ver los detalles de la cuenta correspondiente en una nueva página:


Detalles de la cuenta de Collector1

En la página de la cuenta de Collector2, ahora se incluye NFT.

Observe de cerca la Token valuepropiedad, que ha aumentado de 120 a 132 debido a la compra.

7.1.6. El explorador de transacciones

Haga clic en el Transactionsenlace de la barra superior para ir al explorador de transacciones.

Aquí puede ver una lista de todas las transacciones, que se han publicado en la red hasta el momento, incluidos algunos detalles como su módulo respectivo y el nombre del activo, la dirección del remitente y el ID de la transacción.





7.1.7. Creación de NFT no adquiribles

Para familiarizarse más con el proceso, juegue un poco más con la aplicación NFT creando más NFT.

Por ejemplo, también es posible crear NFT no adquiribles estableciendo el margen mínimo de compra en cero.

Eso es todo, el recorrido de la interfaz en el navegador ahora está completo.

A continuación, echemos un vistazo a las partes más importantes de la aplicación frontend, con respecto a la lógica relacionada con blockchain.

Al principio, defina múltiples funciones que obtengan datos de la API HTTP de la información de la cadena de bloques.

La aplicación NFT blockchain ofrece dos API HTTP diferentes:

Usaremos tanto las API como sus puntos finales proporcionados para recuperar o publicar los siguientes datos:

  • Información general de blockchain

    • fetchNodeInfo(): Devuelve información sobre el nodo conectado.

    • fetchAccountInfo(address): Devuelve detalles de una cuenta específica, según su dirección.

    • sendTransactions(tx): Envía un objeto de transacción especificado txal nodo.

  • Información relacionada con NFT

    • fetchAllNFTTokens(): Obtiene una lista de todas las NFT registradas en la red.

    • fetchNFTToken(): Devuelve detalles de un NFT específico, según su ID.

    • getAllTransactions(): Devuelve una lista de todas las transacciones registradas en la red.


    7.3. Funciones para crear transacciones

    La utils/carpeta de la aplicación frontend almacena ciertas funciones de utilidad para crear los diferentes tipos de transacciones.

    Las funciones se utilizarán en los cuadros de diálogo siguientes para crear y enviar los objetos de transacción en función de los datos del formulario en el cuadro de diálogo.

    Las transacciones se crean y firman utilizando el signTransaction()del @liskhq/lisk-clientpaquete.

    El nonce de cada transacción se recupera de la cuenta del remitente ejecutándose fetchAccountInfo()desde la sección de funciones relacionadas con la API .

    7.3.1. Crear NFT


7.3.2. Compra NFT


7.3.3. Transferir fondos



7.3.3. Transferir fondos

7.3.4. Transferir NFT



7.4. Diálogos

7.4.1. Crear diálogo de cuenta

El cuadro de diálogo para crear una cuenta crea nuevos detalles de la cuenta cada vez que se abre.

Tenga en cuenta que estos detalles de la cuenta solo se crean localmente y aún no están incluidos en la cadena de bloques.

Para incluir una cuenta en la cadena de bloques, simplemente envíe algunos fondos a la cuenta con el cuadro de diálogo Transferir fondos .

Para crear los detalles de la cuenta, se utilizan la biblioteca passphrasecryptographydel @liskhq/lisk-clientpaquete.


7.4.2. Crear cuadro de diálogo NFT

El cuadro de diálogo Crear NFT permite al usuario crear una nueva NFT.

Presenta un formulario donde un usuario puede ingresar toda la información importante para crear el NFT:

  • Nombre : el nombre de la NFT.

  • Valor inicial del token : el valor inicial del token. El monto se debitará del saldo de la cuenta que crea el NFT.

  • Margen mínimo de compra : el margen mínimo en%, que se suma al valor del token en la compra.

  • Tarifa : la tarifa de transacción por la createNFTtransacción.

  • Frase de contraseña: la frase de contraseña de la cuenta que crea el NFT.

Luego usa la createNFTToken()función que definimos en la sección Crear NFT para crear la createNFTtransacción y la sendTransactions()función de la sección de funciones relacionadas con la API para publicar la transacción en la aplicación blockchain.

7.4.3. Comprar cuadro de diálogo NFT

El cuadro de diálogo de compra de NFT permite al usuario comprar una NFT existente.

Presenta un formulario donde un usuario puede ingresar toda la información importante para comprar el NFT:

  • Token Name (precargado): el nombre de la NFT.

  • ID de token (precargado): el ID de la NFT.

  • Valor de compra : el valor que el comprador desea pagar por el NFT. Para obtener ayuda, el margen de compra mínimo válido para este NFT en particular se muestra a continuación.

  • Tarifa : la tarifa de transacción por la purchaseNFTtransacción.

  • Frase de contraseña: la frase de contraseña de la cuenta que compra el NFT.

Luego usa la purchaseNFTToken()función que definimos en la sección Comprar NFT para crear la purchaseNFTtransacción y la sendTransactions()función de la sección de funciones relacionadas con la API para publicar la transacción en la aplicación blockchain.

7.4.4. Diálogo de transferencia de fondos

El cuadro de diálogo de transferencia de fondos permite a un usuario transferir tokens de una cuenta a otra.

Presenta un formulario donde un usuario puede ingresar toda la información importante para transferir los tokens:

  • Dirección del destinatario : la dirección base 32 de la cuenta que recibe los fondos.

  • Cantidad : la cantidad de tokens que se transfieren.

  • Tarifa : la tarifa de transacción por la transfertransacción.

  • Frase de contraseña: la frase de contraseña de la cuenta que envía los fondos.

Luego usa la transfer()función que definimos en la sección Transferir fondos para crear la transfertransacción y la sendTransactions()función de la sección de funciones relacionadas con la API para publicar la transacción en la aplicación blockchain.

7.4.5. Cuadro de diálogo Transferir NFT

El cuadro de diálogo Transferir NFT permite al propietario de una NFT transferir la NFT.

Presenta un formulario donde el propietario actual puede ingresar toda la información importante para transferir el NFT:

  • Token Name (precargado): el nombre de la NFT.

  • ID de token (precargado): el ID de la NFT.

  • Dirección del destinatario : la dirección base 32 de la cuenta que recibe el NFT.

  • Tarifa : la tarifa de transacción por la purchaseNFTtransacción.

  • Frase de contraseña: la frase de contraseña del propietario de la NFT.

Luego usa la transferNFT()función que definimos en la sección Transferir NFT para crear la transferNFTtransacción y la sendTransactions()función de la sección de funciones relacionadas con la API para publicar la transacción en la aplicación blockchain.


7.5. Componentes

En React, los componentes son como funciones de JavaScript. Aceptan entradas arbitrarias (llamadas "props") y devuelven elementos React que describen lo que debería aparecer en la pantalla.

Para el frontend definimos los siguientes componentes:

  • HomePage: Un componente para renderizar la página de inicio .

  • NFTToken: Un componente para renderizar una NFT que incluye sus detalles y acciones relacionadas.

  • TransactionsPage: Un componente para renderizar el explorador de transacciones .

  • AccountPage: Un componente para representar la página de la cuenta .

  • Account: Un componente para representar detalles en una cuenta específica.

Los ejemplos de código para los componentes HomePageNFTTokense pueden encontrar a continuación.

Direcciones de cuenta en la interfaz

Como es de su conocimiento, la dirección de la cuenta puede ser representado en diferentes formatos, tales como bytesBufferhexLisk32.

El Lisk32formato es la representación más legible por humanos de una dirección de cuenta y, por lo tanto, los usuarios de la aplicación solo deberían ver esta dirección en la interfaz de usuario.

Puede encontrar más información sobre los diferentes formatos de datos en la página de referencia de esquemas .

7.5.1. Componente NFT

El componente NFT presenta la siguiente información:

  • Nombre : el nombre de la NFT como título.

  • ID de token : el ID único de la NFT.

  • Valor del token : el valor actual del token.

  • Margen mínimo de compra : el margen mínimo en%, que se suma al valor del token en la compra.

  • Propietario actual : el propietario actual de la NFT.

  • Historial de NFT : el historial completo del propietario de NFT.

Este componente hace uso de los creados anteriormente PurchaseNFTTokenDialogTransferNFTDialog cuadros de diálogo y agregados ellos en la parte inferior del NFT.

7.5.2. Componente de la página de inicio

El componente de la página de inicio muestra la siguiente información:

Una lista de todas las NFT existentes, representada como componente NFT .

Los NFT se obtienen utilizando la fetchAllNFTTokens()función de las funciones relacionadas con la API .

Resumen

¡Eso es todo! Ahora debería tener una aplicación de cadena de bloques NFT de ejemplo completa en ejecución, que incluye:

  • una aplicación blockchain con

    • un módulo personalizado para manejar NFT.

    • un complemento personalizado que agrega funciones adicionales para las NFT.

  • una aplicación de interfaz que le permite usar y probar las aplicaciones en el navegador.

  • Fuente: tutorials de Lisk


















  Tutorial de token no fungible (NFT) Cómo crear una aplicación blockchain que admita NFT.  Aprenderá a crear un módulo personalizado que ag...