Saltar al contenido principal

Migrar de Horizon a RPC

Las aplicaciones que usan la [API REST-like de Horizon] necesitarán actualizarse para usar la API JSON-RPC RPC al migrar de Horizon a RPC. Esta guía ofrece una visión general de las principales diferencias entre las dos APIs y cómo migrar tu aplicación.

Formato de solicitud / respuesta

La API tipo REST de Horizon utiliza métodos HTTP y códigos de estado para comunicarse con los clientes. Las respuestas están en formato JSON HAL. Consulta [El formato de respuesta de Horizon].

La API JSON-RPC de RPC utiliza JSON-RPC 2.0 para comunicarse con los clientes. Las solicitudes a la API son objetos JSON que contienen una o más invocaciones de métodos. Las respuestas también son objetos JSON que contienen un resultado para cada invocación en la solicitud. Consulta JSON-RPC.

Ambos formatos utilizan JSON para la estructura general, son relativamente simples y no requieren código cliente especial, aunque hay SDKs cliente disponibles. Algunos valores que contienen están codificados en XDR y pueden decodificarse usando los SDKs de Stellar.

Mapeo de endpoint

Las aplicaciones que utilizan los siguientes endpoints de Horizon normalmente pueden migrar directamente a RPC usando los métodos referenciados.

Los endpoints sin asignaciones no tienen un reemplazo directo en la API RPC. Para crear una funcionalidad similar en una aplicación, considera asociarte con un indexador o usar la información a continuación para crear tu propia representación indexada de los endpoints de Horizon. Considera usar otros productos Data para casos de uso analíticos.

