Get a 10% discount when purchasing Tangem Wallet using the code!
CRIPSIS-XYZ

Chia 馃尡 - DataLayer, tutorial de iniciaci贸n usando la CLI en Linux

Llega el momento de ponernos manos a la obra y comenzar a trabajar en un escenario de replicaci贸n de datos entre dos hosts de Chia con Data Layer

8 min read
chia data layer tutorial header

En el anterior art铆culo hablamos acerca de Chia DataLayer, una base de datos descentralizada p煤blica y de uso general que supone un paradigma tecnol贸gico poco visto hasta entonces.

Introducci贸n

Llega el momento de ponernos manos a la obra y comenzar a trabajar en un escenario b谩sico en el cual contaremos de dos hosts con una instalaci贸n de la blockchain oficial de Chia.

Todos los pasos se realizar谩n mediante la interfaz de l铆nea de comandos (CLI) en entornos Linux.

Uno de los hosts se configurar谩 como publisher y se crear谩 un datastore adem谩s de un mirror en los cual publicaremos datos en crudo. El otro host se configurar谩 como observer, se suscribir谩 al datastore previamente creado y realizaremos pruebas para comprobar la sincronizaci贸n de los datos.

1. Requisitos

Diagrama representando el escenario del tutorial
Escenario final del tutorial
Instrucciones para ambos hosts
  • Dos m谩quinas Linux con la distribuci贸n de tu elecci贸n, preparadas con la 煤ltima versi贸n disponible de la blockchain de Chia. Clonarse el repositorio de git Chia-Network/chia-blockchain en un directorio (por ejemplo en /etc).
sudo git clone https://github.com/Chia-Network/chia-blockchain.git /etc/chia-blockchain
鈿狅笍
Verificar siempre que estamos utilizando el repositorio oficial para instalar Chia, de cara a evitar descargar c贸digo malicioso
  • Para cada instalaci贸n de Chia, tener sincronizada una wallet est谩ndar (no es necesario tener un full-node sincronizado).
  • Elegir el host y la cartera que crear谩 al datastore y asegurarse de tener al menos 0,1 XCH (100000000000 Mojo) en ella ya que ser谩n necesarios para crear el datastore. Si no se dispone de la cuant铆a se recomienda seguir las siguientes instrucciones para conseguirlo en aproximadamente 10min.
  • Puesto que para el proceso de publicaci贸n de los datos se disponibilizar谩 un mirror en la m谩quina publisher, asegurarse de que no haya ning煤n firewall que interrumpa las comunicaciones entrantes al puerto TCP 8575 de esa m谩quina

En el escenario de ejemplo, la m谩quina galixeon asumir谩 el role de publisher y galichia ejercer谩 de subscriber.

Accedemos mediante una interfaz de l铆nea de comandos a la m谩quina publisher, nos ubicamos en el directorio donde se haya clonado el repositorio de chia-blockchain y activamos el entorno virtual de Python con la instrucci贸n
. ./activate.

馃尡
Si se trata de una instalaci贸n nueva de Chia, ser谩 necesario ejecutar previamente el comando chia init y seguir las instrucciones para generar la configuraci贸n inicial y generar las cadenas de claves necesarias para el funcionamiento de la blockchain.

2. Habilitar los servicios

Instrucciones para ambos hosts

De cara a poder interactuar con las partes involucradas en el funcionamiento de DataLayer es necesario habilitar los servicios de wallet y data, mediante el siguiente comando:

chia start data wallet
chia start data wallet

3. Comprobar las carteras

Instrucciones para ambos hosts

Una vez arrancados los servicios, comprobamos que tenemos dos carteras: Una wallet de tipo STANDARD_WALLET y otra de tipo DATA_LAYER. Las wallets deben de estar sincronizadas con la red de Chia, sino no ser谩 posible realizar operaciones sobre la red. Ejecutamos el siguiente comando:

chia wallet show

Si aparece la palabra Synced estamos listos para operar, en caso de que el estado sea Syncing, es necesario esperar a que finalice de sincronizarse.

chia wallet show output
鈿狅笍
Como hemos comentado en el apartado Requisitos, verificar que la wallet est谩ndar de la m谩quina publisher contiene al menos 0,1 XCH ya que en el caso contrario no ser谩 posible crear datastores, recuerde que esa cuant铆a ser谩 devuelta a la cartera cuando se elimine el datastore. Si no se dispone de la cantidad necesaria se recomienda seguir las siguientes instrucciones para conseguirlo en aproximadamente 10min.
馃尡
Todas las carteras funcionan con la misma direcci贸n o clave p煤blica. De ser necesario conocer la direcci贸n para enviar XCH simplemente ejecutar chia wallet get_address.

4. Crear un datastore

Instrucciones para host publisher

隆Bien! ya estamos listos para crear nuestro primer datastore en Chia. Simplemente ejecutamos el siguiente comando:

chia data create_data_store
chia data create_data_store output

Visualizaremos mucha informaci贸n en el output; si todo ha ido de forma correcta, ser谩 muy similar al de la captura. Nos quedaremos 煤nicamente con el ID del datastore, copiarlo y guardarlo.

En caso de ser necesario volver a consultar el ID del datastore ejecutar chia data get_owned_stores.

5. Hello World

Publicaci贸n de los datos

Instrucciones para host publisher

Volvemos a nuestro host publisher e intentamos crear un dataset de cara a probar el proceso de replicaci贸n. Para ello publicaremos un conjunto de datos de tipo clave-valor. Los datos que viajen a trav茅s de Data Layer 煤nicamente pueden ser de tipo hexadecimal por lo que todo lo que querramos publicar en el repositorio de datos ser谩 necesario transformarlo antes de enviarlo.

