Creo que al incio no sabemos bien donde deberia ir el html, se puede notar en el minuto 3:42, en el proyecto que creamos la clase pasada debemos crear en la raiz una carpeta src y dentro de ella va el index.html
Inicia tu camino construyendo la Web3
Pre-work para Desarrollo en Blockchain: Primeros Pasos y Herramientas
Desarrollo Blockchain: Principios y Oportunidades en Web3
Fundamentos de Blockchain y Descentralización
Smart Contracts y Web3: Construyendo el Futuro Descentralizado
Conociendo el entorno de desarrollo
Introducción al Desarrollo Blockchain: Git, Node.js y Comandos de Terminal
Fundamentos de Blockchain: Redes, Lenguajes y Herramientas Esenciales
Stack de Web3: Capas y Herramientas para Aplicaciones Descentralizadas
Conceptos Básicos de Criptografía para Web3
Desarrollo en Ethereum
Programación de Contratos Inteligentes con Solidity
Seguridad en Smart Contracts con Open Zeppelin Contracts
Fundamentos de la Ethereum Virtual Machine (EVM)
Desarrollo de Aplicaciones Blockchain con Solidity y Ethereum
Primeros pasos en Ethereum
Creación y gestión de wallets de criptomonedas
Redes de Pruebas Blockchain: Uso y Funcionalidad en Desarrollo
Creación de Contratos Inteligentes en Remix IDE y Solidity
Instalación y Configuración de Hardhat para Contratos en Solidity
Compilación y despliegue de contratos inteligentes con Hardhat
Conexión de Aplicaciones Descentralizadas a Blockchain con Ethers.js
Ejecución de Aplicaciones Descentralizadas con Metamask
Programación Web 3: Fundamentos y Especializaciones
Seguridad y protocolos de segunda capa
Capas 2 en Ethereum: Escalabilidad y Seguridad en Blockchain
Transición de Web 2 a Web 3: Desarrollo y Comunidades Blockchain
Más allá del desarrollo
Almacenamiento Descentralizado en Blockchain: IPFS, Filecoin y Más
Creación de Startups y DAOs en Blockchain
Introducción al Desarrollo en Web3 para Mujeres y Hablantes de Español
Fundamentos de Blockchain y Criptomonedas en Web3
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Desarrollar un contrato inteligente es como desarrollar cualquier backend. Solo es el 50% del trabajo de un desarrollador blockchain, o de un equipo de desarrollo. El siguiente paso es desarrollar el otro 50%, el front-end de la aplicación que se comunique con la blockchain e interactúe con el contrato.
La conexión con una blockchain para acceder a la información o interactuar con un smart contract requiere, en primer lugar, de las típicas tecnologías para el desarrollo de cualquier front-end: HTML, CSS, Javascript. Además de eso, una parte fundamental para lograrlo es un provider, mejor conocido como una wallet.
Billeteras como Metamask crean el enlace entre el front-end y una blockchain. No solo es importante la misma para el despliegue de un contrato y el pago de las comisiones, también requeriremos de una wallet en la aplicación web3 para interactuar con cualquier contrato.
Otra parte esencial para lograr dicha comunicación, es un cliente o librería que nos facilite la tarea. La comunicación con cualquier blockchain se realiza por medio de un protocolo llamado JSON RPC, en lugar de utilizar HTTP o HTTPS como en el desarrollo de software tradicional.
Las dependencias para lograr conectarnos con cualquier blockchain basada en EVM son Web3.js o Ether.js. Siendo web3.js
la más adoptada por la comunidad y la que más tiempo lleva en el mercado, pero ether.js
no se queda atrás y ha ganado mucha popularidad en los últimos años.
Para esta demostración de conexión con una blockchain, utilizaremos ether.js
. Ingresa al sitio oficial de Ether.js y encontrarás múltiples formas de instalar esta dependencia. Por supuesto que puedes hacerlo con NPM. Pero, para este sencillo ejemplo, utilizaremos un simple CDN en nuestro archivo HTML.
Utilizaremos un trivial archivo .html
en donde importaremos el CDN y escribiremos el código necesario de la dapp:
```
```
Observa que necesitarás la siguiente información: El CONTRACT_ABI
lo encontrarás en los archivos luego de compilar el smart contract, se trata de un arreglo con toda la información necesaria para comunicarnos con dicho contrato. Luego de desplegar el contrato, habrás obtenido el CONTRACT_ADDRESS
del mismo, también lo necesitaremos.
Wallets como Metamask inyectan en el objeto window
del navegador el provider con toda la lógica que necesitarás para comunicarte con, en este caso, Ethereum. Lo encontrarás en window.ethereum
. De no tener instalado Metamask como extensión del navegador, la aplicación no funcionará.
Especifica la red a la cual quieres comunicarte. En este caso, nos conectaremos a la red de prueba de Goerli. Seguido de la lógica para capturar en el código, el acceso a tu wallet Metamask para firmar las transacciones posteriormente e instanciar el contrato con la dirección y el ABI.
Finalmente, encontrarás una función para cada método del contrato al cual nos estamos comunicando. En este caso, tenemos dos funciones, una para obtener el valor del contador y otra para incrementarlo. Al tratarse de una comunicación con una blockchain, observa que deben ser métodos asíncronos, como si de una típica API se tratara.
Esta es toda la lógica Javascript que necesitarás. El siguiente paso será crear algunos simples botones en el HTML para ejecutar cada función y lograr la interacción con el contrato.
En este ejemplo, nos encontramos utilizando HTML y Javascript de manera muy simple para que logres ver que, con unas pocas líneas de código, es posible comunicarnos con Ethereum. Podrás desarrollar aplicaciones más sofisticadas con Angular, React o Vue, posteriormente a aprender lo básico sobre el uso de estas tecnologías del lado del front-end.
Contribución creada por: Kevin Fiorentino (Platzi Contributor).
Aportes 9
Preguntas 2
Creo que al incio no sabemos bien donde deberia ir el html, se puede notar en el minuto 3:42, en el proyecto que creamos la clase pasada debemos crear en la raiz una carpeta src y dentro de ella va el index.html
La verdad que siendo tan importante la creacion del index.html no haberlo mencionado - o haber hecho enfasis en su creacion- con anterioridad hizo que el entendimiento del curso se haga muy pesado. Hace 5 horas estoy intentando dejar todo como lo hace el profesor aqui y la verdad como poco o nulo exito. Una pena
Recordar que las funciones de incrementar() y getCounter() son async - asíncronas - porque se comunican con la blockchain y toman un tiempo en ejecutarse.
Documentación de ether.js en su version 5:
https://docs.ethers.io/v5/getting-started/
Platzi tiene un curso de Asincronismo si quieren aprender mas sobre como funciona.
Curso de Asincronismo
Librerias
web3.js
La primera que se creo y hay más comunidad
ether.js
Es más eficiente
Conectar una DAPP con la Blockchain:
1- Aplicación web: (En este caso la construiremos con html, css, javascript).
2-**Necesitamos un proveedor **: Metamask (en este caso) lo que hace es firmar las transacciones y conectarse con la blockchain, pagando gas ya sea Sepolia o Goerli.
3-Librería: Se usará ethers.js porque es un poco mas reciente y su uso viene en crecimiento, además de ser eficiente y liviana, la usaremos para conectar nuestra DAPP con el contrato inteligente.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?