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.