Zum Hauptinhalt springen
Mit der RPC-Methode 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.
Vermeide Batching für eine bessere PerformanceDas Batching von Archivmethoden erhöht die Latenz erheblich. Batches mit mehr als 10 requests sind nicht zulässig.

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

  1. slot (number, erforderlich): Die Nummer des abzufragenden Block-slot (u64).
  2. config (object, optional): Ein Konfigurationsobjekt mit den folgenden Feldern:
    • commitment (string, optional): Gibt die zu verwendende Stufe des commitment an. processed wird für diese Methode nicht unterstützt. Der Standardwert ist finalized.
    • encoding (string, optional): Die Kodierung der Transaktionsdaten. Der Standardwert ist json, wenn transactionDetails auf full oder accounts gesetzt ist. Andernfalls ist der Standardwert base64.
      • json: Gibt Transaktions- und Kontodaten im JSON-Format zurück. Diese Option ist veraltet. Verwende stattdessen jsonParsed.
      • 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)
      • base64
      • base64+zstd
    • transactionDetails (string, optional): Gibt den Umfang der zurückzugebenden Transaktionsdetails an. Der Standardwert ist full.
      • 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 ist false.
    • 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 -32015 fehl. 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 auf 1, 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 Feld result 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 Parametern encoding und transactionDetails ab.
    • Jedes Transaktionsobjekt enthält normalerweise meta (Metadaten wie Gebühren, Status, Protokolle und Kontostände vor und nach der Transaktion) sowie transaction (die eigentlichen Transaktionsdaten einschließlich Nachricht und Signaturen).
  • rewards (array, optional): Ein Array mit Belohnungsobjekten, das vorhanden ist, wenn rewards: true angegeben wurde. Jedes Objekt enthält Details zu pubkey, lamports, postBalance, rewardType und möglicherweise commission.
  • blockTime (number | null): Die geschätzte Erstellungszeit des Blocks als Unix-Zeitstempel in Sekunden seit der Epoche oder null, 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, oder null, wenn sie nicht verfügbar ist.
Die vollständige und detaillierte Struktur der Transaktions- und Metaobjekte in der response findest du in der offiziellen Solana-RPC-Dokumentation.

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 getBlock eine slot-Nummer als Eingabe erwartet, nicht unbedingt eine Blockhöhe. slots sind zwar fortlaufend, einige können jedoch von Leadern übersprungen werden. Das Feld blockHeight in der response gibt die tatsächliche Anzahl der Blöcke vor diesem Block an.
  • maxSupportedTransactionVersion ist entscheidend: Um Blöcke mit versionierten Transaktionen zu untersuchen, die inzwischen Standard sind und Address Lookup Tables verwenden, musst du maxSupportedTransactionVersion: 1 festlegen. 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.
  • transactionDetails auswählen:
    • full ist für die meisten detaillierten Analysen erforderlich, gibt aber auch die größte Datenmenge zurück.
    • signatures ist nützlich, wenn du nur die Transaktionen in einem Block auflisten möchtest.
    • accounts ist ein Mittelweg, wenn du sehen möchtest, welche Konten beteiligt waren, ohne alle Anweisungsdaten abzurufen.
    • none wird selten verwendet, kann aber sinnvoll sein, wenn dich nur Metadaten auf Blockebene wie blockhash oder rewards interessieren.
  • jsonParsed wird für die Kodierung empfohlen: Wenn du Transaktionsdetails anforderst, liefert jsonParsed die entwicklerfreundlichste Ausgabe und löst Konten aus Address Lookup Tables korrekt auf. json ist veraltet und bietet diese Funktion nicht.
  • Block nicht verfügbar: Ein Ergebnis von null bedeutet, dass der Block an diesem slot nicht gefunden wurde. Möglicherweise wurde der slot übersprungen, der Block wurde noch nicht bis zu der durch commitment angegebenen 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: true festlegen, 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.