En la Parte 1 de esta serie, Monitorizar activos Stellar usando Couchbase y Python, hemos introducido los conceptos básicos del Stellar Descentralizado (Blockchain) Exchange y mostramos cómo almacenar una copia de la lista de activos de una cuenta en Couchbase. En este post, cargamos y consultamos las operaciones de activos. Luego las vemos en un gráfico en la consola web de Couchbase para ver tendencias e inversiones, todo fácilmente desde la consola web de Couchbase.

Para ello damos tres pasos:

  • Acceder a la lista de operaciones de una cuenta
  • Cargar las operaciones en Couchbase
  • Ejecutar una consulta

Una advertencia antes de entrar en materia: no soy un gurú de las criptofinanzas y abusaré de la jerga comercial común, con el objetivo de hacer que el tema que nos ocupa sea lo más accesible posible para los lectores que no estén familiarizados con la tecnología.

Comprender los activos Stellar

En Stellar, el activo nativo es Stellar Lumens, o XLM. Cuando hablamos del valor de un activo, siempre lo reducimos a su valor en unidades XLM. Por ejemplo, alguien puede comerciar con Bitcoin o Ether, ambos ligados a un valor específico de XLM. XLM es como el USD de las redes de comercio que puede utilizar en otros lugares.

En el post anterior, capturamos los datos de la cuenta base, en este vamos a capturar las operaciones realizadas en esa cuenta. Anteriormente, creamos un único documento en Couchbase que tenía toda la información de la cuenta, incluyendo los saldos como objetos incrustados.

Con este endpoint podemos obtener una lista de todas las operaciones de una misma cuenta. Elegimos aleatoriamente un ID de cuenta y lo usamos en la URL:

Esto listará hasta 200 entradas y también tiene URLs de paginación usando una variable de cursor en los resultados, pero no vamos a usarlos aquí. En su lugar, vamos a introducir parámetros muy específicos para que podamos ver determinados tipos de operaciones.

A continuación se muestran las partes más destacadas de una operación devuelta por la solicitud GET anterior:

Esta operación vendió 0,057 nativo activo base (XLM) por 0,0105 USDC activo/moneda digital.

La respuesta tiene un campo de fecha/hora y también entidades para el emisor de cada activo base/contrapartida. Este es otro concepto básico de Stellar. Cada activo tiene un código (por ejemplo, USDC, XLM, BTC, ETH, etc.) y un emisor de ese activo (por ejemplo, GA5ZSE...). Esto está diseñado para que, por ejemplo, cualquiera pueda crear nuevos activos en la red, pero se pueda confiar en los emisores/proveedores de activos de determinadas direcciones que se sabe que son legítimas.

Podemos ajustar la solicitud de la API REST para incluir pares específicos que nos interesen mediante parámetros, por ejemplo, sólo operaciones con XLM y USDC.

Aunque los resultados nos dan todo lo que necesitamos saber, puede ser útil tener registros separados para las operaciones que van en ambas direcciones. Podemos ejecutar la consulta inversa, mostrando las operaciones de USDC a XLM:

Obviamente, podemos descargar mucho más que un simple par de transacciones y cargarlos en la base de datos, pero nos centraremos sólo en un par de casos de uso para simplificar este ejemplo.

Python carga operaciones Stellar en Couchbase

Seguimos donde lo dejamos la última vez, pero cambiaremos la URL principal para que coincida con los ejemplos anteriores. Esto es demasiado verboso y se puede lograr mucho más eficientemente con la función SDK de Stellar pero añade cierta complejidad asíncrona que evitaremos por ahora.

Código de ejemplo conecta a Couchbase, consultas el servicio Stellar Horizon y que analiza cada operación y almacenes en su propio documento. Las claves del documento son el ID de la operación más una marca de tiempo, que no tiene sentido para nosotros, pero nos ayuda a tener claves de documento únicas.

(La última función añade explícitamente el campo de código de activo XLM en los casos en que falta, porque cuando es un tipo de activo nativo deja el código de activo en blanco, lo que lo hace confuso).

El conjunto de documentos resultante se procesa para las operaciones en las que la base es USDC y, a continuación, de nuevo utilizando la URL que busca operaciones de XLM a USDC.

Ahora habrá 20 documentos en el cubo Stellar de Couchbase:

Couchbase Stellar Trade Documents

Documentos comerciales de Couchbase Stellar

Consulta de operaciones Stellar en Couchbase

Utilizando el lenguaje N1QL (SQL para JSON) ahora podemos consultar fácilmente nuestra lista de operaciones.

En primer lugar, creamos un índice básico para los documentos utilizando la pestaña Consulta y ejecutando esta consulta:

En un ejemplo a mayor escala, sería conveniente crear índices secundarios en los campos que le interesa consultar. Pero con este pequeño conjunto de documentos, no te preocupes.

Ahora podemos ejecutar la consulta propiamente dicha. En esta consulta utilizamos algunas funciones básicas para convertir tipos, reformatear la fecha y seleccionar los valores que nos interesan. Todos los documentos tienen formato JSON y cualquier consulta mostrará por defecto las coincidencias JSON de origen, como se muestra aquí:

Couchbase Query of Stellar Trades in JSON

Consulta Couchbase de operaciones Stellar en JSON

Seleccione Cuadro encima de los resultados para mostrarlos de forma más estructurada:

Couchbase Query Stellar trades shown in a table

Las operaciones de Couchbase Query Stellar se muestran en una tabla

La tabla se puede ordenar fácilmente. En Gráfico ahora también se puede utilizar porque tenemos un buen campo para el eje X (fecha) y el eje Y (base o importes del contador). Seleccione las opciones después de elegir el botón Gráfico como se muestra aquí:

Couchbase query of Stellar trades shown in a chart

Consulta en Couchbase de las operaciones de Stellar mostradas en un gráfico

Es una forma sencilla pero eficaz de profundizar en los datos.

¿Qué más podemos hacer?

Hasta ahora hemos mantenido los ejemplos muy simples - obtener algunos detalles de cuentas y operaciones de Stellar y almacenarlos en documentos NoSQL de Couchbase. Esto es solo la punta del iceberg.

En futuros posts, mostraremos algunos ejemplos más de varios tipos de uniones de documentos e investigaremos más a fondo para comprender el valor perdido o ganado al realizar las operaciones anteriores.

Por el momento, puede intentar ajustar la consulta accediendo a los objetos de precio y ver qué cálculos pueden ayudarle a descubrir sobre beneficios/pérdidas. (Sugerencia: el objeto de precio tiene un numerador y un denominador y se puede acceder a él como un campo utilizando precio.n y precio.d en la consulta).

¿Y ahora qué?

Aquí tiene otros enlaces para informarse sobre los temas que tratamos:

 

Autor

Publicado por Tyler Mitchell - Director de Marketing de Producto

Trabaja como Gerente Senior de Marketing de Producto en Couchbase, ayudando a llevar el conocimiento sobre los productos a la luz pública, mientras que también apoya a nuestros equipos de campo con contenido valioso. Su pasión personal es todo lo geoespacial, habiendo trabajado en GIS durante la mitad de su carrera. Ahora la IA y la búsqueda vectorial son lo primero en lo que piensa.

Dejar una respuesta