Saltar al contenido principal

Resumen

Este tutorial describe cómo una aplicación puede aprovechar la arquitectura CDP para crear tuberías de datos de metadatos del ledger Stellar rápidas y ligeras utilizando varias selecciones de paquetes del repositorio Stellar Go github.com/stellar/go conocidos colectivamente como el SDK de 'Ingestión':

Los paquetes del SDK de Ingestión

  • github.com/stellar/go/amount paquete de utilidades para convertir precios de operaciones de transacciones de la red a cadena
  • github.com/stellar/go/historyarchive github.com/stellar/go/support/datastore github.com/stellar/go/support/storage paquete de utilidades con envoltorios convenientes para acceder a archivos de historial, y evitar aspectos de http de bajo nivel
  • github.com/stellar/go/ingest proporciona funcionalidad de análisis sobre los metadatos del ledger de la red, convierte a un modelo de LedgerTransaction más centrado en los desarrolladores
  • github.com/stellar/go/cdp proporciona la función productora de metadatos del ledger CDP para integración de tuberías de streaming.
  • github.com/stellar/go/network proporciona configuraciones convenientes preconfiguradas para redes Testnet y Mainnet
  • github.com/stellar/go/xdr un enlace completo de Golang al modelo de datos de la red Stellar

Configuración del proyecto de Ingestión

Requisitos del proyecto

Para usar este ejemplo de tubería CDP para datos de transacciones en vivo de la red Stellar, necesitarás:

Nuestra aplicación de ejemplo solo está interesada en un pequeño subconjunto del modelo de datos general de la red relacionado con las transferencias de activos desencadenadas por la operación de Pago y define su propio modelo de datos derivado como el objetivo del ejercicio:

::AppPayment
Timestamp: uint
BuyerAccountId: string
SellerAccountId: string
AssetCode: string
Amount: string
}

La aplicación de ejemplo realizará ambas tuberías del CDP. Se requieren un mínimo de dos tuberías para una arquitectura CDP de extremo a extremo completa.

Tubería de exportación de metadatos del Ledger

Esta tubería necesita ser iniciada primero, es responsable de exportar metadatos del Ledger Stellar como archivos a un Datastore de CDP.

Determinar el Datastore

El Datastore en CDP es una interfaz, que permite múltiples implementaciones que representan diferentes capas de almacenamiento físico que se pueden 'conectar' para exportar y consumir tuberías. Stellar proporciona el [Datastore de GCS] como la primera implementación de Datastore, y este ejemplo elige usar esta implementación existente.

Habrá contribuciones de código abierto para implementaciones en otras capas de almacenamiento de las que elegir a medida que CDP crezca. Si no puedes encontrar una implementación para una capa de almacenamiento que te gustaría usar, también es posible desarrollar tu propia implementación de Datastore, que está más allá del alcance de este ejemplo, ya que implica un ejercicio de aprendizaje separado por sí mismo, ¡pronto disponible!

Exportando metadatos de la red al Datastore

Usa Galexie, un nuevo programa de línea de comandos CDP para exportar metadatos de red a datastores.

  • Sigue los pasos de configuración de Galexie en la Guía del Usuario de Galexie, para configurar detalles del bucket de GCS y la red de destino.

  • Sigue las instrucciones de ejecución de docker de Galexie para iniciar la exportación.

    • Para la exportación única de un rango histórico limitado de ledgers, usa append --start <from_ledger> --end <to_ledger>
    • Para una exportación continua de los ledgers anteriores y todos los nuevos ledgers generados en la red, usa append --start <from_ledger>.

Tubería de consumidores de metadatos del Ledger

Una tubería de consumidores recupera archivos del bucket de GCS y los usa como el origen de los metadatos del Ledger en una tubería de procesamiento de datos. Puede haber muchas tuberías de consumidores separadas accediendo a la misma Datastore al mismo tiempo. Cada tubería de consumidores típicamente desempeñará tres funciones distintas de procesadores de flujo:

Adaptador de entrada

La 'fuente de origen' de los metadatos del ledger en una tubería. Este procesador recupera archivos de metadatos del Ledger del Datastore de GCS, extrae el LedgerCloseMeta para cada Ledger y lo publica en la tubería de mensajería.

El SDK de Go proporciona la función de ayuda para consumidores ApplyLedgerMetadata para la recuperación automatizada, eficiente y en buffer de archivos del datastore remoto, el código de la aplicación puede aprovechar esto para adquirir datos puros de LedgerCloseMeta de una función de callback.

Transformador

Se suscribe en la tubería para recibir LedgerCloseMeta. Usa el paquete del SDK de Go github.com/stellar/go/xdr para analizar el modelo de metadatos del ledger para operaciones de pago y convertirlas en una nueva instancia del modelo de datos de la aplicación AppPayment. Publica AppPayment en la tubería.

Adaptador de salida

Actúa como la terminación de la tubería, se suscribe para recibir ApplicationPayment y publica los datos fuera de la tubería y a un almacén de datos externo, un Socket Publicador de ZeroMQ, que es esencialmente un intermediario de mensajes.

Resumen

Consulta la Aplicación de Ejemplo de Tubería de Ingestión para un ejemplo completo de código de consumidor, que demuestra una tubería de streaming en vivo contra la red Stellar, procesando los metadatos de cada nuevo ledger a medida que se cierra en la red.