WEB3DEV Español

Cover image for dApps Web3 punta a punta con NFTs de Algorand y Contratos Inteligentes
Hector
Hector

Posted on

dApps Web3 punta a punta con NFTs de Algorand y Contratos Inteligentes

Este artículo es una traducción de Birhanu Gebisa, hecha por Héctor Botero. Puedes encontrar el artículo original aquí.
Sería genial escucharte en nuestro Discord, puedes contarnos tus ideas, comentarios, sugerencias y dejarnos saber lo que necesitas.
Si prefieres puedes escribirnos a @web3dev_eshttps://twitter.com/web3dev_es en Twitter.

Introducción

La Web3 son protocolos de stacks que permiten la total descentralización de aplicaciones. La tecnología Web3 es inherentemente sobre el control de usuario en el internet. Se está logrando crear tecnologías stack descentralizadas como: blockchains, contratos inteligentes, oráculos, cripto billeteras, redes de almacenamiento y más.

Entendiendo el Negocio

El cliente en este proyecto es 10 Academy el cual, quiere encontrar una solución al problema de crear credenciales seguras para todos los que aprenden e, idealmente, permitir a los dueños de los certificados, lucrar desde las acciones de los contratos inteligentes de ahora y del futuro. Por ahora, los certificados nos lo otorgan como archivos PDF, haciendo imposible confirmar la validez de 10 Academy para tomar las decisiones informadas en relación con los contratos de los aprendices.
10 Academy se ha unido con Algorando para usar el Blockchain de Algorand como un elemento fundacional del NFT y esto, ahora debe ser implementado. La meta de este proyecto era crear dApps Web3 punta a punta en el Blockchain de Algorand que asistirá a 10 Academy en crear y distribuir Tokens no fungibles (NFT) como certificados para los aprendices que completen satisfactoriamente los retos semanales. Estos NFT también permitirán a los aprendices, que los posean, interactuar con un contrato inteligente para llevar a cabo acciones predefinidas.

Web3

Actualmente, los términos “web2” y ”web3” son, relativamente, conceptos nuevos usados para comercializar tecnologías de los blockchain. El blockchain se refiere a la tecnología que almacena y comparte información digital en servidores de redes punto a punto. Aquellos con acceso a la blockchain no pueden alterar o borrar cualquier información existente pero, pueden verla, usar la data existente o añadir nueva data.

Dos tecnologías de blockchain populares son las criptomonedas y los NFT. La tecnología Web3 está enfocada, inherentemente, a ser controlada por el usuario en el internet. La Web3 es atractiva porque permite las interacciones punto a punto sin la necesidad de plataformas centralizadas o intermediarios. Usa el stack de tecnologías, basada en blockchains descentralizadas que permite nuevos negocios y modelos sociales. Los usuarios son dueños de su data, identidad, contenido y algoritmos y participan como “accionistas”, siendo dueños de los tokens del protocolo o de las criptomonedas.

Un número creciente de tecnologías descentralizadas incluyendo los blockchains, contratos inteligentes, oráculos, carteras de criptomonedas, redes de almacenaje y otros, están asistiendo para lograr este objetivo. La Web3 usa un stack de tecnologías, basada en blockchains descentralizadas que permiten nuevos negocios y modelos sociales. Los usuarios son dueños de su propia data, identidad, contenido y algoritmos y participan como “accionistas”, siendo dueños de los tokens del protocolo o de las criptomonedas. La protección de la privacidad, la confiabilidad integrada con los contratos inteligentes off chain y on chain.

Image description

Tecnología Web3

Algorand es un blockchain escalable y de código abierto que ha sido diseñado para hacerlo más fácil para los desarrolladores para construir en un blockchain. Logra confiabilidad a través de la descentralización y herramientas criptográficas, los cuales, se aseguran de la inmutabilidad del registro compartido.