Simplemente adaptar las variables DATASTORE_ID, CLAVE y VALOR con los valores deseados, copiar y pegar las instrucciones de cara a crear una entrada de datos sencilla. El comando xxd se encarga de realizar la conversi贸n a hexadecimal en el formato correcto.

DATASTORE_ID="ddc4b7bd618cfdaba43c467d26b20677d2874fe23b883deefae1bb524ddd5ad2"
CLAVE="CRIPSISXYZ"
VALOR="HOLA MUNDO!"

chia data update_data_store --id=$DATASTORE_ID -d "[{\"action\":\"insert\", \"key\":\"$(xxd -pu <<< $CLAVE)\", \"value\":\"$(xxd -pu <<< $VALOR)\"}]"
chia data update_data_store output

El output debe contener el campo {'success': True}. Podemos observar la key tx_id que indica el identificador de la transacci贸n, que es p煤blica dentro de la blockchain.

馃尡
Se puede ver estado de la transacci贸n y los detalles relacionados buscando el ID de transacci贸n en xchscan.com.

Probar a registrar un par de datos en el datastore.

Prueba de inclusi贸n del dato

Instrucciones para host publisher

Vamos a comprobar que los datos se han inclu铆do en la blockchain y que se han generado el hash 煤nico que identifican al cambio y su contenido:

chia data get_root_history --id=DATASTORE_ID
chia data get_root_history output

Como podemos ver en el output, tenemos un json con tres elementos (el primer elemento es el ra铆z y siempre se autogenera), que son la cantidad de transacciones que se han generado para ese datastore y para cada elemento, si la transacci贸n est谩 confirmada, la prueba de inclusi贸n (el hash) y una marca de tiempo de cuando se ha validado dicha transacci贸n.

6. Creaci贸n de un mirror

Instrucciones para host publisher

Ahora que ya sabemos registrar transacciones dentro de la blockchain y comprobar su inclusi贸n, es hora de que los datos del datastore sean replicables a otros nodos de chia. Para ello es necesario crear un mirror que apunte al identificador del datastore al cual nos conectaremos a posteriori desde el host subscriber.

Levantar el servicio

Comenzamos por levantar el servicio del mirror llamado data_layer_http que se disponibilizar谩 a trav茅s del puerto TCP 8575. Si se dispone de un nombre de dominio que apunta a la m谩quina publisher, se puede utilizar dicho nombre. En caso contrario utilizar directamente la IP p煤blica.

chia start data_layer_http
chia start data_layer_http

A帽adir el espejo

Ejecutamos el siguiente comando en el cual le especificamos con -i el ID del datastore, con -u el FQDN o la IP que apunte al host y con -a una peque帽a cantidad de Mojos. Ese par谩metro sirve entre otras cosas para decidir la prioridad de elecci贸n del mirror en el caso de haber varios mirrors para un datastore.

chia data add_mirror -i DATASTORE_ID -u http://NOMBRE_O_IP:8575 -a 1000
chia data add_mirror output

En este punto ya tenemos capacidad de replicaci贸n de datos para cuando se suscriba una nueva cartera.

7. Suscribirse al datastore

Instrucciones para host subscriber

Ahora es el turno de la m谩quina subscriber suscribirse al datastore recientemente creado y a su mirror. Para ello ejecutar el siguiente comando y sustuir STORE_ID por el ID del datastore previamente creado:

chia data subscribe -store STORE_ID -u http://NOMBRE_O_IP:8575
chia data subscribe output

La salida como de costumbre debe de ser {'success': True}.

Prueba de inclusi贸n del dato

Vamos a comprobar que los datos se han replicado correctamente a trav茅s de DataLayer, desde el host subscriber. Volvemos a ejecutar

chia data get_root_history --id=DATASTORE_ID
chia data get_root_history output

Como podemos ver en el output, tenemos el mismo json con el elemento ra铆z y las dos transacciones que hemos generado previamente. Eso significa que los cambios est谩n ya propagados a nuestro nodo.

8. Lectura de datos

Ahora que sabemos que los datos est谩n disponibles, vamos a tratar de visualizarlos. Mediante el siguiente comando vamos a ver los datos en crudo en hexadecimal:

chia data get_keys_values --id=STORE_ID
chia data get_keys_values

Vemos dos elementos dentro del array del json, con su relaci贸n de clave-valor. Si quisieramos visualizar 煤nicamente las claves disponibles, ejecutar

chia data get_keys --id=STORE_ID
chia data get_keys

Si queremos conocer de forma r谩pida el valor descifrado de un campo hexadecimal, simplemente ejecutar nuevamente el comando xxd con los par谩metros para revertir. Por ejemplo:

echo 0x4352495053495358595a0a | xxd -r -p
transform to hex with xxd

Y listo! Ahora ya entendemos el funcionamiento de la replicaci贸n de datos de Chia.

馃尡
Gracias por tomar el tiempo de leer este art铆culo. Espero que haya sido de tu agrado y que hayas encontrado en 茅l informaci贸n 煤til y valiosa.

Crear y compartir contenido de calidad requiere tiempo y esfuerzo. Si aprecias mi trabajo y te gustar铆a ver m谩s de 茅l, considera hacer una peque帽a donaci贸n.

Cada contribuci贸n, por peque帽a que sea, hace una gran diferencia y me ayuda a continuar con este trabajo que tanto disfruto.

Si tienes cualquier tipo de sugerencia o quisieras que hablara de alg煤n tema en concreto, 隆h谩zmelo saber!
Bot贸n de Donaci贸n XCH