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 eerste message.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 eerste numRequiredSignatures van message.accountKeys.
      • numReadonlySignedAccounts: <number> - De laatste numReadonlySignedAccounts 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 laatste numReadonlyUnsignedAccounts 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 de message.accountKeys array die het programma-account aangeeft dat deze instructie uitvoert.
      • accounts: <array[number]> - Lijst met geordende indices in de message.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 als maxSupportedTransactionVersion 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 van message.header.numRequiredSignatures en is niet leeg. De handtekening op index i komt overeen met de publieke sleutel op index i in message.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 definities
  • fee: <u64> - kosten die voor deze transactie in rekening zijn gebracht, als u64 integer
  • preBalances: <array> - array van u64 accountsaldi van vóór de transactie werd verwerkt
  • postBalances: <array> - array van u64 accountsaldi nadat de transactie werd verwerkt
  • innerInstructions: <array|null> - Lijst van inner instructions of null als inner instruction registratie niet was ingeschakeld tijdens deze transactie
  • preTokenBalances: <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 transactie
  • postTokenBalances: <array|undefined> - Lijst van token balances van nadat de transactie werd verwerkt of weggelaten als token balance registratie nog niet was ingeschakeld tijdens deze transactie
  • logMessages: <array|null> - array van string logberichten of null als logberichtregistratie niet was ingeschakeld tijdens deze transactie
  • rewards: <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 ontvangen
    • lamports: <i64>- aantal belonings-lamports gecrediteerd of gedebiteerd door het account, als een i64
    • postBalance: <u64> - accountsaldo in lamports nadat de beloning werd toegepast
    • rewardType: <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 als maxSupportedTransactionVersion niet is ingesteld in verzoekparameters, of als jsonParsed codering is ingesteld in verzoekparameters.
    • writable: <array[string]> - Geordende lijst van base-58 gecodeerde adressen voor beschrijfbare geladen accounts
    • readonly: <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 Pubkey
    • data: <[string, encoding]> - de retourgegevens zelf, als base-64 gecodeerde binaire gegevens
  • computeUnitsConsumed: <u64|undefined> - aantal compute units verbruikt door de transactie
  • version: <"legacy"|number|undefined> - Transactieversie. Ongedefinieerd als maxSupportedTransactionVersion 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 zijn
  • instructions: <array[object]> - Geordende lijst van inner program instructions die werden aangeroepen tijdens een enkele transactie-instructie.
    • programIdIndex: <number> - Index in de message.accountKeys array die aangeeft welk program account deze instructie uitvoert.
    • accounts: <array[number]> - Lijst van geordende indices in de message.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. VEROUDERD
    • uiAmountString: <string> - Token hoeveelheid als string, rekening houdend met decimalen.

Is this page helpful?

Inhoudsopgave

Pagina Bewerken