Introduciendo el SDK de Golang Stellar

Autor

Molly Karcher

Fecha de publicación

TL;DR:

Estamos consolidando nuestras herramientas de desarrollador de Golang - incluyendo los clientes de Horizon y RPC, SDK de Ingest y utilidades clave - en un único SDK de Go unificado para Stellar. Este cambio simplifica la experiencia del desarrollador, 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 construyen en Stellar con Go han trabajado 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 del servicio.
  • Adivinar qué paquetes eran seguros para depender, confiando en convenciones débiles como que los paquetes se nombraran “internal”.
  • Importar el cliente RPC de 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 desdibujaba líneas importantes: no era obvio qué paquetes de Go formaban parte del paradigma de la Plataforma de Datos Componible (y por lo tanto diseñados para 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 de Horizon y RPC en un único repositorio bien definido, con puntos de entrada explícitos y documentación.

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

Qué está cambiando

El repo de Go - previamente stellar/go - será renombrado a stellar/go-stellar-sdk para alinearse con las convenciones de nombres 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é usando 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 de API de Horizon (horizonclient): para consultar una instancia de Horizon desplegada.
  • Cliente de 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 de 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 de Go y aclarar la propiedad:

  • Horizon, Galexie, y Friendbot se trasladaron a sus propios repositorios dedicados.
    • Los desarrolladores que construyen 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 de Docker permanecerá sin cambios.
  • Los servicios heredados que ya no son mantenidos activamente por SDF han sido descontinuados 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 desarrollador 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 RPC de Stellar 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 (a la “procesadores”) de manera modular y consistente a través de los 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 usa Horizon, RPC, el SDK de Ingest o cualquier otra utilidad de Golang mantenida por SDK, nos encantaría tu feedback (¡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.