En el artículo de la semana pasada conocíamos web3.js, una colección de bibliotecas de JavaScript que te permiten interactuar con un nodo de Ethereum local o remoto mediante HTTP, IPC o WebSocket.

En el artículo de hoy veremos cómo hacer esa interacción, programando un pequeñísimo script en JavaScript, para que puedas tener una idea básica de “cómo se ve web3.js”.

¡Allá vamos!

Comunicación mediante JSON RPC

Como bien recuerdas de la semana pasada, web3.js se conecta con el Blockchain de Ethereum mediante JSON RPC (llamada a procedimiento remoto). Esta tecnología te permite utilizar web3.js para hacer peticiones a un nodo de Ethereum individual.

Si te mueves en el mundo de las APIs, puedes pensar que web3.js hace más o menos lo mismo que haces para leer o escribir datos con una JSON API con JavaScript u otro lenguaje.

¿Cómo instalar Web3.js?
Antes de seguir, debes asegurarte que tienes Node.js y npm, nuestro gestor de paquetes, instalados en tu máquina.

En la terminal ejecutas:

$ node -v

Si está todo bien, deberías ver la versión de Node.js.

Después, en tu proyecto instalas la biblioteca Web3.js:

$ npm install web3

npm instalará las dependencias. A partir de este momento ya puedes utilizar web3 para conectar con un nodo de Ethereum. Para conectar con un nodo con JSON RCP en una Main Net, necesitas tener acceso al nodo de Ethereum.

Puedes hacerlo de distintas formas, por ejemplo con tu propio nodo de Ethereum utilizando Geth o Parity, o utilizando Infura.

¿Qué es Infura?

Infura es un conjunto de “APIs y herramientas para desarrolladores de alta disponibilidad” que “proporciona acceso rápido y confiable a las redes de Ethereum e IPFS”. Su objetivo es que te  “concentres en crear y escalar software”.

Además, el equipo de Infura cree que su herramienta es la “suite de desarrollo de cadenas de bloques más poderosa del mundo”. ¿Será?

En el contexto de este artículo, Infura te permite acceder a un nodo de Ethereum sin que lo ejecutes tú mismo, y lo puedes hacer de forma gratuita. Necesitas registrarte y pedir una clave API y la URL RPC para la red de Ethereum que quieres conectarte.

Tu URL RPC de Infura debería parecerse a la siguiente:

https://mainnet.infura.io/API_KEY_DE_INFURA

A partir de este momento ya puedes iniciar la consola de Node y desarrollar nuestro pequeño script para conectar a Ethereum.

En la terminal ejecuta:

$ node

Dentro de la consola cargas web3.js:

const Web3 = require('web3')

Ahora utilizas la nueva variable para crear la conexión, utilizando la URL de Infura.

const urlRpc = https://mainnet.infura.io/API_KEY_DE_INFURA

const web3 = new Web(urlRpc)

Ya tienes tu conexión Web3 para hablar con la ‘main net’ de Ethereum. Puedes utilizar la siguiente cuenta para saber el saldo de la cuenta usando el método getBalance() de web3.js:

0x2819c144d5946404c0516b6f817a960db37d4929

Le asignas a variable:

const account = "0x2819c144d5946404c0516b6f817a960db37d4929"

Y revisas el saldo de la cuenta:

web3.eth.getBalance(account, (err, wei) => {

 balance = web3.utils.fromWei(wei, 'ether')

 console.log(balance)

})

Deberías ver el resultado:

Resultado en la terminal
Datos en etherscan.io

Puedes ver en la documentación de web3.js más detalles sobre el método getBalance y sus parámetros.

Conclusión

Como has podido ver, web3.js existe realmente para simplificar la conexión a Ethereum. Si JavaScript es tu lenguaje de opción ya sabes como hacer para verificar los saldos de las cuentas de Ethereum.

!Te animo a seguir consultando la documentación de web3.js y a jugar con la herramienta, y otras opciones y funcionalidades!

¿Utilizas web3.js? ¿Qué tal la experiencia? ¡Coméntalo abajo!

Foto: @aleksandarlittlewolf @freepik