Structures de données JSON courantes pour les méthodes RPC Solana
Diverses méthodes RPC Solana renvoient des réponses plus complexes sous forme d'objets JSON structurés, remplis de valeurs associées à des clés spécifiques.
Les structures de données JSON les plus courantes comprennent :
Transactions
Les transactions sont très différentes de celles sur d'autres blockchains. Assurez-vous de consulter Anatomie d'une transaction pour en savoir plus sur les transactions sur Solana.
JSON
La structure JSON d'une transaction est définie comme suit :
message: <object>
- Définit le contenu de la transaction.accountKeys: <array[string]>
- Liste des clés publiques encodées en base-58 utilisées par la transaction, y compris par les instructions et pour les signatures. Lesmessage.header.numRequiredSignatures
premières clés publiques doivent signer la transaction.header: <object>
- Détaille les types de compte et les signatures requises par la transaction.numRequiredSignatures: <number>
- Le nombre total de signatures requises pour rendre la transaction valide. Les signatures doivent correspondre auxnumRequiredSignatures
premières clés demessage.accountKeys
.numReadonlySignedAccounts: <number>
- LesnumReadonlySignedAccounts
dernières clés signées sont des comptes en lecture seule. Les programmes peuvent traiter plusieurs transactions qui chargent des comptes en lecture seule dans une seule entrée PoH, mais ne sont pas autorisés à créditer ou débiter des lamports ou à modifier les données du compte. Les transactions ciblant le même compte en lecture-écriture sont évaluées séquentiellement.numReadonlyUnsignedAccounts: <number>
- LesnumReadonlyUnsignedAccounts
dernières clés non signées sont des comptes en lecture seule.
recentBlockhash: <string>
- Un hachage encodé en base-58 d'un bloc récent dans le registre utilisé pour empêcher la duplication des transactions et pour donner aux transactions une durée de vie.instructions: <array[object]>
- Liste des instructions de programme qui seront exécutées en séquence et validées en une transaction atomique si toutes réussissent.programIdIndex: <number>
- Index dans le tableaumessage.accountKeys
indiquant le compte de programme qui exécute cette instruction.accounts: <array[number]>
- Liste d'indices ordonnés dans le tableaumessage.accountKeys
indiquant quels comptes transmettre au programme.data: <string>
- Les données d'entrée du programme encodées dans une chaîne base-58.
addressTableLookups: <array[object]|undefined>
- Liste des recherches dans les tables d'adresses utilisées par une transaction pour charger dynamiquement des adresses à partir de tables de recherche d'adresses sur la chaîne. Non défini simaxSupportedTransactionVersion
n'est pas défini.accountKey: <string>
- clé publique encodée en base-58 pour un compte de table de recherche d'adresses.writableIndexes: <array[number]>
- Liste d'indices utilisés pour charger des adresses de comptes modifiables à partir d'une table de recherche.readonlyIndexes: <array[number]>
- Liste d'indices utilisés pour charger des adresses de comptes en lecture seule à partir d'une table de recherche.
signatures: <array[string]>
- Une liste de signatures encodées en base-58 appliquées à la transaction. La liste est toujours de longueurmessage.header.numRequiredSignatures
et non vide. La signature à l'indexi
correspond à la clé publique à l'indexi
dansmessage.accountKeys
. La première est utilisée comme identifiant de transaction.
JSON analysé
La structure JSON analysée d'une transaction suit une structure similaire au format JSON standard, avec une analyse supplémentaire des informations de compte et d'instruction :
message: <object>
- Définit le contenu de la transaction.accountKeys: <array[object]>
- Liste des informations de compte utilisées par la transaction.pubkey: <string>
- La clé publique du compte encodée en base-58.signer: <boolean>
- Indique si le compte est un signataire requis pour la transaction.writable: <boolean>
- Indique si le compte est modifiable.source: <string>
- Source du compte (transaction ou table de recherche).
recentBlockhash: <string>
- Un hachage encodé en base-58 d'un bloc récent dans le registre, utilisé pour empêcher la duplication des transactions et pour donner une durée de vie aux transactions.instructions: <array[object]>
- Liste des instructions de programme analysées.program: <string>
- Le nom du programme appelé.programId: <string>
- La clé publique du programme encodée en base-58.stackHeight: <number|null>
- La hauteur de pile de l'instruction.parsed: <object>
- Données analysées spécifiques au programme.type: <string>
- Le type d'instruction (par exemple, "transfer").info: <object>
- Informations d'instruction analysées spécifiques au programme et au type d'instruction.
signatures: <array[string]>
- Une liste de signatures encodées en base-58 appliquées à la transaction.
Métadonnées d'état de transaction
err: <object|null>
- Erreur si la transaction a échoué, null si la transaction a réussi. Définitions de TransactionErrorfee: <u64>
- frais facturés pour cette transaction, sous forme d'entier u64preBalances: <array>
- tableau des soldes de compte u64 avant que la transaction ne soit traitéepostBalances: <array>
- tableau des soldes de compte u64 après que la transaction a été traitéeinnerInstructions: <array|null>
- Liste des instructions internes ounull
si l'enregistrement des instructions internes n'était pas activé pendant cette transactionpreTokenBalances: <array|undefined>
- Liste des soldes de jetons avant que la transaction ne soit traitée ou omise si l'enregistrement des soldes de jetons n'était pas encore activé pendant cette transactionpostTokenBalances: <array|undefined>
- Liste des soldes de jetons après que la transaction a été traitée ou omise si l'enregistrement des soldes de jetons n'était pas encore activé pendant cette transactionlogMessages: <array|null>
- tableau de messages de journal sous forme de chaînes ounull
si l'enregistrement des messages de journal n'était pas activé pendant cette transactionrewards: <array|null>
- récompenses au niveau de la transaction ; un tableau d'objets JSON contenant :pubkey: <string>
- La clé publique, sous forme de chaîne encodée en base-58, du compte qui a reçu la récompenselamports: <i64>
- nombre de lamports de récompense crédités ou débités par le compte, sous forme de i64postBalance: <u64>
- solde du compte en lamports après l'application de la récompenserewardType: <string|undefined>
- type de récompense : "fee", "rent", "voting", "staking"commission: <u8|undefined>
- commission du compte de vote lorsque la récompense a été créditée, présente uniquement pour les récompenses de vote et de staking
- DÉPRÉCIÉ :
status: <object>
- État de la transaction"Ok": <null>
- La transaction a réussi"Err": <ERR>
- La transaction a échoué avec TransactionError
loadedAddresses: <object|undefined>
- Adresses de transaction chargées depuis des tables de recherche d'adresses. Non défini simaxSupportedTransactionVersion
n'est pas défini dans les paramètres de la requête, ou si l'encodagejsonParsed
est défini dans les paramètres de la requête.writable: <array[string]>
- Liste ordonnée d'adresses encodées en base-58 pour les comptes chargés modifiablesreadonly: <array[string]>
- Liste ordonnée d'adresses encodées en base-58 pour les comptes chargés en lecture seule
returnData: <object|undefined>
- les données de retour les plus récentes générées par une instruction dans la transaction, avec les champs suivants :programId: <string>
- le programme qui a généré les données de retour, sous forme de Pubkey encodée en base-58data: <[string, encoding]>
- les données de retour elles-mêmes, sous forme de données binaires encodées en base-64
computeUnitsConsumed: <u64|undefined>
- nombre d' unités de calcul consommées par la transactionversion: <"legacy"|number|undefined>
- Version de la transaction. Non défini simaxSupportedTransactionVersion
n'est pas défini dans les paramètres de la requête.signatures: <array>
- présent si des "signatures" sont demandées pour les détails de la transaction ; un tableau de chaînes de signatures, correspondant à l'ordre des transactions dans le bloc
Instructions internes
L'environnement d'exécution de Solana enregistre les instructions inter-programmes qui sont invoquées pendant le traitement des transactions et les rend disponibles pour une plus grande transparence sur ce qui a été exécuté sur la chaîne par instruction de transaction. Les instructions invoquées sont regroupées par l'instruction de transaction d'origine et sont listées dans l'ordre de traitement.
La structure JSON des instructions internes est définie comme une liste d'objets dans la structure suivante :
index: number
- Index de l'instruction de transaction à partir de laquelle les instructions internes sont originairesinstructions: <array[object]>
- Liste ordonnée des instructions de programme internes qui ont été invoquées pendant une seule instruction de transaction.programIdIndex: <number>
- Index dans le tableaumessage.accountKeys
indiquant le compte de programme qui exécute cette instruction.accounts: <array[number]>
- Liste d'indices ordonnés dans le tableaumessage.accountKeys
indiquant quels comptes transmettre au programme.data: <string>
- Les données d'entrée du programme encodées dans une chaîne base-58.
Soldes de jetons
La structure JSON des soldes de jetons est définie comme une liste d'objets dans la structure suivante :
accountIndex: <number>
- Index du compte pour lequel le solde de jetons est fourni.mint: <string>
- Pubkey de l'émission du jeton.owner: <string|undefined>
- Pubkey du propriétaire du solde de jetons.programId: <string|undefined>
- Pubkey du programme Token qui possède le compte.uiTokenAmount: <object>
-amount: <string>
- Montant brut de jetons sous forme de chaîne, ignorant les décimales.decimals: <number>
- Nombre de décimales configurées pour l'émission du jeton.uiAmount: <number|null>
- Montant du jeton sous forme de nombre à virgule flottante, tenant compte des décimales. OBSOLÈTEuiAmountString: <string>
- Montant du jeton sous forme de chaîne, tenant compte des décimales.
Is this page helpful?