Die getBlock RPC-Methode ermöglicht es Ihnen, detaillierte Informationen über einen bestätigten Block im Solana-Ledger abzurufen. Dies ist unerlässlich für Block-Explorer, Transaktionshistorienanalysen und das Verständnis des Zustands der Kette zu einem bestimmten Zeitpunkt.
Batching vermeiden für bessere LeistungDas Batching von Archivierungsmethoden erhöht die Latenz erheblich. Batches von über 10 Anfragen sind nicht erlaubt.
Häufige Anwendungsfälle
- Untersuchen des Blockinhalts: Sehen Sie alle Transaktionen in einem bestimmten Block an.
- Abrufen von Block-Hashes: Erhalten Sie den Blockhash für einen bestimmten Slot, den Blockhash des übergeordneten Blocks und dessen übergeordneten Slot.
- Überprüfen von Blockhöhe und Zeit: Erfahren Sie die Höhe eines Blocks (seine Sequenznummer) und die geschätzte Produktionszeit.
- Analysieren von Transaktionsdetails: Mit den entsprechenden Parametern können Sie vollständige Transaktionsdaten erhalten, einschließlich Metadaten wie Gebühren, Status, Vor-/Nachsalden und inneren Anweisungen.
- Abrufen von Belohnungen: Optional können Sie Belohnungsinformationen für den Block einfügen.
Parameter
-
slot (Nummer, erforderlich): Die Slotnummer des zu abfragenden Blocks (u64).
-
config (Objekt, optional): Ein Konfigurationsobjekt mit den folgenden Feldern:
commitment (String, optional): Gibt das Commitment-Level an, das verwendet werden soll. processed wird für diese Methode nicht unterstützt. Standardmäßig auf finalized.
encoding (String, optional): Die Kodierung für Transaktionsdaten. Standardmäßig auf json wenn transactionDetails ist full oder accounts, sonst base64.
json: Gibt Transaktionen und Kontodaten im JSON-Format zurück (veraltet zugunsten von jsonParsed).
jsonParsed: Gibt Transaktionen und Kontodaten als geparstes JSON zurück. Dies wird empfohlen, da es alle Transaktionskontoschlüssel enthält (einschließlich derer aus Adressnachschlagetabellen).
base58 (langsam)
base64
base64+zstd
transactionDetails (String, optional): Gibt an, welches Detailniveau der Transaktion zurückgegeben werden soll. Standardmäßig auf full.
full: Gibt vollständige Transaktionsdetails einschließlich Transaktionsmetadaten zurück.
accounts: Gibt eine Liste von Konten in jeder Transaktion 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): Ob das Belohnungsarray in die Antwort aufgenommen werden soll. Standardmäßig auf false.
maxSupportedTransactionVersion (Nummer, optional): Die maximale Transaktionsversion, die zurückgegeben werden soll. Wenn der Block eine Transaktion mit einer höheren Version enthält, schlägt die Anfrage mit JSON-RPC-Fehler -32015 fehl. Wenn weggelassen, werden nur Legacy-Transaktionen zurückgegeben, und ein Block mit einer versionierten Transaktion führt zu einem Fehler. Setzen Sie auf 1, um Legacy-, v0 (Adressnachschlagetabellen) und v1-Transaktionen einzubeziehen. Siehe Transaktion v1 Unterstützung.
Antwort
Wenn der angegebene Block bestätigt und gefunden wird, wird das Feld result ein Objekt mit Informationen über den Block sein. Wenn der Block nicht gefunden oder nicht bestätigt wird, wird result null sein.
Schlüsselfelder im Blockobjekt umfassen:
blockhash (String): Der Base-58-codierte Blockhash für diesen Block.
previousBlockhash (String): Der Base-58-codierte Blockhash des vorherigen Blocks. Wenn das Elternteil nicht verfügbar ist (wegen Ledger-Bereinigung), könnte dies die Systemprogram-ID sein.
parentSlot (Nummer): Die Slotnummer des Elternblocks.
transactions (Array): Ein Array von Transaktionsobjekten, die im Block enthalten sind. Die Struktur dieser Objekte hängt von den Parametern encoding und transactionDetails ab.
- Jedes Transaktionsobjekt enthält typischerweise
meta (Metadaten wie Gebühr, Status, Logs, Vor-/Nachsalden) und transaction (die tatsächlichen Transaktionsdaten, einschließlich Nachricht und Signaturen).
rewards (Array, optional): Ein Array von Belohnungsobjekten, vorhanden, wenn rewards: true angegeben wurde. Jedes Objekt beschreibt pubkey, lamports, postBalance, rewardType und möglicherweise commission.
blockTime (Nummer | null): Die geschätzte Produktionszeit des Blocks als Unix-Zeitstempel (Sekunden seit der Epoche) oder null, wenn nicht verfügbar.
blockHeight (Nummer | null): Die Höhe dieses Blocks (Anzahl der Blöcke davor in der Kette, die von Slot 0 ausgeht), oder null, wenn nicht verfügbar.
Beziehen Sie sich auf die offizielle Solana RPC-Dokumentation für die vollständige und detaillierte Struktur der Transaktions- und Metaobjekte innerhalb der Antwort.
Versuchen wir, Informationen für eine illustrative Slotnummer auf dem Devnet abzurufen.
Wichtig: Slotnummern werden schnell verarbeitet. Die unten verwendete Slotnummer (250000000) ist ein Platzhalter. Sie sollten ihn durch einen aktuellen, bestätigten Slot ersetzen, der in Ihrem Zielnetzwerk (z. B. Devnet oder Mainnet) existiert, wenn Sie das Beispiel ausführen. Sie können aktuelle Slotnummern mithilfe eines Solana-Block-Explorers finden.
Hinweis: Ersetzen Sie YOUR_API_KEY durch Ihren tatsächlichen Helius-API-Schlüssel in den untenstehenden Beispielen.
Entwickler-Tipps
- Slot vs. Blockhöhe: Denken Sie daran, dass
getBlock eine slot Nummer als Eingabe erfordert, nicht unbedingt eine Blockhöhe. Während Slots sequentiell sind, können einige Slots von Leadern übersprungen werden. Das Feld blockHeight in der Antwort zeigt die tatsächliche Anzahl der Blöcke vor diesem an.
maxSupportedTransactionVersion ist entscheidend: Um Blöcke mit versionierten Transaktionen (die jetzt Standard sind und Adressnachschlagetabellen verwenden) zu prüfen, müssen Sie maxSupportedTransactionVersion: 1 (oder eine höhere Version, wenn ein neuer Standard aufkommt) setzen. Wenn Sie dies vergessen, führen die meisten modernen Blöcke zu Fehlern.
- Wahl von
transactionDetails:
full ist notwendig für die meisten detaillierten Analysen, gibt jedoch die meisten Daten zurück.
signatures ist nützlich, wenn Sie nur Transaktionen in einem Block auflisten müssen.
accounts kann ein Mittelweg sein, wenn Sie sehen möchten, welche Konten beteiligt waren, ohne die vollständigen Anweisungsdaten abzurufen.
none ist selten, könnte aber verwendet werden, wenn Sie sich nur für blockbezogene Metadaten wie blockhash oder rewards interessieren.
jsonParsed wird für Kodierung empfohlen: Beim Anfordern von Transaktionsdetails bietet jsonParsed die entwicklerfreundlichste Ausgabe und löst Konten aus Adressnachschlagetabellen korrekt auf, was json (veraltet) nicht tut.
- Nichtverfügbarkeit von Blöcken: Ein
null Ergebnis bedeutet, dass der Block bei diesem Slot nicht gefunden wurde. Dies könnte daran liegen, dass der Slot übersprungen wurde, der Block nicht auf das von Ihnen angegebene Level commitment bestätigt wurde, oder der RPC-Knoten diesen historischen Block aus seinem Ledger entfernt hat (üblich für ältere Slots).
- Belohnungsinformationen: Das Setzen von
rewards: true ist notwendig, um die Verteilung der Blockbelohnungen an den Validator (und potenziell Staker, je nach Belohnungstyp) zu sehen. Dies vergrößert die Antwortgröße.
- Verstehen der Blockstruktur: Für ein tieferes Verständnis, wie Blöcke in Solanas Architektur passen, siehe Verstehen von Slots, Blöcken und Epochen auf Solana.