Endpoint de HorizonMétodo(s) RPC correspondiente(s)Equivalente en IndexerRecursos de análisis
GET /getLatestLedger getVersionInfo getHealth getNetworkNo aplicableGuía para analistas
GET /ledgersgetLedgersCrea un getLedgers con historial completo, usando Galexie, para crear una vista histórica del ledger.Ledgers
GET /ledgers/{seq}getLedgers (con filtro para secuencia)Usa una vista getLedgers con historial completo, filtrada por secuencia del ledgerLedgers
GET /ledgers/{seq}/transactionsgetTransactions (con filtro por secuencia del ledger)Usa getTransactions con filtro por secuencia del ledger para obtener las transacciones de un ledger específicoTransacciones
GET /ledgers/{seq}/operationsgetTransactionsUsa getTransactions para el ledger dado, luego analiza el XDR de la transacción para operaciones individuales.Operaciones
GET /ledgers/{seq}/paymentsgetEvents getTransactions ⚠️Usa getEvents (específicamente eventos CAP-67 cuando estén disponibles) y analiza el meta XDR de getTransactions para identificar operaciones parecidas a pagos.Pagos
GET /ledgers/{seq}/effectsgetEvents getTransactions ⚠️Usa getEvents (cuando se amplíe para cubrir todos los efectos con CAP-67) y analiza el meta XDR de getTransactions para obtener datos relevantes.Efectos
POST /transactionssendTransactionNo aplicableNo aplicable
POST /transactions_asyncsendTransactionNo aplicableNo aplicable
GET /transactionsgetTransactionsUsa getTransactions para crear una lista histórica de transaccionesTransacciones
GET /transactions/{hash}getTransactionUsa getTransaction para recuperar una transacción específica por su hashTransacciones
GET /transactions/{hash}/operationsgetTransactionFiltra getTransaction por hash y luego analiza su XDR para obtener operacionesOperaciones
GET /transactions/{hash}/paymentsNo existe equivalente directo en RPC; usa getEvents o analiza getTransactionsFiltra getTransaction por hash y analiza sus eventos y tipos de operación para identificar pagos.Pagos
GET /transactions/{hash}/effectsNo existe equivalente directo en RPC; usa getEvents o analiza getTransactionsFiltra getTransaction por hash y analiza sus eventos y metadata para obtener datos relevantes.Efectos
GET /operationsgetTransactionsIngiere todos los ledgers/transacciones históricas y crea y crea una vista de operaciones para filtrar.Operaciones
GET /operations/{id}No existe equivalente directo en RPCAlmacena el ID de operación de Horizon y mapea de vuelta a la secuencia del ledger y al índice de la transacción para recuperar la transacción relevante vía getTransactions.Operaciones
GET /operations/{id}/effectsNo existe equivalente directo en RPCRecupera la operación por ID (como arriba) y luego analiza su transacción asociada y eventos para obtener efectos.Efectos
GET /fee_statsgetFeeStats simulateTransactionDatos indexados no recomendados.Estadísticas de tarifas
GET /accountsNo existe equivalente directo en RPCIngiere todo el historial de ledger vía getLedgers para crear y mantener una lista completa de cuentas.Cuentas
GET /accounts/{address}getLedgerEntriesUsa getLedgerEntries para una dirección específica de cuenta. Nota: RPC no proporcionará información de líneas de confianza asociadas con la cuenta directamente, como lo hace Horizon. Necesitarás derivar esta información a partir de las entradas del ledger.Cuentas
GET /claimable_balancesNo existe equivalente directo en RPCIngiere todo el historial del ledger vía getLedgers para crear y mantener una lista completa de saldos reclamables.Saldos reclamables
GET /claimable_balances/{id}getLedgerEntriesUsa getLedgerEntries para recuperar un saldo reclamable específico por ID.Saldos reclamables
GET /claimable_balances/{id}/transactionsNo existe equivalente directo en RPCRastrea las transacciones que interactúan con un saldo reclamable específico a partir de sus datos históricos de ledger.Saldos reclamables
GET /claimable_balances/{id}/operationsNo existe equivalente directo en RPCRastrea las operaciones relacionadas con un saldo reclamable específico a partir de los datos históricos del ledger.Saldos reclamables
GET /liquidity_poolsNo existe equivalente directo en RPCIngiere todo el historial del ledger vía getLedgers para crear y mantener una lista completa de fondos de liquidez.Fondos de Liquidez
GET /liquidity_pools/{id}getLedgerEntriesUsa getLedgerEntries para recuperar un fondo de liquidez específico por ID.Fondos de Liquidez
GET /liquidity_pools/{id}/transactionsNo existe equivalente directo en RPCRastrea las transacciones que interactúan con un fondo de liquidez específico a partir de sus datos históricos de ledger.Fondos de Liquidez
GET /liquidity_pools/{id}/operationsNo existe equivalente directo en RPCRastrea las operaciones relacionadas con un fondo de liquidez específico a partir de los datos históricos del ledger.Fondos de Liquidez
GET /liquidity_pools/{id}/effectsNo existe equivalente directo en RPCRastrea efectos relacionados con un fondo de liquidez específico a partir de los datos históricos del ledger.Fondos de Liquidez
GET /liquidity_pools/{id}/tradesNo existe equivalente directo en RPCInfiera operaciones relacionadas con un fondo de liquidez específico a partir de los datos históricos del ledger (por ejemplo, de getEvents y metadatos de getTransactions).Fondos de Liquidez
GET /offersNo existe equivalente directo en RPCIngiere todo el historial del ledger vía getLedgers para crear y mantener una lista completa de ofertas.Ofertas
GET /offers/{id}getLedgerEntriesUsa getLedgerEntries para recuperar una oferta específica por ID.Ofertas
GET /offers/{id}/tradesNo existe equivalente directo en RPCInfiera operaciones relacionadas con una oferta específica a partir de los datos históricos del ledger (por ejemplo, de getEvents y metadatos de getTransactions).Ofertas
GET /paymentsgetEvents getTransactions ⚠️Usa getEvents (eventos CAP-67) y procesa metadatos de getTransactions para operaciones parecidas a pagos a lo largo de toda la historia.Pagos
GET /effectsgetEvents getTransactions ⚠️Usa getEvents (cuando se amplíe) y procesa metadatos de getTransactions para derivar efectos a lo largo de toda la historia.Efectos
GET /tradesgetEvents getTransactions ⚠️Infiera operaciones a partir de metadatos de getEvents y getTransactions a lo largo de toda la historia, ya que no existe un "evento de operación" directo en RPC.Operaciones
consejo

El método getTransactions puede usarse para recuperar eventos agrupados por transacción. Los eventos están contenidos en el meta XDR de la transacción (campo resultMetaXdr).

advertencia

El método getEvents no es un reemplazo directo de los endpoints de Horizon.

El método devuelve un flujo de eventos que actualmente solo incluye eventos de contratos en el protocolo actual. En un futuro cercano, como resultado de CAP-67, este método se ampliará para incluir eventos de operaciones no relacionadas con contratos.

Mientras tanto, el método getTransactions puede usarse para recuperar el meta XDR de transacciones que contienen operaciones no relacionadas con contratos para determinar qué movimientos de valor han ocurrido. El meta XDR también contiene eventos de contratos.