Saltar al contenido principal

Migrar de Horizon a RPC

Las aplicaciones que utilizan la [API similar a REST de Horizon] necesitará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 API y cómo migrar tu aplicación.

Formato de Solicitud / Respuesta

La API de Horizon, similar a REST, utiliza métodos y códigos de estado HTTP 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étodo. 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 de cliente especial, aunque hay SDKs de cliente disponibles. Algunos valores contenidos dentro de estos están codificados en XDR y pueden decodificarse utilizando Stellar SDKs.

Mapeo de Endpoint

Las aplicaciones que utilizan los siguientes puntos finales de Horizon pueden típicamente migrar directamente a RPC utilizando los métodos referenciados.

Los endpoints sin mapeos no tienen un reemplazo directo en la API 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 endpoints 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 utilizar 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.