Zum Hauptinhalt springen
Mit Slot- und Block-Monitoring erhältst du Einblick in den Netzwerkkonsens von Solana, das Timing der Blockproduktion und den allgemeinen Netzwerkzustand. Mit LaserStream kannst du den Fortschritt von Slot, die Finalisierung von Blöcken und Messwerte zur Netzwerkleistung in Echtzeit über das helius-laserstream SDK verfolgen.
Voraussetzungen: Dieser Leitfaden setzt voraus, dass du den Schnellstart für LaserStream gRPC abgeschlossen hast und über einen API key verfügst.

Monitoring-Typen

Verfolge den Fortschritt des NetzwerkkonsensesÜberwache den Fortschritt von Slot über mehrere commitment-Werte hinweg:
Slot-Daten umfassen: Slot-Nummer, übergeordneten Slot, commitment-Status (processed / confirmed / finalized) und Leader-Informationen.
Ideal für: Überwachung des Netzwerkzustands, Analyse des Slot-Timings und Verfolgung des Konsenses.

Praktische Beispiele

Beispiel 1: Überwachung des Netzwerkzustands

Verfolge den Fortschritt von Slot und erkenne Netzwerkprobleme:

Beispiel 2: Überwachung der Blockproduktion

Verfolge die Blockproduktion und das Transaktionsvolumen:

Beispiel 3: Gefilterte Blocküberwachung

Überwache Blöcke mit Aktivitäten bestimmter Programme:

Datenstrukturen

Jeder Slot entspricht etwa 400 ms Netzwerkzeit. Die drei commitment-Werte stehen für zunehmend stärkere Garantien: processed (anfänglich), confirmed (von einer Supermehrheit bestätigt), finalized (unumkehrbar).
u64-Felder (slot, parent) werden als Zeichenfolgen übertragen, damit die Genauigkeit oberhalb von Number.MAX_SAFE_INTEGER erhalten bleibt. Konvertiere sie mit Number(slot.slot), wenn du arithmetische Operationen ausführen musst. status ist ein numerisches Enum – verwende CommitmentLevel[slot.status] für den lesbaren Namen.
Numerische Felder (slot, parentSlot, executedTransactionCount, entriesCount sowie die Werte in blockHeight und blockTime) werden als Zeichenfolgen ausgegeben, da sie im zugrunde liegenden Proto u64-Werte sind. Umschließe sie für arithmetische Operationen oder Vergleiche mit Number(...).
Vollständige Blöcke können zusammen mit allen Transaktionen und Konten mehrere MB groß sein. Auch hier gilt die Konvention, u64-Werte als Zeichenfolgen auszugeben. Umschließe numerische Felder für arithmetische Operationen mit Number(...). Innerhalb jeder Transaktion sind meta.fee, meta.preBalances, meta.postBalances usw. ebenfalls Zeichenfolgen.

Leistungsaspekte

Slot Monitoring

Ressourcenschonend: sehr geringe Bandbreite und minimaler Verarbeitungsaufwand. Gut für Monitoring-Dashboards geeignet.

Block Metadata

Ausgewogen: moderate Bandbreite und Einblicke auf Blockebene ohne vollständige Daten. Für Analysen geeignet.

Full Blocks

Hohes Volumen: vollständige Transaktionsdaten, die eine robuste Verarbeitung erfordern. Verwende immer Filter.

Filtered Blocks

Optimiert: Verwende accountInclude und deaktiviere nicht benötigte includeAccounts/includeEntries.

Anwendungsfälle

Verfolge Netzwerkzustand und -leistung – Slot-Timing, Überlastung und Konsens.

Fehlerbehandlung

Symptom: Lücken im Fortschritt von Slot.Ursachen: Probleme mit der Netzwerkverbindung, Ausfallzeiten von Validatoren oder Verzögerungen bei der Client-Verarbeitung.Lösungen: Erfasse Lücken zwischen Slot und löse Warnungen aus. Implementiere eine Aufhollogik über die historische Wiedergabe. Überwache den Verbindungszustand.
Symptom: Zu viele Blockdaten.Lösungen: Verwende Blockmetadaten statt vollständiger Blöcke. Wende Kontofilter an. Deaktiviere nicht benötigte Inhalte wie Einträge und Konten. Verarbeite Daten asynchron.
Symptom: Inkonsistentes Slot-Timing.Analyse: Berechne gleitende Mittelwerte. Verfolge Abweichungen. Überwache Messwerte zum Netzwerkzustand. Korreliere sie mit der Validatorleistung.

Best Practices

Richtlinien für die Produktion:
  • Beginne mit Metadaten – verwende Blockmetadaten, bevor du vollständige Blöcke abonnierst
  • Wende Filter an – verwende accountInclude, um irrelevante Daten zu verwerfen
  • Überwache das Timing – verfolge den Fortschritt von Slot als Frühwarnsignal für den Netzwerkzustand
  • Behandle Lücken – kombiniere dies mit der historischen Wiedergabe, damit fehlende Slot bei einer erneuten Verbindung automatisch per backfill ergänzt werden
  • Verarbeite asynchron – blockiere die Verarbeitung des stream nicht mit rechenintensiven Operationen
  • Passe commitment an den Bedarf an – processed für Benutzeroberflächen mit niedriger Latenz, confirmed/finalized für Schreibvorgänge am Status

Nächste Schritte

Transaction Monitoring

Filtere Transaktionen nach Programm, Konto, Abstimmung oder Fehlerstatus.

Stream Pump AMM Data

Praxisbeispiel: Überwache Pump-AMM-Transaktionen.

Decoding Transaction Data

Parse die binären transactionUpdate-payloads in lesbare Solana-Transaktionen.

Yellowstone protocol reference

Derselbe Ablauf mit dem unverarbeiteten Yellowstone-gRPC-Protokoll.