Mejores prácticas de RPC
Un resumen condensado de las 25 prácticas de RPC más importantes extraídas de todas las páginas de esta sección.
-
Nunca publiques en producción sobre RPC público: Utiliza un proveedor de pago o un nodo autoalojado con SLA (Proveedores de RPC).
-
Almacena las claves en variables de entorno: Nunca incluyas claves de API en el código; proxy tus lecturas sensibles a través de tu backend.
-
Empareja las URL HTTP y WSS: Las suscripciones necesitan
wss://del mismo panel de proveedor (Suscripciones WebSocket). -
Establece el compromiso explícitamente: Por defecto usa
confirmedpara la UX;finalizedpara la tesorería (Conceptos básicos de RPC). -
Verifica si
getAccountInfodevuelve null:value: nullsignifica que la cuenta no existe; no decodifiques ciegamente (Métodos RPC principales). -
Prefiere
getMultipleAccounts: Agrupa las claves públicas conocidas en lugar de N llamadas seriales agetAccountInfo. -
Nunca ejecutes
getProgramAccountssin filtrar en mainnet: Siempre usa filtrosmemcmp/dataSizeo utiliza un indexador (getProgramAccountsy filtros). -
Divide los lotes grandes: 50-100 cuentas por solicitud de
getMultipleAccounts(Paginación y eficiencia). -
Paginación de firmas en el lado del servidor: El cursoring de
getSignaturesForAddresspertenece a tu API, no a los clientes móviles para ballenas. -
Aborta las suscripciones WebSocket: Limpia al desmontar para evitar fugas de conexión.
-
Usa
signatureNotificationspara confirmaciones: Prefiere suscripciones sobre bucles de sondeo de 200 ms. -
Simula antes de enviar a mainnet: Lee
unitsConsumedy los logs (APIs de tarifa de prioridad y simulación). -
Actualiza las tarifas de prioridad por lote: Las muestras obsoletas de
getRecentPrioritizationFeessubestiman el precio durante la congestión. -
Añade margen de CU: Establece el límite de unidades de cómputo al 110% del consumo simulado.
-
Usa DAS para NFTs de billetera:
getAssetsByOwnersupera agetProgramAccountsmanual de metadatos (La API DAS). -
Mantén documentadas las URL de DAS y RPC: Pueden diferir en los paneles de los proveedores.
-
Implementa failover de RPC: URL secundaria en caso de 429/503 con backoff exponencial.
-
Limita la tasa de tus propios clientes: Protege la cuota del proveedor de tormentas de reintentos.
-
Alinea la RPC de la CLI y la aplicación:
solana config getdebe coincidir conRPC_URLal depurar. -
Caché solo de datos inmutables: TTL corto para metadatos de acuñación; nunca caches saldos post-swap sin invalidación.
-
Monitoriza el lag de slots: La detección de RTT y bloqueo de
getSlotalerta sobre endpoints no saludables. -
Evita
getTransactionintensivo en navegadores: Proxy a través de un indexador para vistas de historial. -
Usa
jsonParsedselectivamente: Vuelve abase64+ decodificación IDL cuando el analizador no sea compatible. -
Planifica la migración del indexador con anticipación: Si los escaneos de GPA o historial superan miles de filas, inicia el pipeline de Geyser (Conceptos básicos de indexación).
-
Fija
@solana/kit7.0.0: La RPC tipada reduce los errores de parámetros en comparación confetchcrudo.
Preguntas frecuentes
¿Cuál es el mayor error de RPC?
getProgramAccounts sin filtrar en mainnet en producción: tiempos de espera, costos y prohibiciones.
¿La RPC pública está bien alguna vez?
Solo para prototipos locales y uso ocasional de la CLI: no para tráfico de mainnet orientado al usuario.
¿Cómo se relacionan las prácticas de RPC con el aterrizaje de transacciones?
Las RPC de simulación y tarifa de prioridad alimentan las decisiones del presupuesto de cómputo: consulta la sección de optimización de transacciones.
Relacionados
- Conceptos básicos de RPC - entrada de sección
- Proveedores de RPC - elección de proveedor
- Paginación y eficiencia - patrones de escala
- Mejores prácticas de indexación - más allá de RPC
Versiones de la pila: Esta página se escribió para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0 y LiteSVM 0.6.x.