Resumen
Este tutorial explica cómo una aplicación puede aprovechar la arquitectura CDP para crear pipelines de metadatos rápidos y livianos del Stellar Ledger utilizando unos pocos paquetes selectos del repositorio de Stellar Go github.com/stellar/go-stellar-sdk, conocidos colectivamente como el SDK de 'Ingestión':
Los paquetes del SDK de Ingestión
- Paquete utilitario
github.com/stellar/go-stellar-sdk/amountpara convertir precios de operaciones de transacciones en la red a cadena de texto - Paquete utilitario
github.com/stellar/go-stellar-sdk/historyarchivegithub.com/stellar/go-stellar-sdk/support/datastoregithub.com/stellar/go-stellar-sdk/support/storagecon wrappers convenientes para acceder a archivos históricos y evitar aspectos HTTP de bajo nivel github.com/stellar/go-stellar-sdk/ingestproporciona funcionalidad de análisis sobre los metadatos del ledger en red, convierte al modelo más centrado en el desarrolladorLedgerTransactiongithub.com/stellar/go-stellar-sdk/networkofrece configuraciones preconfiguradas convenientes para las redes Testnet y Mainnetgithub.com/stellar/go-stellar-sdk/xdruna vinculación completa en 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:
- Una estación de trabajo de desarrollador con el runtime del lenguaje de programación Go instalado
- Un IDE para editar código Go, VSCode es bueno si se necesita uno
- Una carpeta de proyecto Go nueva e inicializada, vacía.
mkdir pipeline; cd pipeline; go mod init example/pipeline - Alguna familiaridad con el modelo de metadatos del Ledger Stellar. Se define en un formato IDL expresado en código XDR.
- Docker
- Cuenta de Google Cloud Platform:
- un bucket creado en Google Cloud Storage(GCS)
- Credenciales de GCP en el entorno de la estación de trabajo
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:
- Ejemplo
::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 pipeline debe iniciarse primero, es responsable de exportar metadatos del Stellar Ledger como archivos a un CDP Datastore.
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 encuentras una implementación para una capa de almacenamiento que deseas usar, también es posible desarrollar tu propia implementación de Datastore, lo cual está fuera del alcance de este ejemplo, ya que implica un ejercicio de aprendizaje separado que llegará pronto.
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 específicos del bucket de GCS y la red objetivo.
-
Sigue las instrucciones de ejecución de Galexie con Docker 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>.
- Para la exportación única de un rango histórico limitado de ledgers, usa
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 LedgerCloseMeta del GCS Datastore, extrae el LedgerCloseMeta para cada Ledger y lo publica en la pipeline de mensajería.
El SDK de Go proporciona la función auxiliar para consumidores ApplyLedgerMetadata para la recuperación automatizada, eficiente y en búfer de archivos desde el datastore remoto; el código de la aplicación puede aprovechar esto para adquirir datos puros de LedgerCloseMeta desde una función callback.
Transformador
Se suscribe en la tubería para recibir LedgerCloseMeta. Utiliza el paquete Go SDK github.com/stellar/go-stellar-sdk/xdr para analizar el modelo de metadatos del ledger para operaciones de pago y convertirlos en nuevas instancias 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.