Veelvoorkomende JSON-datastructuren voor Solana RPC-methoden
Verschillende Solana RPC-methoden geven complexere antwoorden terug als gestructureerde JSON- objecten, gevuld met specifieke sleutel-waardeparen.
De meest voorkomende van deze JSON-datastructuren zijn onder andere:
Transacties
Transacties zijn behoorlijk anders dan die op andere blockchains. Bekijk zeker Anatomie van een transactie om meer te leren over transacties op Solana.
JSON
De JSON-structuur van een transactie is als volgt gedefinieerd:
message: <object>
- Definieert de inhoud van de transactie.accountKeys: <array[string]>
- Lijst met base-58 gecodeerde publieke sleutels gebruikt door de transactie, inclusief door de instructies en voor handtekeningen. De eerstemessage.header.numRequiredSignatures
publieke sleutels moeten de transactie ondertekenen.header: <object>
- Geeft details over de accounttypes en handtekeningen die vereist zijn voor de transactie.numRequiredSignatures: <number>
- Het totale aantal handtekeningen dat vereist is om de transactie geldig te maken. De handtekeningen moeten overeenkomen met de eerstenumRequiredSignatures
vanmessage.accountKeys
.numReadonlySignedAccounts: <number>
- De laatstenumReadonlySignedAccounts
van de ondertekende sleutels zijn alleen-lezen accounts. Programma's kunnen meerdere transacties verwerken die alleen-lezen accounts laden binnen een enkele PoH-entry, maar mogen geen lamports crediteren of debiteren of accountgegevens wijzigen. Transacties die gericht zijn op hetzelfde lees-schrijf-account worden sequentieel geëvalueerd.numReadonlyUnsignedAccounts: <number>
- De laatstenumReadonlyUnsignedAccounts
van de niet-ondertekende sleutels zijn alleen-lezen accounts.
recentBlockhash: <string>
- Een base-58 gecodeerde hash van een recent blok in de ledger, gebruikt om duplicatie van transacties te voorkomen en om transacties een levensduur te geven.instructions: <array[object]>
- Lijst met programma-instructies die in volgorde worden uitgevoerd en in één atomaire transactie worden vastgelegd als alle instructies slagen.programIdIndex: <number>
- Index in demessage.accountKeys
array die het programma-account aangeeft dat deze instructie uitvoert.accounts: <array[number]>
- Lijst met geordende indices in demessage.accountKeys
array die aangeeft welke accounts aan het programma moeten worden doorgegeven.data: <string>
- De programma-invoergegevens gecodeerd in een base-58 string.
addressTableLookups: <array[object]|undefined>
- Lijst met adrestabel- opzoekingen die door een transactie worden gebruikt om dynamisch adressen te laden uit on-chain adresopzoektabellen. Niet gedefinieerd alsmaxSupportedTransactionVersion
niet is ingesteld.accountKey: <string>
- base-58 gecodeerde publieke sleutel voor een adresopzoektabel- account.writableIndexes: <array[number]>
- Lijst met indices die worden gebruikt om adressen van beschrijfbare accounts uit een opzoektabel te laden.readonlyIndexes: <array[number]>
- Lijst met indices die worden gebruikt om adressen van alleen-lezen accounts uit een opzoektabel te laden.
signatures: <array[string]>
- Een lijst met base-58 gecodeerde handtekeningen toegepast op de transactie. De lijst heeft altijd een lengte vanmessage.header.numRequiredSignatures
en is niet leeg. De handtekening op indexi
komt overeen met de publieke sleutel op indexi
inmessage.accountKeys
. De eerste wordt gebruikt als de transactie-id.
JSON Parsed
De JSON geparseerde structuur van een transactie volgt een vergelijkbare structuur als het reguliere JSON-formaat, met aanvullende parsing van account- en instructie- informatie:
message: <object>
- Definieert de inhoud van de transactie.accountKeys: <array[object]>
- Lijst met accountinformatie gebruikt door de transactie.pubkey: <string>
- De base-58 gecodeerde public key van het account.signer: <boolean>
- Geeft aan of het account een vereiste transactie- ondertekenaar is.writable: <boolean>
- Geeft aan of het account beschrijfbaar is.source: <string>
- Bron van het account (transactie of opzoektabel).
recentBlockhash: <string>
- Een base-58 gecodeerde hash van een recent blok in het grootboek, gebruikt om transactieduplicatie te voorkomen en om transacties een levensduur te geven.instructions: <array[object]>
- Lijst met geparseerde programma-instructies.program: <string>
- De naam van het programma dat wordt aangeroepen.programId: <string>
- De base-58 gecodeerde public key van het programma.stackHeight: <number|null>
- De stapelhoogte van de instructie.parsed: <object>
- Programma-specifieke geparseerde gegevens.type: <string>
- Het type instructie (bijv. "transfer").info: <object>
- Geparseerde instructie-informatie specifiek voor het programma en instructietype.
signatures: <array[string]>
- Een lijst met base-58 gecodeerde handtekeningen toegepast op de transactie.
Transactie status metadata
err: <object|null>
- Fout als de transactie mislukt is, null als de transactie geslaagd is. TransactionError definitiesfee: <u64>
- kosten die voor deze transactie in rekening zijn gebracht, als u64 integerpreBalances: <array>
- array van u64 accountsaldi van vóór de transactie werd verwerktpostBalances: <array>
- array van u64 accountsaldi nadat de transactie werd verwerktinnerInstructions: <array|null>
- Lijst van inner instructions ofnull
als inner instruction registratie niet was ingeschakeld tijdens deze transactiepreTokenBalances: <array|undefined>
- Lijst van token balances van vóór de transactie werd verwerkt of weggelaten als token balance registratie nog niet was ingeschakeld tijdens deze transactiepostTokenBalances: <array|undefined>
- Lijst van token balances van nadat de transactie werd verwerkt of weggelaten als token balance registratie nog niet was ingeschakeld tijdens deze transactielogMessages: <array|null>
- array van string logberichten ofnull
als logberichtregistratie niet was ingeschakeld tijdens deze transactierewards: <array|null>
- transactie-niveau beloningen; een array van JSON-objecten die het volgende bevatten:pubkey: <string>
- De public key, als base-58 gecodeerde string, van het account dat de beloning heeft ontvangenlamports: <i64>
- aantal belonings-lamports gecrediteerd of gedebiteerd door het account, als een i64postBalance: <u64>
- accountsaldo in lamports nadat de beloning werd toegepastrewardType: <string|undefined>
- type beloning: "fee", "rent", "voting", "staking"commission: <u8|undefined>
- vote account commissie toen de beloning werd gecrediteerd, alleen aanwezig voor voting en staking beloningen
- VEROUDERD:
status: <object>
- Transactiestatus"Ok": <null>
- Transactie was succesvol"Err": <ERR>
- Transactie mislukt met TransactionError
loadedAddresses: <object|undefined>
- Transactieadressen geladen uit adresopzoektabellen. Ongedefinieerd alsmaxSupportedTransactionVersion
niet is ingesteld in verzoekparameters, of alsjsonParsed
codering is ingesteld in verzoekparameters.writable: <array[string]>
- Geordende lijst van base-58 gecodeerde adressen voor beschrijfbare geladen accountsreadonly: <array[string]>
- Geordende lijst van base-58 gecodeerde adressen voor alleen-lezen geladen accounts
returnData: <object|undefined>
- de meest recente retourgegevens gegenereerd door een instructie in de transactie, met de volgende velden:programId: <string>
- het programma dat de retourgegevens heeft gegenereerd, als base-58 gecodeerde Pubkeydata: <[string, encoding]>
- de retourgegevens zelf, als base-64 gecodeerde binaire gegevens
computeUnitsConsumed: <u64|undefined>
- aantal compute units verbruikt door de transactieversion: <"legacy"|number|undefined>
- Transactieversie. Ongedefinieerd alsmaxSupportedTransactionVersion
niet is ingesteld in verzoekparameters.signatures: <array>
- aanwezig als "signatures" worden gevraagd voor transactie- details; een array van handtekeningstrings, overeenkomend met de transactie- volgorde in het blok
Inner Instructions
De Solana runtime registreert de cross-program instructies die worden aangeroepen tijdens de verwerking van transacties en maakt deze beschikbaar voor meer transparantie over wat er per transactie-instructie op de blockchain is uitgevoerd. Aangeroepen instructies worden gegroepeerd op basis van de oorspronkelijke transactie-instructie en worden in volgorde van verwerking weergegeven.
De JSON-structuur van inner instructions is gedefinieerd als een lijst van objecten in de volgende structuur:
index: number
- Index van de transactie-instructie waaruit de inner instruction(s) afkomstig zijninstructions: <array[object]>
- Geordende lijst van inner program instructions die werden aangeroepen tijdens een enkele transactie-instructie.programIdIndex: <number>
- Index in demessage.accountKeys
array die aangeeft welk program account deze instructie uitvoert.accounts: <array[number]>
- Lijst van geordende indices in demessage.accountKeys
array die aangeeft welke accounts aan het programma moeten worden doorgegeven.data: <string>
- De programma-invoergegevens gecodeerd in een base-58 string.
Token Balances
De JSON-structuur van token balances is gedefinieerd als een lijst van objecten in de volgende structuur:
accountIndex: <number>
- Index van het account waarvoor de token balance wordt weergegeven.mint: <string>
- Pubkey van de token's mint.owner: <string|undefined>
- Pubkey van de eigenaar van de token balance.programId: <string|undefined>
- Pubkey van het Token Program dat eigenaar is van het account.uiTokenAmount: <object>
-amount: <string>
- Ruwe hoeveelheid tokens als string, zonder rekening te houden met decimalen.decimals: <number>
- Aantal decimalen geconfigureerd voor de token's mint.uiAmount: <number|null>
- Token hoeveelheid als float, rekening houdend met decimalen. VEROUDERDuiAmountString: <string>
- Token hoeveelheid als string, rekening houdend met decimalen.
Is this page helpful?