Probando Parity con Docker – Tutorial

Probando Parity con Docker – Tutorial

 

Parity.io es un cliente de Ethereum alternativa a geth que sirve para conectar un nodo de Ethereum. Permite contectar Dapps a través de su interfaz web incluída en el nodo como por ejemplo conectarse a través de RPC.

Docker es un programa para desplegar aplicaciones dentro de contenedores. Los contenedores de docker abstraen y automatizan la virtualización a nivel de sistema operativo. Por ejemplo, nos permite ejecutar un servidor web sin instalar nada más que el contendor y docker en nuestro sistema operativo.

En el siguiente artículo se explicará como conectar un nodo en la red testnet de Ropsten de Ethereum usando Parity. Para ejecutar Parity se utilizará el contenedor oficial de Parity.io para Docker. En la web de Docker se explica cómo instalarlo en diferentes sistemas operativos, sin embargo para seguir este tutorial se recomienda utilizar un GNU/Linux como Ubuntu o Fedora.

Una vez tengamos instalado Docker en nuestro sistema, lanzar la siguiente línea de comandos en un terminal.

$ docker run --name parity -ti -p 8180:8180 -p 8545:8545 -p 8546:8546 -p 30303:30303 -p 30303:30303/udp \
-v ~/.local/share/io.parity.ethereum/docker:/root/.local/share/io.parity.ethereum/ parity/parity:v1.7.0 \
--chain ropsten --ui-interface all --jsonrpc-interface all --ws-interface all --ws-origins http://127.0.0.1:8180 \
--base-path /root/.local/share/io.parity.ethereum

 

Aquí se explican los parámetros:

-name indica un nombre identificativo de nuestro contenedor de Docker. Con el comando docker ps podremos verlo.

-p indica los puertos mapeados desde dentro del contenedor a los de nuestro equipo para poder conectarnos a la red de Ethereum.

-v nos crea un volumen compartido entre el contendor (/root/.local/.share/…) con una ruta de nuestro equipo. Así la información de los bloques se almacenarán en nuestro equipo.

parity/parity:v1.7.0 indica que usemos el contenedor oficial de parity versión 1.7.0. Este será descargado por defecto de Docker Hub.

–chain ropsten –ui-interface all –jsonrpc-interface all –ws-interface all –ws-origins http://127.0.0.1:8180 –base-path /root/.local/share/io.parity.ethereum son los parámetros del comando “parity”, ejecutable interno lanzado al arrancar nuestro contenedor.

Si queremos que el contendor se ejecuta en modo background añadir el parámetro -d

Paritiy comenzará a descargar los bloques de la red testnet.

 

 

Para conectarnos a la interfaz web del nodo. Primero hay que crear un token de Parity que nos de acceso. Para ello hay que ejecutar el comando parity signer new-token. Para hacerlo con docker hay que escoger con docker exec alias-contenedor.

$ docker exec parity /parity/parity signer new-token

 

 

Copiar la url e ir a un navegador

 

 

Después de leernos y aceptar las condiciones de uso.

 

 

Escoger los datos de la cuenta principal de la cartera.

 

 

Guardar en un sitio seguro la semilla. Debajo deberemos escribir “I have written down the phrase” para poder continuar. En el siguiente paso nos pedirá escribir la semilla de la clave privada.

 

 

Tendremos la cuenta creada con el nodo sincronizado. A partir de aquí podemos enviar ethers a la dirección creada, navegar entre las diferentes opciones de la interfaz, ver tokens y DApps.

 

 

Opcionalmente podemos instalar la extensión para Chrome de Parity.

Para poder ver la pestaña de contratos deberemos ir a configuración y marcar la casilla “Contracts”

 

 

Probando la API JSON-RPC

Parity ofrece una API JSON-RPC compatible con el nodo oficial geth

Un servicio web JSON-RPC se comunica a través del protocolo RPC enviando una petición POST del protocolo HTTP. Para ello, con el comando curl se puede realizar un ejemplo. Entre las opciones disponbles para el nodo está getBalance, que indicando una dirección nos permite ver la cantidad de que dispone:

$ curl -X POST -H "Content-type: application/json" \
--data '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0x008e51F432E7e5a4f6c1c0184A639886333BCc2a", "latest"],"id":1}' \
http://localhost:8180
{"jsonrpc":"2.0","result":"0x1ba891aff3617800","id":1}

El resultado es devuelto en hexadecimal. El cual se puede convertir a entero con un comando en python:

$ python -c 'print(int("0x1ba891aff3617800", 16))'
1993003020000000000

La cantidad devuelta es en wei, la unidad más pequeña, o lo que es lo mismo 1,99300302 ethers.

 

 

Para detener el contenedor de parity:

$ docker stop parity

Para volver a lanzar el contenedor

$ docker ps -a
$ docker start parity
Sientete libre de compartir

Sobre nosotros David Albela

David Albela, Ingeniero en Informática y Máster Universitario en Ingeniería Informática en la Universidade da Coruña. Desarrollador Backend del lado servidor. Entusiasta del software libre, GNU/Linux y del desarrollo web ágil. Investigador de tecnologías Blockchain. Co fundador de CoinCelt.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Solve : *
20 + 24 =