Resumen
Los nodos JSON-RPC estándar de Solana exponen métodos principales como getAccountInfo y getProgramAccounts, pero no devuelven metadatos de NFT decodificados, agrupaciones de colecciones ni el estado de NFT comprimidos (cNFT). Los proveedores que incluyen API mejoradas añaden endpoints indexados y conscientes de NFT sobre el nodo sin procesar, para que puedas consultar activos, colecciones y metadatos de tokens sin escribir tu propio indexador DAS. OnFinality ofrece RPC de Solana e infraestructura de nodo dedicado con transportes HTTP y WebSocket, y puedes combinarlo con una capa de indexación para lecturas específicas de NFT.
Recomendación rápida
Si tu aplicación necesita metadatos de NFT decodificados, pertenencia a colecciones o el estado de NFT comprimidos (cNFT), un nodo JSON-RPC de Solana simple no te lo dará. Necesitas un proveedor que superponga una API indexada y consciente de NFT sobre el nodo. En la práctica, eso significa una de dos configuraciones:
- Un proveedor con una API mejorada de NFT integrada (a menudo un endpoint de Digital Asset Standard, o DAS) que devuelve activos, colecciones y metadatos en una sola llamada.
- Un proveedor de RPC de Solana sin procesar más tu propio indexador, donde ejecutas el nodo y un servicio de indexación separado que lee el estado en cadena y sirve consultas de NFT.
OnFinality proporciona RPC de Solana e infraestructura de nodo dedicado sobre HTTP y WebSocket, que es la capa de nodo de la que dependen ambas configuraciones. Si quieres lecturas conscientes de NFT sin operar un indexador, confirma la superficie de API mejorada del proveedor antes de comprometerte. Si quieres control total sobre cómo se estructuran los datos de NFT, ejecuta el nodo a través de un proveedor como OnFinality y añade tu propia capa de indexación.
Por qué el RPC estándar de Solana se queda corto para datos de NFT
El JSON-RPC base de Solana está orientado a cuentas, no a activos. Un nodo puede decirte los bytes sin procesar almacenados en una cuenta, pero no sabe que una cuenta en particular es un NFT, a qué colección pertenece o qué dicen sus metadatos fuera de la cadena. Ese trabajo de decodificación es tarea de un indexador.
Esto importa porque la mayoría de las lecturas de NFT no son búsquedas de una sola cuenta. Son consultas como "todos los NFT que posee esta billetera", "cada elemento de esta colección" o "el estado actual de este árbol de NFT comprimidos". Responder esas consultas desde RPC sin procesar significa escanear muchas cuentas y analizar metadatos tú mismo, lo cual es lento y costoso a escala.
Las API mejoradas de NFT existen para cerrar esa brecha. Mantienen un índice de activos y exponen métodos que devuelven resultados estructurados, para que tu cliente no tenga que reconstruir el estado de los NFT a partir de cuentas sin procesar.
Qué significa realmente "API mejorada para datos de NFT"
La frase abarca varias cosas diferentes, y los proveedores la usan de forma flexible. Al evaluar un proveedor, separa estas capas:
| Capa | Qué devuelve | Forma típica del método |
|---|---|---|
| RPC de nodo sin procesar | Bytes de cuenta, saldos, slots | getAccountInfo, getProgramAccounts |
| RPC de token/metadatos | Cuentas de token SPL y metadatos de Metaplex | getTokenAccountsByOwner, lecturas de cuentas de metadatos |
| API de activos mejorada (estilo DAS) | Activos decodificados, colecciones, propiedad, cNFT | getAssetsByOwner, getAsset, getAssetsByGroup |
| Indexador personalizado | El esquema que definas | Tu propio endpoint HTTP/GraphQL |
La capa estilo DAS es lo que la mayoría de los desarrolladores entiende por "API mejorada de NFT". Es un servicio indexado, no un método de nodo, por lo que puede estar en el mismo proveedor o en uno separado.
Matriz de evaluación de proveedores para cargas de trabajo de NFT
Usa esto para comparar proveedores en las dimensiones que realmente afectan las lecturas de NFT. Asigna tus propios pesos a cada fila según cuántos datos de NFT sirva tu aplicación.
| Área de evaluación | Qué confirmar | Por qué importa para datos de NFT |
|---|---|---|
| API mejorada/DAS | Si se ofrece una API de activos indexada y qué métodos | Determina si puedes consultar activos sin tu propio indexador |
| Soporte de cNFT | Si los NFT comprimidos están indexados | El RPC estándar no puede enumerar cNFT de forma eficiente |
| Acceso a nodo sin procesar | Disponibilidad de HTTP y WebSocket | Necesario para escrituras, suscripciones y lecturas de respaldo |
| Transporte | HTTP, WebSocket y cualquier opción estilo gRPC | Las suscripciones y los mints en tiempo real necesitan WebSocket |
| Capacidad dedicada | Si puedes obtener un nodo dedicado | Aísla los escaneos pesados de getProgramAccounts del tráfico compartido |
| Frescura de datos | Con qué frecuencia se actualiza el índice | Los índices obsoletos devuelven propiedad incorrecta tras transferencias |
| Conmutación por error | Cómo cambias de endpoint si uno se degrada | Los mercados de NFT no pueden permitirse fallos silenciosos de lectura |
OnFinality se sitúa en las filas de nodo sin procesar y capacidad dedicada: proporciona RPC de Solana sobre HTTP y WebSocket, y nodos dedicados para cargas de trabajo que necesitan capacidad aislada. Para la capa de activos mejorada, confirma el servicio de indexación que planeas usar y cómo se conecta a tu nodo.
Conexión al RPC de Solana
Cualquier capa mejorada que elijas, en última instancia lee de un nodo de Solana. OnFinality expone un endpoint HTTP público y un endpoint WebSocket correspondiente para la mainnet de Solana:
# HTTP JSON-RPC
curl https://solana.api.onfinality.io/public \
-X POST -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"getHealth"}'
// WebSocket subscription for account changes (e.g. a mint or metadata account)
import WebSocket from "ws";
const ws = new WebSocket("wss://solana.api.onfinality.io/public-ws");
ws.on("open", () => {
ws.send(JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "accountSubscribe",
params: [
"<METADATA_ACCOUNT_PUBKEY>",
{ encoding: "jsonParsed", commitment: "confirmed" }
]
}));
});
ws.on("message", (data) => {
console.log("account update:", data.toString());
});
Para producción, apunta tu aplicación a un endpoint dedicado o gestionado en lugar del público. Consulta RPC de Solana para los detalles actuales del endpoint y Precios de RPC para opciones de capacidad.
Leer datos de NFT sin una API mejorada
Si decides ejecutar tu propio indexador, el nodo sigue haciendo el trabajo pesado. Un patrón común es obtener las cuentas de token de una billetera y luego resolver la cuenta de metadatos de cada mint:
// 1. Get token accounts owned by a wallet
const owner = "<WALLET_PUBKEY>";
const res = await fetch("https://solana.api.onfinality.io/public", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "getTokenAccountsByOwner",
params: [owner, { programId: "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" }, { encoding: "jsonParsed" }]
})
});
const { result } = await res.json();
console.log(result.value.length, "token accounts");
A partir de ahí, derivas la PDA de metadatos de Metaplex para cada mint y la lees, o pasas la lista de mints a tu indexador. Esto es más trabajo que llamar a getAssetsByOwner, pero te mantiene independiente de la API mejorada de cualquier proveedor único.
Cuándo usar una API mejorada frente a tu propio indexador
No hay una respuesta universalmente correcta. La disyuntiva es control frente a carga operativa.
- Elige la API mejorada de NFT de un proveedor cuando quieras rapidez de comercialización, tus consultas encajen en el conjunto de métodos del proveedor y te sientas cómodo dependiendo de la frescura y el esquema de su índice.
- Ejecuta tu propio indexador en un nodo gestionado cuando necesites campos de NFT personalizados, uniones entre programas o un esquema que tu producto controle, y puedas absorber el trabajo de indexación y relleno.
- Usa ambos cuando quieras la API mejorada para lecturas comunes y tu propio índice para consultas específicas del producto, con el nodo como fuente compartida de verdad.
Una configuración híbrida es común en mercados: API mejorada para descubrimiento y búsqueda, índice propio para clasificación, precios y analítica.
Lista de verificación de preparación para producción
Antes de enrutar tráfico de NFT a cualquier proveedor, confirma estos puntos:
- Aislamiento de endpoints. Los escaneos pesados de
getProgramAccountso metadatos no deben compartir capacidad con lecturas sensibles a la latencia. Considera un nodo dedicado. - Cobertura de transporte. Tienes endpoints HTTP y WebSocket, y tu cliente maneja reconexiones.
- Expectativas de frescura del índice. Sabes con qué rapidez aparecen los cambios de propiedad en la API mejorada tras una transferencia o un mint.
- Ruta de conmutación por error. Puedes cambiar a un segundo endpoint o proveedor sin volver a desplegar.
- Niveles de compromiso. Entiendes cómo
processed,confirmedyfinalizedafectan el estado de NFT que ves. - Comportamiento de tasa y ráfagas. Sabes cómo maneja tu proveedor los picos de tráfico durante mints o drops.
- Observabilidad. Registras latencia de solicitudes, tasas de error y retraso del índice para detectar degradación a tiempo.
Modos de fallo comunes con datos de NFT en Solana
- Propiedad obsoleta. El índice mejorado no se ha puesto al día con una transferencia reciente, por lo que la aplicación muestra el propietario incorrecto. Mitígalo leyendo el estado final para acciones críticas de propiedad.
- Vacíos en la enumeración de cNFT. Los NFT comprimidos no siempre están indexados por todos los proveedores. Confirma explícitamente el soporte de cNFT si tu aplicación los usa.
- Fallos en la obtención de metadatos. Las URI de metadatos fuera de la cadena pueden ser lentas o no estar disponibles; cachea agresivamente y maneja tiempos de espera.
- Sobrecarga de
getProgramAccounts. Los escaneos amplios contra endpoints compartidos pueden ser lentos o limitados. Acota los filtros con precisión o pásate a un nodo dedicado. - Deriva de esquema. Las formas de respuesta de la API mejorada pueden cambiar entre versiones. Fija tu cliente a una versión conocida y prueba las actualizaciones.
Puntos clave
- El RPC estándar de Solana no devuelve datos de NFT decodificados; las API mejoradas son servicios indexados superpuestos a un nodo.
- "API mejorada" normalmente significa una API de activos estilo DAS con métodos como
getAssetsByOwnerygetAssetsByGroup. - Puedes obtener datos de NFT ya sea desde la API mejorada de un proveedor o ejecutando tu propio indexador contra un nodo sin procesar.
- OnFinality proporciona RPC de Solana sobre HTTP y WebSocket, además de nodos dedicados, que es la capa de nodo que ambos enfoques necesitan.
- Evalúa proveedores por cobertura de API mejorada, soporte de cNFT, transporte, capacidad dedicada, frescura del índice y conmutación por error.
- Confirma la frescura del índice y el soporte de cNFT antes de comprometerte, y mantén un endpoint de conmutación por error listo.
Preguntas frecuentes
¿OnFinality incluye una API mejorada de NFT? OnFinality proporciona RPC de Solana e infraestructura de nodo dedicado sobre HTTP y WebSocket. Para lecturas mejoradas específicas de NFT, confirma la capa de indexación que planeas usar y cómo se conecta a tu nodo. Consulta RPC de Solana para detalles del endpoint.
¿Puedo obtener metadatos de NFT desde un nodo RPC estándar de Solana? Puedes leer cuentas de token y metadatos sin procesar, pero debes decodificarlas e indexarlas tú mismo. Un nodo estándar no devuelve datos estructurados de activos o colecciones.
¿Qué es una API DAS?
Digital Asset Standard (DAS) es una interfaz común para consultar activos indexados de Solana, incluidos NFT y NFT comprimidos, con métodos como getAsset y getAssetsByOwner.
¿Necesito un nodo dedicado para cargas de trabajo de NFT?
No siempre, pero los escaneos pesados de metadatos o las consultas getProgramAccounts se benefician de capacidad aislada para no afectar otro tráfico. Consulta nodos dedicados.
¿Cómo cambio de proveedor sin romper mi aplicación? Mantén la configuración de endpoints externa, admite múltiples endpoints y prueba la conmutación por error. Una breve lista de verificación para seleccionar proveedor te ayuda a comparar opciones antes de migrar.
¿Dónde puedo ver qué redes admite OnFinality? Explora las redes RPC compatibles y consulta Precios de RPC para detalles de capacidad y planes.