Resumen
La integración del staking de Solana no es una sola llamada a una API. Se combina el acceso RPC para leer cuentas de stake y enviar transacciones, una interfaz de programa de staking (staking nativo o un protocolo de staking líquido) y una capa de wallet o firmante. El endpoint RPC es la base, porque cada acción de stake, delegate, deactivate y withdraw es una transacción de Solana que debe construirse, simularse y confirmarse a través de un nodo RPC.
Este artículo describe la superficie de API que realmente necesitas, muestra cómo leer y construir transacciones de staking mediante JSON-RPC y explica cómo elegir un proveedor RPC que mantenga los flujos de staking ágiles a medida que crece tu base de usuarios. OnFinality ofrece RPC de Solana e infraestructura de nodos dedicados a la que puedes apuntar tu integración de staking.
El staking de Solana parece simple desde la interfaz de una wallet: elige un validador, ingresa un monto, confirma. En realidad, es una secuencia de transacciones on-chain contra el programa de stake de Solana, y cada una de esas transacciones debe construirse, simularse, firmarse y confirmarse a través de un nodo RPC. Así que la respuesta honesta a "qué API integra el staking de Solana" es que no existe una única API de staking. Hay una pila de API, y la capa RPC es la que no puedes omitir.
Esta página desglosa esa pila en sus partes, muestra los métodos JSON-RPC que llamarás con más frecuencia y te da una forma de decidir sobre qué proveedor construir.
¿Qué capa necesitas realmente?
Antes de elegir un proveedor, decide qué tipo de integración de staking estás construyendo. La superficie de API cambia mucho según la respuesta.
- Staking nativo (tu propia interfaz): Tú construyes y envías las instrucciones del programa de stake. Necesitas acceso RPC completo más un firmante. Esto te da el mayor control y la mayor responsabilidad.
- Integración con protocolo de staking líquido: Llamas al programa o SDK de un protocolo, que acuña un token de recibo. Aún necesitas RPC para leer el estado y enviar transacciones, pero la lógica de staking vive en el protocolo.
- Staking custodial o gestionado: Un proveedor maneja las claves y la delegación. Integras su API, pero aún deberías entender la capa RPC para monitoreo y conciliación.
Si estás construyendo staking nativo, tu proveedor RPC es efectivamente parte de tu producto. Si estás integrando un protocolo de staking líquido, tu proveedor RPC es tu capa de confiabilidad. En cualquier caso, la siguiente sección es la misma.
Los métodos RPC detrás de cada acción de staking
La API JSON-RPC de Solana es cómo lees el estado del stake y envías transacciones. Los métodos a continuación cubren el flujo de trabajo central del staking.
| Tarea | Método JSON-RPC | Notas |
|---|---|---|
| Leer una cuenta de stake | getAccountInfo | Decodifica el estado de la cuenta de stake (delegada, activando, activa, desactivando) |
| Listar las cuentas de stake de una wallet | getProgramAccounts | Filtra por el programa de stake y el propietario; puede ser pesado, así que acota los filtros |
| Obtener el blockhash reciente | getLatestBlockhash | Requerido para cada transacción que construyas |
| Simular antes de enviar | simulateTransaction | Detecta errores de instrucción antes de gastar comisiones |
| Enviar una transacción | sendTransaction | Devuelve una firma que luego confirmas |
| Confirmar una transacción | getSignatureStatuses o getTransaction | Consulta hasta que se confirme en el nivel de compromiso elegido |
| Verificar época y tiempos | getEpochInfo | La activación y desactivación del stake dependen de la época |
| Leer información del validador | getVoteAccounts | Descubre validadores y su stake actual |
Una ruta de lectura típica se ve así:
curl https://solana.api.onfinality.io/public \
-X POST -H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "getEpochInfo",
"params": []
}'
Y el envío de una transacción se ve así:
curl https://solana.api.onfinality.io/public \
-X POST -H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "sendTransaction",
"params": ["<base64-signed-transaction>", {"encoding": "base64", "skipPreflight": false}]
}'
En JavaScript, normalmente usarías @solana/web3.js y dejarías que la biblioteca maneje la codificación:
import { Connection, PublicKey, Transaction } from "@solana/web3.js";
const connection = new Connection("https://solana.api.onfinality.io/public", "confirmed");
// Read the current epoch before building a stake or deactivate instruction
const epoch = await connection.getEpochInfo();
console.log("Current epoch:", epoch.epoch);
// Simulate before sending to surface instruction errors early
const sim = await connection.simulateTransaction(transaction);
if (sim.value.err) {
throw new Error("Simulation failed: " + JSON.stringify(sim.value.err));
}
const signature = await connection.sendTransaction(transaction, [signer]);
await connection.confirmTransaction(signature, "confirmed");
Observa que nada de esto es específico del staking. El staking es solo un conjunto de instrucciones que ensamblas y envías a través de estos métodos genéricos. Por eso la calidad de tu endpoint RPC importa más que cualquier "API de staking" individual.
Interfaces de programas de staking contra las que construirás
Una vez que puedes leer y escribir a través de RPC, necesitas las instrucciones de staking reales. Hay dos caminos principales.
Programa de stake nativo. El programa de stake integrado de Solana expone instrucciones para crear una cuenta de stake, delegar a un validador, desactivar y retirar. Construyes estas instrucciones en tu cliente y las envías como cualquier otra transacción. Esta es la integración más directa y te da control total sobre la UX, las comisiones y la gestión de cuentas.
Protocolos de staking líquido. Estos envuelven el staking nativo detrás de su propio programa y SDK. Llamas a sus instrucciones y, a cambio, tus usuarios reciben un token de recibo transferible. La contrapartida es que heredas el riesgo del contrato inteligente del protocolo y su modelo de comisiones, pero evitas gestionar cuentas de stake tú mismo.
Para la mayoría de los equipos, la decisión es: construye staking nativo si el staking es tu producto, e integra un protocolo de staking líquido si el staking es una función dentro de un producto más grande.
Elegir un proveedor RPC para cargas de trabajo de staking
Los flujos de staking tienen una forma de tráfico específica. Las lecturas son frecuentes y en ráfagas (paneles, transiciones de época), y las escrituras son sensibles a la latencia porque un blockhash obsoleto significa una transacción fallida. Los endpoints públicos están bien para prototipar, pero tienden a degradarse bajo este patrón.
Así puedes comparar opciones para una integración de staking:
| Qué evaluar | Por qué importa para el staking |
|---|---|
| Rendimiento bajo lecturas en ráfagas | Los límites de época y las actualizaciones de paneles crean picos |
| Latencia de escritura y frescura del blockhash | Los blockhashes obsoletos causan transacciones descartadas |
| Soporte de WebSocket | Te permite suscribirte a cambios de cuenta y slot en lugar de hacer polling |
| Capacidad dedicada vs compartida | Los nodos compartidos pueden tener vecinos ruidosos durante picos de carga |
| Cobertura de entornos | Necesitas devnet para pruebas y mainnet para producción |
| Monitoreo y alertas | Necesitas saber cuándo se desvían los tiempos de confirmación |
OnFinality ofrece RPC de Solana sobre HTTP y WebSocket, además de opciones de nodos dedicados cuando necesitas capacidad aislada. Puedes revisar precios de RPC y las redes RPC compatibles para ver qué se ajusta a tu carga de trabajo, y comenzar en Solana Devnet antes de pasar a mainnet.
Una secuencia de integración práctica
Una integración de staking suele seguir este orden. Constrúyela en esta secuencia y detectarás la mayoría de los problemas a tiempo.
- Conectar y leer. Apunta a un endpoint RPC y confirma que puedes llamar a
getEpochInfoygetAccountInfo. - Descubrir cuentas de stake. Usa
getProgramAccountscon filtros ajustados para listar las cuentas de stake de una wallet. - Construir una transacción. Ensambla la instrucción de stake, obtén un blockhash fresco y firma.
- Simular. Simula siempre antes de enviar. Es la forma más barata de detectar instrucciones incorrectas.
- Enviar y confirmar. Envía, luego consulta
getSignatureStatuseshasta que se confirme. - Manejar los tiempos de época. Recuerda que la activación y desactivación surten efecto a lo largo de las épocas, así que tu interfaz debe reflejar los estados pendientes.
- Agregar monitoreo. Rastrea la latencia de confirmación y las tasas de error para notar la degradación antes que los usuarios.
Modos de falla comunes y cómo depurarlos
Las integraciones de staking fallan de maneras predecibles. Aquí tienes una referencia rápida.
| Síntoma | Causa probable | Lo primero que debes revisar |
|---|---|---|
| La transacción nunca se confirma | Blockhash obsoleto | Vuelve a obtener getLatestBlockhash y reenvía |
| Error de simulación al delegar | Estado incorrecto de la cuenta de stake | Lee la cuenta con getAccountInfo |
getProgramAccounts se agota | Filtros demasiado amplios | Agrega filtros de owner y dataSize |
| El stake aparece como pendiente durante mucho tiempo | No se alcanzó el límite de época | Revisa getEpochInfo y muestra el estado pendiente en la interfaz |
| Respuestas 429 intermitentes | Límites de tasa del endpoint compartido | Pasa a capacidad dedicada o retrocede con reintentos |
Un hábito de depuración útil es registrar el blockhash, el resultado de la simulación y la firma de cada transacción. Cuando algo falla en producción, ese registro suele ser suficiente para identificar si el problema es tu instrucción, tu sincronización o tu endpoint.
Puntos clave
- No existe una única "API de staking de Solana". El staking se construye a partir de métodos RPC genéricos más instrucciones del programa de stake.
- La capa RPC es innegociable: la necesitas para leer el estado del stake, obtener blockhashes, simular, enviar y confirmar.
- El staking nativo te da control; los protocolos de staking líquido te dan velocidad de integración a costa de un riesgo de protocolo adicional.
- El tráfico de staking es en ráfagas y sensible a la latencia, por lo que la elección del proveedor importa más que para aplicaciones de solo lectura.
- Simula antes de enviar, maneja los tiempos de época en tu interfaz y monitorea la latencia de confirmación.
- OnFinality ofrece RPC de Solana sobre HTTP y WebSocket, además de opciones de nodos dedicados; consulta precios de RPC y redes RPC compatibles.
Preguntas frecuentes
¿Necesito una API especial para el staking de Solana? No. Usas la API JSON-RPC estándar de Solana para leer el estado y enviar transacciones, y construyes instrucciones de staking contra el programa de stake o un protocolo de staking líquido.
¿Puedo integrar staking solo con un endpoint RPC público? Para prototipar, sí. Para producción, los endpoints públicos a menudo tienen dificultades con el tráfico de lectura en ráfagas y las escrituras sensibles a la latencia, por lo que un endpoint gestionado o dedicado suele ser la mejor opción.
¿Cuál es la causa más común de transacciones de staking fallidas? Un blockhash obsoleto. Obtén siempre un blockhash fresco inmediatamente antes de firmar y enviar.
¿Cómo pruebo el staking sin arriesgar SOL real? Usa devnet. OnFinality proporciona un endpoint de Solana Devnet contra el que puedes desarrollar antes de pasar a mainnet.
¿El staking necesita soporte de WebSocket? No es estrictamente necesario, pero las suscripciones WebSocket te permiten reaccionar a cambios de cuenta y slot en lugar de hacer polling, lo que mejora la capacidad de respuesta de los paneles de staking.
¿Dónde puedo ver qué endpoints de Solana admite OnFinality? Consulta la página de la red Solana para detalles de endpoints y soporte de transporte.