Presentando el SDK de Golang para Stellar

Autor

Molly Karcher

Fecha de publicación

TL;DR:

Estamos consolidando nuestras herramientas de desarrollo Golang - incluyendo los clientes Horizon y RPC, SDK de Ingest y utilidades clave - en un único SDK de Go unificado para Stellar. Este cambio simplifica la experiencia de desarrollo, mejora la capacidad de descubrimiento y alinea el ecosistema Go con la estructura de otros SDKs de Stellar.


Por qué estamos haciendo este cambio

Durante años, los desarrolladores que trabajan en Stellar con Go han operado dentro de un único y extenso monorepo. Ese repositorio albergaba casi todo, pero no siempre estaba claro dónde estaban los límites.

En la práctica, esto significaba que los desarrolladores a menudo tenían que:

  • Buscar en el monorepo para encontrar componentes SDK utilizables, ya que vivían junto al código de servicio.
  • Adivinar qué paquetes eran seguros para depender, confiando en convenciones débiles como que los paquetes se nombraran “internal”.
  • Importar el cliente RPC desde un repositorio separado, rompiendo la experiencia unificada de otro modo.
  • Perderse de herramientas poderosas como el SDK de Ingest, simplemente porque no se mostraban claramente como parte del ecosistema SDK.
  • Navegar por una configuración de CI extensa, incluso para hacer los cambios más pequeños.

Esta estructura difuminaba líneas importantes: no era obvio qué paquetes de Go eran parte del paradigma de la Plataforma de Datos Componible (y, por lo tanto, diseñados para la reutilización) versus cuáles estaban estrechamente vinculados a Horizon u otros servicios. Esa falta de claridad dificultaba que la comunidad adoptara o extendiera nuestras herramientas de datos, aunque muchas de ellas se construyeron pensando en la reutilización.

Mientras tanto, los desarrolladores en otros lenguajes disfrutaban de una configuración más simple y clara. La mayoría de los SDKs de Stellar (JavaScript, Python, Java, etc.) ya ubican sus clientes Horizon y RPC en un único repositorio bien delimitado, con puntos de entrada explícitos y documentación.

El nuevo SDK de Go soluciona esto. Significa que solo los paquetes orientados a desarrolladores reutilizables permanecen en el monorepo, dejando claro qué es parte de la superficie oficial del SDK de Stellar. Se trata de descubribilidad, mantenibilidad y ofrecer a los desarrolladores de Go la misma experiencia cohesiva que se disfruta en otros lugares del ecosistema de Stellar.

Qué está cambiando

El repositorio de Go - previamente stellar/go - será renombrado a stellar/go-stellar-sdk para alinearse con las convenciones de nomenclatura adoptadas por la mayoría de los otros SDKs de Stellar y hacer su intención más clara para los usuarios finales. Esto significa que cualquier desarrollador que actualmente esté utilizando cualquiera de los siguientes clientes, bibliotecas o utilidades necesitará renombrar todas las declaraciones de importación de paquetes de github.com/stellar/go/* a github.com/stellar/go-stellar-sdk/*.

El nuevo SDK de Go Stellar contiene:

  • Cliente API de Horizon (horizonclient): para consultar una instancia de Horizon desplegada.
  • Cliente API de RPC (rpcclient) : Para interactuar con una instancia de RPC de Stellar desplegada.
  • Constructor de Transacciones (txnbuild): biblioteca que ayuda a construir transacciones.
  • SDK de Ingest: Para analizar datos brutos del libro mayor desde Captive Core o lagos de datos de Galexie.
  • Utilidades fundamentales: Paquetes comunes útiles como xdr y strkey.
  • Abstracciones de datos reutilizables: Procesadores o transformaciones para flujos de trabajo estilo ETL (como el Procesador de Transferencia de Tokens).

Al mismo tiempo, se están realizando varios cambios estructurales para simplificar el ecosistema Go y aclarar la propiedad:

  • Horizon, Galexie, y Friendbot se trasladaron a sus propios repositorios dedicados.
    • Los desarrolladores que construyan estos servicios desde el código fuente deberían comenzar a depender de los lanzamientos de estos nuevos repositorios.
    • La distribución de paquetes Debian preconstruidos e imágenes Docker permanecerá sin cambios.
  • Los servicios heredados que ya no son mantenidos activamente por SDF han sido obsoletos y eliminados. Estos permanecen disponibles en el historial de Git para cualquiera que desee bifurcarlos o mantenerlos de manera independiente. Los servicios afectados incluyen:
    • recoverysigner
    • webauth
    • market-tracker
    • regulated-assets
    • ticker
    • keystore
    • federation

Lo que viene después

Esta reorganización no es solo una limpieza, es un paso hacia una experiencia de desarrollo más clara y unificada en todo el ecosistema de Stellar. Con esta nueva estructura del SDK, podemos:

  • Ayudar a los desarrolladores a pasar de las API indexadas de Horizon a Stellar RPC o al modelo de datos brutos de Stellar.
  • Habilitar integraciones con productos de datos como Galexie u otros componentes de CDP.
  • Introducir abstracciones de alto nivel (al estilo de “procesadores”) de manera modular y consistente en diferentes lenguajes.
  • Fomentar más contribuciones externas a todos los componentes anteriores, con un repositorio que es menos intimidante y más modular.

Si eres un desarrollador de Go que actualmente utiliza Horizon, RPC, el SDK de Ingest o cualquier otra utilidad de Golang mantenida por el SDK, nos encantaría recibir tus comentarios (¡o contribuciones!) mientras continuamos dando forma a esta experiencia unificada de SDF. Comparte tus pensamientos en nuestro Discord de Desarrolladores o participa en la Discusión de Github.