Blockchain: es un sistema, el cual, tiene un registro de transacciones hechas en bitcoin o en otra criptomoneda y es mantenida entre diferentes computadoras que están unidas en una red punto a punto. Un blockchain es un registro digital de transacciones, mantenidas por redes de nodos punto a punto.

Frontend: una aplicación del lado del cliente, que el navegador obtiene desde el servidor del host y es renderizado al usuario. Usualmente, es escrito en Angular, React y en cualquier otro framework famoso.

Backend: una aplicación desde el lado del servidor. Usualmente, una aplicación que toma toda la información lógica pesada, incluyendo la administración de la base de datos, interactúa con el lado del cliente a través del API y es escrito usando alguno de los lenguajes populares del backend: Java, NodeJs, C#, GO, Ruby, Python.

Contratos inteligentes: son fragmentos de códigos que viven en la blockchain. Operan dentro del mismo blockchain y son inalterables. Los contratos inteligentes están basados en el acuerdo entre las partes. Una transacción sucederá si las reglas escritas en los contratos inteligentes son ejecutadas correctamente.

Billeteras: la dirección de la cartera del blockchain sirve como una forma de identidad de un individuo mientras almacena las diferentes criptomonedas del dueño. Estos programas almacenan las llaves públicas y privadas y se comunican con otras redes de blockchain. Estos permitirán rastrear bienes digitales como Bitcoin, Ethereum y Litecoin.

Cuentas: entidades que están en el blockchain de Algorand, asociadas con información específica on chain, como las cuentas. La dirección de Algorand es un identificador de una cuenta de Algorand. Después de generar una llave privada y la dirección correspondiente, enviar Algos a la dirección en Algorand inicializará su estado en la blockchain de Algorand.

Transacciones: una transacción de transferencia de un bien es usada para optar la recepción de un tipo específico del bien estándar de Algorand, transferir un bien estándar de Algorand o revocar un bien estándar de Algorand de una cuenta en particular.

NFT: un token no fungible es un activo financiero hecho de data digital, mantenido en un registro distribuido llamado blockchain. El blockchain registra quién es el dueño de un NFT, el cual, puede ser transferido por su dueño, permitiendo que los NFT sean vendidos e intercambiados.

Capas de las tecnologías stack de la Web3

La Web3 es un protocolo de stacks que permite la total descentralización de aplicaciones y de tecnología stack descentralizada para poder comenzar a construir aplicaciones descentralizadas las cuales, tienen su propio conjunto de implicaciones y características. La tecnología de stack de la Web3 es una combinación de tecnologías y herramientas que son distintas de los stack de la web2. La Web3 reemplaza las bases de datos y tecnologías centralizadas con tecnologías abiertas como los blockchains. Esta es una transacción compleja e intrínseca. La transacción de la arquitectura cliente-servidor en una web descentralizada no es radical.

Image description

Capas de protocolo: en el fondo del stack y formado por la arquitectura blockchain subyacente, sobre el cual todo lo demás se construye. Siguiendo el Bitcoin, llegaron una gama de plataformas de contratos inteligentes de capa 1 como Ethereum, Solana, Avalanche, Cosmos, etc, que sirve como la fundación de muchas de las aplicaciones Web3 que están actualmente en producción.

Infraestructura / Categoría primitivas: la capa de infraestructura se sienta sobre la capa del protocolo y está compuesta de construcciones de bloques interoperables que son muy fiables haciendo tareas específicas. Esta es una capa densa y diversa, con proyectos construyendo todo desde softwares de auditorías de contratos inteligentes, almacenaje de datos, protocolos de comunicación, plataformas de análisis de datos, herramientas de gobernanza de DAOs, soluciones de identidad, primitivas financieras y más.

Capa de servicios: sobre las capas de protocolo e infraestructuras, se encuentra la capa de caso de uso, donde todo se junta. Toma un juego basado en blockchain como Axie Infinity, el cual usa tokens de Ethereum y NFT que pueden ser unidos con un bajo/alto costo a través del side chain.

