No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Conectando la blockchain con el navegador: Web3.js y Ether.js

18/27
Recursos

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.

Conexi贸n y comunicaci贸n con un contrato inteligente

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.

Par谩metros necesarios para establecer la conexi贸n

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.

Programando la conexi贸n con Ethereum

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.

Conclusi贸n

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

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

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

Buenas, en la descripci贸n, pesta帽a Recursos no esta el HTML con el que se trabaja en la clase, no es problema crearlo desde 0 pero en recursos se ve que claramente se tenia la intenci贸n de poner el HTML y no se hizo, esto, sumando la duda de mi clase anterior y viendo que muchas personas realizan preguntas y se quedan sin respuesta empiezo a dudar un poco la falta de control de calidad y seguimiento por parte de los profesores.
Buenas, quede perdido con el ejercicio anterior o algo me perd铆, hicimos una prueba unitaria pero cuando la ejecutamos??, compilamos, desplegamos pero veo que nos estamos tirando a una conexi贸n con la web ya....

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.