Graduación

1

Proyectos desarrollados por los estudiantes

Introducción al Ethereum Developer Program

2

¿Cómo convertirse en blockchain developer?

3

¿Qué es el Ethereum Developer Program?

4

Ethereum Developer Program: Plan de Contenido

5

Ethereum Developer Program: Guía de estudio

Semana 1: Importancia del Manejo de Memoria

6

Importancia del Manejo de Memoria

7

Importancia del Manejo de Memoria: Actividades

8

Cómo se almacenan los datos en Ethereum

Semana 2: Web3-react

9

Salto de Web2 a Web3: React

10

Salto de Web2 a Web3: Actividades

11

Web3 Stack

12

¿Qué es Web3-React y cómo usarlo en tu próximo proyecto?

Semana 3: Ethereum Virtual Machine y Criptografía

13

Infraestructura y Funcionamiento de la Ethereum Virtual Machine

14

Fundamentos de Criptografía y EVM

15

Criptografía y Funcionamiento de la Ethereum Virtual Machine: Actividades

Semana 4: Creando tu primer Smart Contract

16

Crea tu primer smart contract

17

Crea tu primer smart contract: Actividades

Semana 5: Solidity

18

Aprendiendo Solidity desde cero

Superando la primera etapa del Ethereum Developer Program

19

RETO: NFT dinámicos con datos Off Chain

Semana 6: Tokens y Tokenización

20

Tokens y Tokenización

Semana 7: Testing Tools y Despliegue

21

Testing Tools y Despliegue: Actividades de la semana

22

Testing Tools y Despliegue

Semana 9: Auditoría y Seguridad de Smart Contracts

23

Auditoría y Seguridad de Smart Contracts

24

Auditoria y Seguridad de Smart Contracts: Resumen y actividades

Semana 10: Integraciones en Web3: Web3.js vs. Ether.js

25

Integraciones en Web3: Web3.js Vs Ether.js

Semana 11: Monetización para Blockchain Developers

26

Monetización para Blockchain Developers

Recursos Adicionales

27

Consideraciones de seguridad para smart contracts

28

Memory vs. Storage en Solidity

Convierte tus certificados en títulos universitarios en USA

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

19 Días
4 Hrs
27 Min
51 Seg

Web3 Stack

11/28

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:

  1. API (REST or GraphQL)
  2. Capa de autenticación
  3. Base de datos
  4. Client-side (frontend) frameworks y librerías
  5. Almacenamiento de archivos

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.

¿Qué es web3?

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:

  • Infraestructura distribuida, confiable y robusta.
  • Propiedad de los datos, contenido y plataformas.
  • Pagos digitales nativos.
  • Identidad auto-soberana.
  • Backend abierto, público y reutilizable.

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.

  1. Blockchain
  2. Ambientes de desarrollo para blockchain
  3. Almacenamiento de archivos
  4. API (indexing y querying)
  5. Identidad
  6. Client-side (frontend) frameworks y librerías
  7. Oráculos

Veamos a detalle cada uno de ellos. 🧐

Blockchain

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:

  1. Accediendo a un endpoint público en la red.
  2. Corriendo tu propio nodo.
  3. Usando un proveedor
  4. Usando un proveedor descentralizado

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.

Ambientes de desarrollo para blockchain

Para el ecosistema de Ethereum y la EVM existen diversos ambientes de desarrollo que puedes utilizar.

  • Hardhat: una de las herramientas con mayor popularidad y adopción en los tiempos recientes debido a su fácil uso. Tiene como base JavaScript.
  • Truffle: otra opción basada en JavaScript y también favorita de algunos desarrolladores debido a que tiene más tiempo en funcionamiento y ha demostrado funcionar bastante bien.
  • Foundry: una opción más reciente, escrita en Rust, y que promete ser una gran herramienta.
  • Brownie: ambiente de desarrollo basado en Python.

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.

Almacenamiento de archivos

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.

  • IPFS: protocolo P2P con gran popularidad en el ecosistema y buena documentación.
  • Arweave: útil para almacenar datos de forma permanente.
  • Filecoin: protocolo de almacenamiento descentralizada, puede utilizarse a través de servicios como web3.storage
  • Skynet:

Otros protocolos de datos off-chain (o fuera de la cadena -blockchain-)

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.

API (indexing y querying)

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.

Identidad

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.

Client-side (frontend) frameworks y librerías

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.

Oráculos

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.


web3-stack.png

💡 Para mayor referencia, visita el texto original de Nader Dabit: Defining the web3 stack

Aportes 1

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Resumen de la clase:

Web 3 stack:

  1. Blockchain
  2. Ambientes de desarrollo para blockchain
  3. Almacenamiento de archivos
  4. API (indexing y querying)
  5. Identidad
  6. Client-side (frontend) frameworks y librerías
  7. Oráculos