No tienes acceso a esta clase

¬°Contin√ļa aprendiendo! √önete y comienza a potenciar tu carrera

Aprende todo un fin de semana sin pagar una suscripci√≥n ūüĒ•

Aprende todo un fin de semana sin pagar una suscripci√≥n ūüĒ•

Regístrate

Comienza en:

0D
23H
17M
36S

Arquitectura de una Dapp en Solana

6/20
Recursos

La arquitectura y las tecnologías que se implementan en el desarrollo de aplicaciones descentralizadas, o dapps, difiere enormemente del desarrollo de software convencional. Entender este nuevo paradigma de desarrollo de software, sus similitudes y diferencias con el tradicional, nos ayudará a ser mejores como profesionales Web3.

Desarrollo de software Web2 vs. Web3

Con la aparici√≥n de las tecnolog√≠as Blockchain en el a√Īo 2009 de la mano de Satoshi Nakamoto y Bitcoin, al d√≠a de hoy, se ha creado y contin√ļa evolucionando un nuevo paradigma para el desarrollo de aplicaciones descentralizadas. Las dapps (descentralize applications), son aplicaciones que funcionan de forma distribuida haciendo uso de diferentes servicios descentralizados que ninguna organizaci√≥n en particular controla, son administrados por toda una comunidad.

Blockchain es el principal servicio descentralizado que se utiliza como base de datos para persistir información y tener inmutabilidad en los mismos. Pero, las aplicaciones descentralizadas van más allá de Blockchain, existe todo un esquema de tecnologías que se usan y que podemos comparar con el desarrollo de software tradicional para entender el gran cambio y conocimiento que debemos tener para desarrollar este tipo de apps.

Web2 (apps) Web3 (dapps)
Front-end Angular, React, Vue, etc. Angular, React, Vue, etc.
Backend API Rest (Python, NodeJS, PHP, etc) Smart Contracts (Rust, Solidity, C/C++, otro)
Protocolo HTTP, HTTPS JSON RPC
Clientes Fetch, Axios, etc. @solana/web3.js, Ether.js, otro
Cloud AWS, Azure, Heroku, etc. Solana, Ethereum, BNB, etc.
BBDD MySQL, MongoDB, etc. Blockchain, IPFS, otro
Auth User/Pass, OAuth, etc. Wallets (Phantom, Metamask, etc.)
Repositorio P√ļblico/Privado P√ļblico en GitHub

El √ļnico factor que podemos observar que no ha cambiado son las tecnolog√≠as front-end que se utilizan. Contin√ļa vigente Angular, React, Vue o cualquier otra tecnolog√≠a de Javascript para el desarrollo de interfaces gr√°ficas. En el backend comienzan los cambios. Las t√≠picas API Rest que conocemos y que solemos desarrollar en Python, NodeJS, Java u otro lenguaje, se convierten en contratos inteligentes desarrollados en Rust, Solidity, C/C++, dependiendo la Blockchain en la que trabajemos.

El protocolo para comunicar el backend y el front-end también cambia transcendentalmente. Ya no utilizamos HTTP, utilizamos JSON RPC (Remote Procedure Call). Las librerías o clientes que utilizamos también difieren. En el paradigma Web2, usamos cualquier tipo de Cliente HTTP, ahora utilizamos Clientes JSON RPC.

Los servidores donde desplegamos nuestras aplicaciones, como AWS, Google Cloud Platform, Azure, o cualquier otro de preferencia, ya no existen. Los contratos inteligentes son desplegados directamente en la Blockchain de forma descentralizada.

La persistencia de información también es tarea de la Blockchain en cuestión que estemos usando. Es posible utilizar otros servicios descentralizados como IPFS para desplegar aplicaciones front-end o bancos de imágenes.

Finalmente, los m√©todos de autenticaci√≥n. Con un usuario y contrase√Īa ingresamos a cualquier aplicaci√≥n que necesitemos usar. O es posible implementar otros protocolos como OAuth para autenticarnos con nuestra cuenta de Google o Twitter. La Wallet pasa a ser nuestro principal mecanismo de seguridad a los datos e identificaci√≥n.

Que el código fuente de una aplicación descentralizada se encuentre en un repositorio OpenSource, también es un factor más que importante para descentralizar y generar confianza en un proyecto. Un contrato inteligente, cuyo repositorio sea privado, no será para nada bien visto.

Aplicaciones híbridas

No necesariamente una aplicación será 100% Web2, o 100% Web3. Podemos encontrar, y seguro trabajaremos en, aplicaciones híbridas que utilizan componentes de ambos paradigmas.

Grado de descentralización de aplicaciones

Podemos necesitar desarrollar reglas de negocio donde el usuario se autentique con usuario y contrase√Īa a trav√©s de servicios centralizados y desplegados en AWS, pero parte de la l√≥gica y la informaci√≥n de la app sea mediante contratos inteligentes y Blockchain.

Evaluación de descentralización de una aplicación

Medir el grado de descentralización de una aplicación nos permitirá evaluar que tan centralizada o no sea la misma. Que tan cerca o lejos se encuentre del paradigma Web2 o Web3. Dependiendo la necesidad, nos enfocaremos más o menos en las tecnologías de cada lado.

Conclusión

Un rotundo cambio de paradigma y parecieran ser demasiadas tecnologías y conceptos que debemos conocer para trabajar en Web3. Poco a poco podrás interiorizar las diferencias entre ambos mundos y convertirte en todo un profesional Blockchain.

El conocimiento que ya tienes de Web2, se complementa con conocimiento Web3. Uno no quita al otro, trabajan en conjunto y el nuevo paradigma Web3 agrega más tecnologías y nos exige ser profesionales más completos.


Contribución creada por: Kevin Fiorentino (Platzi Contributor).

Aportes 3

Preguntas 2

Ordenar por:

¬ŅQuieres ver m√°s aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

La arquitectura para el desarrollo de una DApp en Solana no deja de ser muy similar a la de Ethereum.
Los contratos inteligentes son el backend de la aplicaci√≥n. El front-end (Angular, React, Vue) es una app com√ļn y corriente, pero en lugar de utilizar clientes HTTP, se utilizan clientes JSON RPC, Solana Web3 es el cliente por excelencia para DApp en esta arquitectura. Finalmente, toda la comunicaci√≥n y autorizaci√≥n para el env√≠o de una transacci√≥n se realiza por medio de una Wallets. En Solana se suele utilizar Phantom, as√≠ como se utiliza Metamask en Ethereum.

En mi caso me especializo en Angular, pero sé que React es más popular y se utiliza mucho más. Bienvenido sea tener que aprender algo nuevo!

Soy team Vue js jejejejjeje muy facil para manejar estados.