getBlock kannst du detaillierte Informationen zu einem bestätigten Block im Solana-Ledger abrufen. Das ist für Block-Explorer, die Analyse des Transaktionsverlaufs und das Verständnis des Chain-Zustands zu einem bestimmten Zeitpunkt unerlässlich.
Häufige Anwendungsfälle
- Blockinhalte untersuchen: Zeige alle Transaktionen an, die in einem bestimmten Block enthalten sind.
- Blockhashes abrufen: Rufe den Blockhash für einen bestimmten slot, den Blockhash des übergeordneten Blocks und dessen slot ab.
- Blockhöhe und -zeit prüfen: Ermittle die Höhe eines Blocks, also seine Sequenznummer, und seine geschätzte Erstellungszeit.
- Transaktionsdetails analysieren: Mit den passenden Parametern erhältst du vollständige Transaktionsdaten, einschließlich Metadaten wie Gebühren, Status, Kontostände vor und nach der Transaktion sowie innere Anweisungen.
- Belohnungen abrufen: Füge optional Informationen zu den Belohnungen des Blocks hinzu.
Parameter
-
slot(number, erforderlich): Die Nummer des abzufragenden Block-slot (u64). -
config(object, optional): Ein Konfigurationsobjekt mit den folgenden Feldern:commitment(string, optional): Gibt die zu verwendende Stufe des commitment an.processedwird für diese Methode nicht unterstützt. Der Standardwert istfinalized.encoding(string, optional): Die Kodierung der Transaktionsdaten. Der Standardwert istjson, wenntransactionDetailsauffulloderaccountsgesetzt ist. Andernfalls ist der Standardwertbase64.json: Gibt Transaktions- und Kontodaten im JSON-Format zurück. Diese Option ist veraltet. Verwende stattdessenjsonParsed.jsonParsed: Gibt Transaktions- und Kontodaten als geparstes JSON zurück. Diese Option wird empfohlen, da sie alle Kontoschlüssel der Transaktion enthält, einschließlich der Schlüssel aus Address Lookup Tables.base58(langsam)base64base64+zstd
transactionDetails(string, optional): Gibt den Umfang der zurückzugebenden Transaktionsdetails an. Der Standardwert istfull.full: Gibt vollständige Transaktionsdetails einschließlich der Transaktionsmetadaten zurück.accounts: Gibt eine Liste der in jeder Transaktion aufgeführten Konten zurück, jedoch nicht die vollständigen Transaktionsdaten oder Metadaten.signatures: Gibt nur die Transaktionssignaturen zurück.none: Gibt keine Transaktionsdetails zurück.
rewards(boolean, optional): Gibt an, ob das Array mit Belohnungen in der response enthalten sein soll. Der Standardwert istfalse.maxSupportedTransactionVersion(number, optional): Die höchste zurückzugebende Transaktionsversion. Enthält der Block eine Transaktion mit einer höheren Version, schlägt der request mit dem JSON-RPC-Fehler-32015fehl. Wenn du diesen Wert weglässt, werden nur Legacy-Transaktionen zurückgegeben. Ein Block mit einer versionierten Transaktion verursacht dann einen Fehler. Setze den Wert auf1, um Legacy-, v0-Transaktionen mit Address Lookup Tables und v1-Transaktionen einzuschließen. Weitere Informationen findest du unter Unterstützung für Transaction v1.
Response
Wenn der angegebene Block bestätigt und vorhanden ist, enthält das Feldresult ein Objekt mit Informationen zum Block. Wenn der Block nicht gefunden oder nicht bestätigt wurde, ist result gleich null.
Zu den wichtigsten Feldern im Blockobjekt gehören:
blockhash(string): Der Base-58-kodierte Blockhash dieses Blocks.previousBlockhash(string): Der Base-58-kodierte Blockhash des vorherigen Blocks. Wenn der übergeordnete Block nicht verfügbar ist, etwa wegen einer Bereinigung des Ledgers, kann dies die ID des Systemprogramms sein.parentSlot(number): Die Nummer des slot des übergeordneten Blocks.transactions(array): Ein Array mit den im Block enthaltenen Transaktionsobjekten. Die Struktur dieser Objekte hängt von den ParameternencodingundtransactionDetailsab.- Jedes Transaktionsobjekt enthält normalerweise
meta(Metadaten wie Gebühren, Status, Protokolle und Kontostände vor und nach der Transaktion) sowietransaction(die eigentlichen Transaktionsdaten einschließlich Nachricht und Signaturen).
- Jedes Transaktionsobjekt enthält normalerweise
rewards(array, optional): Ein Array mit Belohnungsobjekten, das vorhanden ist, wennrewards: trueangegeben wurde. Jedes Objekt enthält Details zupubkey,lamports,postBalance,rewardTypeund möglicherweisecommission.blockTime(number | null): Die geschätzte Erstellungszeit des Blocks als Unix-Zeitstempel in Sekunden seit der Epoche odernull, wenn sie nicht verfügbar ist.blockHeight(number | null): Die Höhe dieses Blocks, also die Anzahl der vorherigen Blöcke in der bei slot 0 beginnenden Chain, odernull, wenn sie nicht verfügbar ist.
Beispiel: Blockinformationen abrufen
Versuchen wir, Informationen für eine beispielhafte Nummer eines slot im Devnet abzurufen. Wichtig: slots werden schnell verarbeitet. Die unten verwendete Nummer des slot (250000000) ist ein Platzhalter. Ersetze sie beim Ausführen des Beispiels durch einen aktuellen, bestätigten slot, der in deinem Zielnetzwerk wie Devnet oder Mainnet vorhanden ist. Aktuelle Nummern von slots findest du mit einem Solana-Block-Explorer.
Hinweis: Ersetze YOUR_API_KEY in den folgenden Beispielen durch deinen tatsächlichen Helius API key.
Tipps für Entwickler
- Slot im Vergleich zur Blockhöhe: Beachte, dass
getBlockeineslot-Nummer als Eingabe erwartet, nicht unbedingt eine Blockhöhe. slots sind zwar fortlaufend, einige können jedoch von Leadern übersprungen werden. Das FeldblockHeightin der response gibt die tatsächliche Anzahl der Blöcke vor diesem Block an. maxSupportedTransactionVersionist entscheidend: Um Blöcke mit versionierten Transaktionen zu untersuchen, die inzwischen Standard sind und Address Lookup Tables verwenden, musst dumaxSupportedTransactionVersion: 1festlegen. Verwende eine höhere Version, wenn ein neuer Standard eingeführt wird. Wenn du das vergisst, treten bei den meisten modernen Blöcken Fehler auf.transactionDetailsauswählen:fullist für die meisten detaillierten Analysen erforderlich, gibt aber auch die größte Datenmenge zurück.signaturesist nützlich, wenn du nur die Transaktionen in einem Block auflisten möchtest.accountsist ein Mittelweg, wenn du sehen möchtest, welche Konten beteiligt waren, ohne alle Anweisungsdaten abzurufen.nonewird selten verwendet, kann aber sinnvoll sein, wenn dich nur Metadaten auf Blockebene wieblockhashoderrewardsinteressieren.
jsonParsedwird für die Kodierung empfohlen: Wenn du Transaktionsdetails anforderst, liefertjsonParseddie entwicklerfreundlichste Ausgabe und löst Konten aus Address Lookup Tables korrekt auf.jsonist veraltet und bietet diese Funktion nicht.- Block nicht verfügbar: Ein Ergebnis von
nullbedeutet, dass der Block an diesem slot nicht gefunden wurde. Möglicherweise wurde der slot übersprungen, der Block wurde noch nicht bis zu der durchcommitmentangegebenen Stufe bestätigt oder der RPC node hat diesen historischen Block aus seinem Ledger entfernt. Letzteres kommt bei älteren slots häufig vor. - Informationen zu Belohnungen: Du musst
rewards: truefestlegen, um die Verteilung der Blockbelohnungen an den Validator und je nach Belohnungstyp möglicherweise an Staker anzuzeigen. Dadurch wird die response größer. - Blockstruktur verstehen: Weitere Informationen dazu, wie sich Blöcke in die Architektur von Solana einfügen, findest du unter Slots, Blocks und Epochs auf Solana verstehen.