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 champ slot 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 compteInstructions
Address Lookupv1.15.0v1.15.0
BPF Loadern/astable
BPF Upgradeable Loaderstablestable
Configstable
SPL Associated Token Accountn/astable
SPL Memon/astable
SPL Tokenstablestable
SPL Token 2022stablestable
Stakestablestable
Votestablestable

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 comparaison
    • bytes: string - données à comparer, sous forme de chaîne encodée
    • encoding: string - encodage pour les données du filtre bytes, 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?

Table des matières

Modifier la page