Méthodes RPC Solana & Documentation
Interagissez directement avec les nœuds Solana grâce à l'API JSON RPC via les méthodes HTTP et Websocket.
Configuration de l'engagement d'état
Pour les vérifications préliminaires et le traitement des transactions, les nœuds Solana choisissent quel état de banque interroger en fonction d'une exigence d'engagement définie par le client. L' engagement décrit le niveau de finalisation d'un bloc à un moment donné. Lors de l'interrogation de l'état du registre, il est recommandé d'utiliser des niveaux d'engagement inférieurs pour signaler la progression et des niveaux plus élevés pour garantir que l'état ne sera pas annulé.
Par ordre décroissant d'engagement (du plus finalisé au moins finalisé), les clients peuvent spécifier :
finalized
- le nœud interrogera le bloc le plus récent confirmé par une supermajorité du cluster comme ayant atteint le verrouillage maximum, ce qui signifie que le cluster a reconnu ce bloc comme finaliséconfirmed
- le nœud interrogera le bloc le plus récent qui a été voté par une supermajorité du cluster.- Il intègre les votes provenant du gossip et du replay.
- Il ne compte pas les votes sur les descendants d'un bloc, uniquement les votes directs sur ce bloc.
- Ce niveau de confirmation maintient également les garanties de "confirmation optimiste" dans la version 1.3 et ultérieures.
processed
- le nœud interrogera son bloc le plus récent. Notez que le bloc peut toujours être ignoré par le cluster.
Pour traiter de nombreuses transactions dépendantes en série, il est recommandé
d'utiliser l'engagement confirmed
, qui équilibre la vitesse avec la sécurité
contre les annulations. Pour une sécurité totale, il est recommandé d'utiliser
l'engagement finalized
.
Engagement par défaut
Si la configuration d'engagement n'est pas fournie, le nœud utilisera
par défaut l'engagement finalized
Seules les méthodes qui interrogent l'état de la banque acceptent le paramètre d'engagement. Elles sont indiquées dans la référence API ci-dessous.
Structure RpcResponse
De nombreuses méthodes qui prennent un paramètre d'engagement renvoient un objet JSON RpcResponse composé de deux parties :
context
: Une structure JSON RpcResponseContext incluant un champslot
auquel l'opération a été évaluée.value
: La valeur renvoyée par l'opération elle-même.
Réponses analysées
Certaines méthodes prennent en charge un paramètre encoding
et peuvent
renvoyer des données de compte ou d'instruction au format JSON analysé si
"encoding":"jsonParsed"
est demandé et que le nœud dispose d'un analyseur pour
le programme propriétaire. Les nœuds Solana prennent actuellement en charge
l'analyse JSON pour les programmes natifs et SPL suivants :
Programme | État du compte | Instructions |
---|---|---|
Address Lookup | v1.15.0 | v1.15.0 |
BPF Loader | n/a | stable |
BPF Upgradeable Loader | stable | stable |
Config | stable | |
SPL Associated Token Account | n/a | stable |
SPL Memo | n/a | stable |
SPL Token | stable | stable |
SPL Token 2022 | stable | stable |
Stake | stable | stable |
Vote | stable | stable |
La liste des analyseurs de comptes peut être trouvée ici, et les analyseurs d'instructions ici.
Critères de filtrage
Certaines méthodes permettent de fournir un objet filters
pour activer le
pré-filtrage des données renvoyées dans l'objet JSON RpcResponse. Les filtres
suivants existent :
-
memcmp: object
- compare une série d'octets fournie avec les données du program account à un décalage particulier. Champs :offset: usize
- décalage dans les données du program account pour commencer la comparaisonbytes: string
- données à comparer, sous forme de chaîne encodéeencoding: string
- encodage pour les données du filtrebytes
, soit "base58" ou "base64". La taille des données est limitée à 128 octets décodés ou moins.
NOUVEAU : Ce champ, et la prise en charge de base64 en général, n'est disponible que dans solana-core v1.14.0 ou plus récent. Veuillez l'omettre lors de l'interrogation des nœuds sur des versions antérieures
-
dataSize: u64
- compare la longueur des données du program account avec la taille de données fournie
Is this page helpful?