Capa de acceso / aplicaciones: es una aplicación que sirve como el punto de entrada para todas las actividades de la Web3. La capa de la aplicación del stack web3 incluirá el navegador dapp, el hosting de aplicaciones, la interfaz del usuario y el dapp.

Implementación del certificado del blockchain de Algorand

El objetivo principal de este proyecto es crear dApps punto a punto de Web3 en el blockchain de Algorand que, asistirá a 10 Academy en generar y distribuir certificados de tokens no fungible (NFTs) que simbolizará la finalización exitosa de un reto semanal de un aprendiz y permitirá que los aprendices con NFT interactúen con un contrato inteligente para conducir tareas predefinidas.

Primer paso: configuración de Algorand-Sandbox en Testnet

  • Instala Sandbox

Algorand provee una instancia de docker para configurar un nodo, el cual puede ser usado para iniciar el desarrollo rápidamente. Para instalar y usar esta instancia, sigue estas instrucciones:

Algorand provee un SDK para Python el cual, está disponible como un paquete pip. Para instalar Python SDK, abre un terminal y ejecuta el siguiente comando:

Ejecuta la app en el modo de desarrollador. Abre http://localhost:8080 para verlo en tu navegador. Usa el ejecutador de test en el modo de vista interactiva.

Image description

Paso dos: tecnologías e implementación

Algorand fue la red de blockchain usada para este proyecto. Una red privada local fue iniciada para el desarrollo.

Front end

  • HTML

HTML (HyperText Markup Language) es el código que es usado para estructurar una página web y su contenido. HTML es ampliamente usado para dar formato a páginas web con la ayuda de diferentes tags disponibles en el idioma HTML.

  • CSS

Cascading Style Sheets es un lenguaje de hoja de estilo, usado para describir la presentación de un documento escrito en un lenguaje de marcado como HTML o XML. Se usa para hacer que las páginas web sean más atractivas. La razón para usar CSS es para simplificar el proceso de hacer presentable una página web. Te permite que apliques estilos a una página web.

  • JavaScript

JavaScript es un lenguaje de programación interpretado y ligero. Está diseñado para crear aplicaciones centradas en redes. JavaScript simplemente añade contenido dinámico a páginas web para hacer que se vean bien.

  • React

React es una librería front end JavaScript gratuita y de código abierto para construir interfaces de usuarios basados en componentes UI. Está mantenida por Meta y una comunidad de desarrolladores individuales y de compañías. Su meta es permitir a los desarrolladores que creen fácilmente interfaces de usuario rápidamente para páginas web y aplicaciones. React es un framework de desarrollo frontend o, para ser más específico, una biblioteca que es la favorita entre los desarrolladores en todo el mundo.

Image description

Back end

  • Scripts de Python (Algorand Python SDK)

Este proyecto usó la red blockchain de Algorand y una red vecina privada que comenzó para comenzar el desarrollo. Tres cuentas que pueden ser usadas para financiar otras cuentas nuevas y el desarrollo de aplicaciones, ya han sido creadas en la red secreta.

Python SDK provee métodos simples API para crear, respaldar y recuperar cuentas. Adicionalmente, el SDK puede ser usado para crear y firmar transacciones así como para crear y firmar con cuentas multi firmas. Estos métodos pueden ser usados en operaciones online y offline, ofreciendo opciones de integración extensivas. Finalmente, el SDK también provee endpoints de clientes REST para los dos procesos de los nodos primarios (kmd para la administración de la cartera del nodo y para el procesamiento del protocolo algod).

Los siguientes comandos construyen un objeto de cliente algod conectado con la TestNet Algorand.

purestake_key = 'REPLACE WITH YOUR PURESTAKE API KEY'
endpoint_address = 'https://testnet-algorand.api.purestake.io/ps1'
purestake_header = {'X-Api-key': purestake_key}
acl = algod.AlgodClient(purestake_key, endpoint_address, headers=purestake_header)

