Resumen de la clase:
Web 3 stack:
- Blockchain
- Ambientes de desarrollo para blockchain
- Almacenamiento de archivos
- API (indexing y querying)
- Identidad
- Client-side (frontend) frameworks y librerías
- Oráculos
Graduación
Proyectos desarrollados por los estudiantes
Introducción al Ethereum Developer Program
¿Cómo convertirse en blockchain developer?
¿Qué es el Ethereum Developer Program?
Ethereum Developer Program: Plan de Contenido
Ethereum Developer Program: Guía de estudio
Semana 1: Importancia del Manejo de Memoria
Importancia del Manejo de Memoria
Importancia del Manejo de Memoria: Actividades
Cómo se almacenan los datos en Ethereum
Semana 2: Web3-react
Salto de Web2 a Web3: React
Salto de Web2 a Web3: Actividades
Web3 Stack
¿Qué es Web3-React y cómo usarlo en tu próximo proyecto?
Semana 3: Ethereum Virtual Machine y Criptografía
Infraestructura y Funcionamiento de la Ethereum Virtual Machine
Fundamentos de Criptografía y EVM
Criptografía y Funcionamiento de la Ethereum Virtual Machine: Actividades
Semana 4: Creando tu primer Smart Contract
Crea tu primer smart contract
Crea tu primer smart contract: Actividades
Semana 5: Solidity
Aprendiendo Solidity desde cero
Superando la primera etapa del Ethereum Developer Program
RETO: NFT dinámicos con datos Off Chain
Semana 6: Tokens y Tokenización
Tokens y Tokenización
Semana 7: Testing Tools y Despliegue
Testing Tools y Despliegue: Actividades de la semana
Testing Tools y Despliegue
Semana 9: Auditoría y Seguridad de Smart Contracts
Auditoría y Seguridad de Smart Contracts
Auditoria y Seguridad de Smart Contracts: Resumen y actividades
Semana 10: Integraciones en Web3: Web3.js vs. Ether.js
Integraciones en Web3: Web3.js Vs Ether.js
Semana 11: Monetización para Blockchain Developers
Monetización para Blockchain Developers
Recursos Adicionales
Consideraciones de seguridad para smart contracts
Memory vs. Storage en Solidity
Convierte tus certificados en títulos universitarios en USA
Antes: $249
Paga en 4 cuotas sin intereses
Termina en:
Angela Ocando
Lectura
Al construir una app se suele contar con un conjunto de servicios y herramientas que se usan para hacer el trabajo y lograr que la app funcione, a este conjunto se le conoce como stack. 🧱
Para la mayoría de las aplicaciones tradicionales -o lo que podemos llamar web2- los componentes necesarios son:
En web3, en cambio, las cosas no son iguales, dado que representa un paradigma totalmente distinto y el ecosistema aún está en una fase inicial y en constante evolución.
Primero tratemos de entender qué rayos es web3. En internet puedes encontrar muchas definiciones, cada una desde una perspectiva distinta, pero enfocado a desarrollo se puede entender que…
“Web3 es el conjunto de protocolos que hacen posible construir aplicaciones totalmente descentralizadas”.
Las aplicaciones descentralizadas tienen características propias, como por ejemplo:
Este nuevo tipo de apps da origen a un paradigma de desarrollo distinto, con el cual se pueden crear mejores soluciones que pueden llegar a reemplazar las aplicaciones actuales. ¿Ahora todo será web3? 🤔 . No realmente; web3 y las aplicaciones descentralizadas es muy útil en determinados casos de uso, pero no en todos, así que depende de lo que estés construyendo.
Bien, ya sabes qué es web3. Es momento de conocer ese conjunto de herramientas que te ayudan a desarrollar. El web3 stack se puede dividir en las siguientes categorías.
Veamos a detalle cada uno de ellos. 🧐
Existe un gran número de blockchains en las cuales puedes construir. No hay una que sea la mejor, sino que cada una tiene sus propias características y ecosistema. En el estado actual del ecosistema, el mejor lugar para iniciar puede ser aprendiendo de Solidity, Ethereum y la Ethereum Virtual Machine (EVM).
Solidity te permite comenzar a desarrollar no solo para Ethereum, sino también para soluciones de capa 2 o sidechains como Polygon y Optimism, además de otras blockchains compatibles con la EVM como Avalanche, Celo, entre otras.
Otra opción con gran popularidad es Rust. Este lenguaje es utilizado en blockchains como Solana, NEAR y Polkadot.
Pero como se mencionó anteriormente, existen muchas blockchains que tienen una buena comunidad, tecnología y utilidad. Algunos ejemplos son:
Una vez has decidido que blockchain usar necesitarás un endpoint RPC para poder recibir y transmitir información hacia la blockchain. Las formas en que puedes lograr esto son:
Las primeras 2 opciones no son muy usadas. Los endpoints públicos no suelen ser estables y pueden representar un punto de ruptura para tu app. Correr un nodo propio requiere la utilización de un equipo dedicado a esta tarea y su mantenimiento no suele ser labor sencilla.
La opción más empleada es utilizar un servicio que funcione como proveedor. Entre las opciones más comunes podemos encontrar:
Y otra opción menos empleada, pero también válida, es usar un proveedor descentralizado.
Para el ecosistema de Ethereum y la EVM existen diversos ambientes de desarrollo que puedes utilizar.
Por otro lado, si te interesa el ecosistema de Solana, una buena opción de ambiente de desarrollo es Anchor. Anchor ofrece las herramientas necesarias para construir, desplegar y hacer testing de tus programas que escribas para Solana.
Al desarrollar en web3 necesitas un lugar para almacenar imágenes, videos y demás archivos que use tu app. Y en este momento es posible que pienses, “¿no se supone que los datos se guardan en blockchain?” 🤔 , pues no, al menos no todo. Almacenar archivos grandes on-chain puede ser costoso y no suele ser la mejor opción.
En cambio, existen protocolos que nos permiten hacer este almacenamiento de datos.
Otras opciones que te permiten almacenar datos de forma off-chain son:
Estas opciones aún no están completamente establecidas y enfrentan retos como brindar datos en tiempo real, la resolución de conflictos, documentación y mejorar la experiencia de desarrollo. Pero son plataformas que podrían tomar mayor relevancia a futuro.
La forma en que una aplicación interactúa con blockchain es muy diferente a como lo haría con una base de datos tradicional. La mayoría de las blockchains están optimizadas para operaciones de escritura, pero leer su información, en cambio, es un poco complicado.
En una aplicación tradicional cuentas con una base de datos con información indexada y organizada de manera eficiente para poder ordenar, filtrar, hacer búsquedas y otros tipos de consultas.
En web3 no puedes hacer esto directamente desde la blockchain, pero sí desde un protocolo especifico para esto: The Graph. Este protocolo te permite indexar y hacer consultas, además de construir APIs, llamadas subgraphs, a partir de los datos de blockchain para facilitar su consumo.
En las aplicaciones de web2 la autenticación casi siempre se basa en la información personal del usuario. Esta información generalmente se recopila a través de un formulario o un proveedor de OAuth que le pide al usuario que la entregue a cambio de acceder a la aplicación.
En web3, el paradigma es totalmente distinto, la identidad se define en relación con el concepto de wallets o billeteras. Para un usuario de cripto su billetera es una llave -criptográfica- que le da acceso a blockchain.
Como desarrollador debes aprender cómo interactuar con la billetera del usuario, así como solicitar acceso para firmar transacciones hacia blockchain.
Para aplicaciones web y si el usuario tiene instalada la extensión de navegador de alguna billetera puedes encontrar el elemento dentro del contexto del navegador como window.ethereum
o window.solana
dependiendo de la blockchain.
Una de las principales herramientas para interactuar con las billeteras es WalletConnect.
Ethereum Name Service es otro sistema de gestión de identidad popular. Para interactuar con él puedes usar la librería ens.js
Solana’s Wallet Adapter en el caso de que estés en el ecosistema de Solana.
Para la creación de un frontend la mayoría de los frameworks y/o librerías de JavaScript son compatibles con las herramientas de desarrollo blockchain. Aún así gran parte de los proyectos están desarrollados con React.
Entre las librerías más usadas para interactuar con Ethereum se encuentran web3.js y ethers.js.
En Solana puedes usar Solana-Web3.js o Anchor. Anchor es el que ha tenido más adopción recientemente.
Los oráculos permiten a los desarrolladores acceder para leer datos del mundo real y sistemas externos desde un contrato inteligente.
Por ejemplo, la mayoría de las aplicaciones financieras requieren conocimiento de datos y eventos del mundo real que ocurren fuera de la cadena, por lo que los oráculos son especialmente importantes en DeFi.
Chainlink permite el acceso a datos del mundo real y computación fuera de la cadena mientras mantiene las garantías de seguridad y confiabilidad inherentes a la tecnología blockchain.
Flux es otro oráculo que proporciona contratos inteligentes con acceso a fuentes de datos económicamente seguras.
💡 Para mayor referencia, visita el texto original de Nader Dabit: Defining the web3 stack
Aportes 1
Preguntas 1
Resumen de la clase:
Web 3 stack:
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?