Saltar al contenido principal

Migrar de Horizon a RPC

Las aplicaciones que utilizan [la API similar a REST de Horizon] deberán ser actualizadas para usar [la API JSON-RPC de RPC] al migrar de Horizon a RPC. Esta guía proporciona una visión general de las diferencias clave entre las dos APIs y cómo migrar tu aplicación.

Formato de Solicitud / Respuesta

La API similar a REST de Horizon utiliza métodos HTTP y códigos de estado para comunicarse con los clientes. Las respuestas son JSON en el formato 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 que es relativamente simple y no requiere ningún código especial del cliente, aunque hay SDKs disponibles para el cliente. Algunos valores contenidos están codificados en XDR y se pueden decodificar utilizando SDKs de Stellar.

Mapeo de Punto Final

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

Los puntos finales sin mapeos no tienen un reemplazo directo en la API de RPC. Para crear una funcionalidad similar en una aplicación, echa un vistazo a otros productos de Data.

Punto final de HorizonMétodo RPC
GET /getLatestLedger getVersionInfo getHealth getNetwork
GET /ledgersgetLedgers
GET /ledgers/{seq}getLedgers
GET /ledgers/{seq}/transactionsgetTransactions
GET /ledgers/{seq}/operationsgetTransactions
GET /ledgers/{seq}/paymentsgetEvents getTransactions ⚠️
GET /ledgers/{seq}/effectsgetEvents getTransactions ⚠️
POST /transactionssendTransaction
POST /transactions_asyncsendTransaction
GET /transactionsgetTransactions
GET /transactions/{hash}getTransaction
GET /transactions/{hash}/operationsgetTransaction
GET /transactions/{hash}/payments-
GET /transactions/{hash}/effects-
GET /operationsgetTransactions
GET /operations/{id}-
GET /operations/{id}/effects-
GET /fee_statsgetFeeStats simulateTransaction
GET /accounts-
GET /accounts/{address}getLedgerEntries
GET /claimable_balances-
GET /claimable_balances/{id}getLedgerEntries
GET /claimable_balances/{id}/transactions-
GET /claimable_balances/{id}/operations-
GET /liquidity_pools-
GET /liquidity_pools/{id}getLedgerEntries
GET /liquidity_pools/{id}/transactions-
GET /liquidity_pools/{id}/operations-
GET /liquidity_pools/{id}/effects-
GET /liquidity_pools/{id}/trades-
GET /offers-
GET /offers/{id}getLedgerEntries
GET /offers/{id}/trades-
GET /paymentsgetEvents getTransactions ⚠️
GET /effectsgetEvents getTransactions ⚠️
GET /tradesgetEvents getTransactions ⚠️
consejo

El método getTransactions se puede utilizar 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 para los puntos finales de Horizon.

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

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