Saltar al contenido principal

Core cautivo

Core cautivo invoca el binario stellar-core como un subproceso para transmitir ledgers desde la red Stellar. Se puede utilizar para transmitir un rango de ledgers del pasado o para transmitir nuevos ledgers siempre que sean confirmados por la red.

Requisitos previos

Usar Core cautivo requiere que el binario stellar-core esté instalado primero.

Instalación

  1. Instalar Stellar Core:

  2. Verificar instalación:

    ./stellar-core version

Configuración y uso

Establece la configuración del core cautivo para la red Stellar objetivo en formato TOML. Esta configuración requiere como mínimo:

  • La frase de paso de la red Stellar a la que deseas conectarte.
  • La ruta a los archivos de historial, necesarios para la inicialización.

Paso 1: Generar una configuración CaptiveCoreToml

captiveCoreToml, err := ledgerbackend.NewCaptiveCoreTomlFromData(
ledgerbackend.PubnetDefaultConfig,
ledgerbackend.CaptiveCoreTomlParams{
NetworkPassphrase: network.PublicNetworkPassphrase,
HistoryArchiveURLs: network.PublicNetworkhistoryArchiveURLs,
},
)

if err != nil {
// Handle error
}

Paso 2: Construir un objeto CaptiveCoreConfig

A continuación, crea un objeto CaptiveCoreConfig. Este objeto combina la configuración CaptiveCoreToml con la ruta a tu binario stellar-core y otros parámetros necesarios.

config := ledgerbackend.CaptiveCoreConfig{
BinaryPath: "/usr/local/bin/stellar-core", // Adjust to your stellar-core binary path
NetworkPassphrase: network.PublicNetworkPassphrase,
HistoryArchiveURLs: network.PublicNetworkhistoryArchiveURLs,
Toml: captiveCoreToml,
}

Paso 3: Instanciar CaptiveStellarCore

Finalmente, crea una instancia de CaptiveStellarCore utilizando la función NewCaptive. Esta función gestiona el ciclo de vida completo del proceso stellar-core, incluida la comunicación con tu aplicación.

captiveStellarCoreBackend, err := ledgerbackend.NewCaptive(config)
if err != nil {
// Handle error
}

El captiveStellarCoreBackend ahora se puede usar para recuperar datos de ledger dentro de un rango especificado. Para un uso detallado, consulta los ejemplos de código.