El valor de purestake_key debería ser tu llave como se muestra en la página principal de la aplicación de Servicios API PureStake. El encabezado X-Api-key es específicamente requerido cuando se usa el Servicio API PureStake. Reemplaza el encabezado X-Algo-API-Token que se requiere cuando se accede al API del nodo de Algorand directamente.

Los comandos de abajo establecen varios de estos valores de transacciones útiles:

params = acl.suggested_params()
gen_hash = params["genesishashb64"]
first_valid_round = params["lastRound"]
last_valid_round = first_valid_round + 1000
tx_fee = params["fee"]
tx_amount = 10000

Toma en cuenta que este código establece que first_valid_round a la ronda actual o a la altura del bloque y el last_valid_round son 1000 bloques en el futuro. Cuando se crean transacciones Algorand, tienen una validez máxima de 1000 rondas o bloques. Especificamos el monto de la transacción a 10.000.

Prepara y firma la transacción

tx = transaction.PaymentTxn(account_a, tx_fee, first_valid_round, last_valid_round, gen_hash, account_b, tx_amount)
signed_tx = tx.sign(account_a_private_key)

Estos comandos preparan la transacción tx y la firman usando la clave privada mnemotécnica. En este punto, el objeto signed_tx está listo para ser enviado a la red.

Envía la transacción

tx_confirm = acl.send_transaction(signed_tx, headers={'content-type': 'application/x-binary'})
acl.status_after_block(first_valid_round + 2)

La invocación acl.send_transaction envía la transacción firmada.

Toma en cuenta que el tipo de contenido para esta llamada necesita ser cambiada a application/x-binary. Esto es específicamente requerido cuando se usa el Servicio API de PureStake pero, no es requerido cuando es usada directamente en el nodo API. La llamada acl.status_after_block bloqueará la ejecución del programa hasta que dos bloques hayan pasado (aproximadamente 9 segundos). Hacemos esto para asegurarnos que nuestro tx está comprometido a la blockchain antes de continuar con la ejecución de nuestro programa. Sin esta espera, las lecturas subsecuentes pueden que no reflejen la transacción que acabamos de enviar.

Lee el saldo de la cuenta:

result = acl.account_info(account_a)
print(result["address"] + ": " + str(result["amount"]) + " microalgo")

Image description

Lecciones Aprendidas

Pude adquirir mucho más conceptos e implementaciones en una sola semana como:

  • Los Principios de Crear un Proyecto React
  • Crear un proyecto Flask con un patrón de diseño de fábrica
  • Construir componentes React relacionados con la forma
  • Por qué necesitamos WEB3, qué es y cómo funciona el Stacking de la WEB3
  • Configurar sandbox con docker-compose
  • Por qué las carteras de la WEB3 son importantes
  • Las transacciones del Blockchain de Algorand
  • Cómo las carteras pueden ser utilizadas para el inicio de sesión único de una dApp WEB3
  • Qué es un blockchain y lo qué hace único a Algorand en las transacciones de blockchains de Algorand

Trabajos a futuro

Finalmente, tenemos un plan en el futuro para completar el desarrollo del trabajo de arriba, añadiendo las siguientes mejoras:

  • Implementar el MainNet para la generación de certificados.
  • Implementar completamente el contrato inteligente con el blockchain de Algorand.
  • Generar el certificado de imágenes directamente usando una forma como un input.
  • Una forma de asociar privilegios para acceder a más que sólo un recurso de links con el certificado de NFT

Referencias

  1. https://www.gartner.com/en/articles/what-is-web3
  2. https://www.leewayhertz.com/an-overview-of-web3-stack/
  3. https://developer.algorand.org/docs/get-started/dapps/
  4. https://edgeandnode.com/blog/defining-the-web3-stack
  5. https://blog.coinbase.com/a-simple-guide-to-the-web3-stack-785240e557f0
  6. https://edgeandnode.com/blog/defining-the-web3-stack
  7. https://www.purestake.com/blog/algorand-python-sdk/

Discussion (0)