Saltar al contenido principal

Migrar de Horizon a RPC

Las aplicaciones que utilizan la API REST-like 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 principales diferencias entre las dos APIs y cómo migrar tu aplicación.

Formato de Solicitud / Respuesta

La API REST-like 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 de cliente disponibles. Algunos valores contenidos dentro están codificados en XDR y se pueden decodificar utilizando SDKs de Stellar.

Mapeo de Puntos Finales

Las aplicaciones que utilizan los siguientes puntos finales de Horizon pueden típicamente 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 puede utilizarse 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 puede utilizarse para recuperar el meta XDR de las transacciones que contienen operaciones no contractuales para determinar qué movimientos de valor han ocurrido. El meta XDR también contiene eventos de contratos.