getBlockCommitment proporciona información sobre el estado de compromiso de un bloque específico en el libro mayor de Solana. Esto sirve para conocer el grado de finalidad de un bloque según el stake que haya votado por él.
Casos de uso comunes
- Evaluar la finalidad de un bloque: Determina el nivel de consenso que alcanzó un bloque examinando los votos ponderados por stake en diferentes profundidades de confirmación.
- Comprender el estado del clúster:
totalStakeproporciona información sobre el stake activo total del clúster en el momento en que se procesó el bloque. - Lógica de confirmación avanzada: Para aplicaciones que requieren garantías muy específicas sobre la finalidad de un bloque más allá de los niveles de compromiso estándar (
confirmed,finalized).
Parámetros
slot(número, obligatorio): El número de slot (u64) del bloque cuya información de compromiso quieres consultar.
Respuesta
El camporesult de la respuesta JSON-RPC será un objeto que contiene:
commitment(arreglo de enteros u64 | null):- Un arreglo de enteros u64, donde cada entero representa la cantidad de stake del clúster (en lamports) que votó por el bloque en una profundidad de confirmación específica.
- Por lo general, el arreglo tiene 32 elementos (que representan las profundidades de 0 a
MAX_LOCKOUT_HISTORY, que es 31). - El índice
idel arreglo muestra el stake que votó por el bloque, considerando los votos por el propio bloque y sus descendientes hastainiveles de profundidad. - Si no se encuentra el bloque o su información de compromiso no está disponible (por ejemplo, porque es demasiado antiguo y se eliminó del seguimiento de compromisos), este campo será
null.
totalStake(número):- El stake activo total del clúster (en lamports) en el slot en el que se procesó este bloque. Este valor se usa para calcular el porcentaje de stake comprometido con el bloque.
Consejos para desarrolladores
- Interpretar el arreglo
commitment:- El arreglo
commitmentmuestra el stake (en lamports) que votó por el bloque en diferentes profundidades de confirmación. Los valores más altos en índices más profundos indican una finalidad más sólida. - Un arreglo
commitmentcon valornullsuele significar que el nodo no tiene datos para el slot, posiblemente porque es demasiado antiguo o se omitió. - Puedes estimar la finalidad en la profundidad
isicommitment[i] / totalStake >= 2/3(supermayoría).
- El arreglo
- Casos de uso avanzados:
getBlockCommitmentsirve para realizar análisis detallados de finalidad. En la mayoría de los casos habituales, es más sencillo y suficiente usar niveles de compromiso estándar (processed,confirmedofinalized) con otros métodos RPC (comogetTransactionogetBlock). - Comprender el compromiso: Para aprovechar al máximo
getBlockCommitment, es esencial comprender bien los niveles de compromiso de Solana. Consulta Niveles de compromiso de Solana para obtener información detallada. - Poda: Ten en cuenta que los nodos RPC pueden eliminar información de compromiso antigua, lo que genera resultados
nullpara slots antiguos.
Ejemplo: Obtener información sobre el compromiso de un bloque
Intentemos obtener información de compromiso para un número de slot ilustrativo en Devnet. Importante: Los números de slot se procesan rápidamente. El número de slot usado a continuación (250000000) es un marcador de posición. Cuando ejecutes el ejemplo, debes reemplazarlo por un slot reciente y confirmado que sepas que existe en tu red de destino (por ejemplo, Devnet o Mainnet). Puedes encontrar números de slot recientes con un explorador de bloques de Solana.
Nota: Reemplaza YOUR_API_KEY por tu clave de API de Helius real en los siguientes ejemplos.