NEU: Helius übernimmt Light Protocol
Onchain-Events auf Solana überwachen
Blog/Grundlagen

Onchain-Events auf Solana überwachen

Mitgründer & CEOMert Mumtaz auf XMert Mumtaz auf LinkedIn
7 Min. Lesezeit

Einführung

Eine der grundlegendsten Aufgaben für Entwickler im Kryptobereich ist es, Systeme einzurichten, die die Blockchain überwachen. Vielleicht wartest du auf Zahlungsbestätigungen, NFT-Verkäufe oder Überweisungen. Oder du überwachst Accounts zu Sicherheitszwecken. Unabhängig von deinem Anwendungsfall müssen deine Systeme zur Überwachung der Chain fehlertolerant, zuverlässig und auf geringe Latenz optimiert sein.

In diesem Beitrag zeigen wir dir mehrere Möglichkeiten, solche Systeme auf Solana zu entwickeln, einige Anwendungsbeispiele und wie du mit Helius künftig bessere Systeme bauen kannst.

Die Blockchain überwachen

Es gibt zwei grundlegende Möglichkeiten, Onchain-Events zu überwachen:

  1. Polling
  2. Streaming

Beim Polling fragt der Client oder die Anwendung einen Server oder eine Datenquelle wiederholt nach neuen Daten ab. Das kann in festgelegten Intervallen oder bei Bedarf erfolgen. Sendet der Client eine Anfrage an den Server, antwortet dieser mit den neuesten Daten – unabhängig davon, ob sich etwas geändert hat. Der Client oder die Anwendung kann daher dieselben Daten mehrfach erhalten, obwohl es kein Update gab.

Beim Streaming sendet der Server dagegen Daten an den Client oder die Anwendung, sobald ein Update vorliegt. Der Client muss Daten also nicht wiederholt anfordern, und der Server sendet sie nur bei Änderungen. Das ermöglicht eine effizientere Datenübertragung in Echtzeit, da der Server ausschließlich relevante Daten übermittelt.

Polling ist einfach und weitverbreitet, kann aber viel Netzwerkverkehr erzeugen und viele Ressourcen beanspruchen – besonders bei häufigen Anfragen. Streaming ist dagegen effizienter, weil der Server nur Updates sendet. Dadurch sinken das übertragene Datenvolumen und der Netzwerkverkehr.

Streaming kommt typischerweise in Anwendungen zum Einsatz, bei denen Datenaktualisierungen in Echtzeit entscheidend sind, etwa bei Börsenkursen, Social-Media-Updates und Onlinespielen. Polling wird häufiger für Anwendungen verwendet, bei denen Daten seltener aktualisiert werden oder weniger zeitkritisch sind, zum Beispiel bei E-Mail-Clients oder Nachrichtenwebsites.

Beide Methoden haben Vor- und Nachteile. Für Datenaktualisierungen in Echtzeit ist Streaming jedoch im Allgemeinen effizienter und wird daher bevorzugt. Polling bleibt für bestimmte Anwendungen mit selteneren Updates sinnvoll.

Für die meisten Workflows auf Blockchains – insbesondere auf Solana – solltest du Streaming verwenden. Dafür gibt es mehrere Gründe. Vor allem lässt sich Streaming deutlich einfacher implementieren und eignet sich besser für Anwendungsfälle mit hohem Datenverkehr, auf die Solana ausgelegt ist.

So überwachst du Onchain-Events auf Solana

Solana ist eine sehr schnelle Blockchain. Sie erzeugt alle 400 ms neue Blöcke, die normalerweise Tausende Transaktionen enthalten. Und das Verrückte daran: So langsam wird Solana nie wieder sein. Während die Core-Entwickler weiter am System arbeiten, wird die Chain immer mehr neue Daten verarbeiten. Deshalb musst du deine Systeme von Anfang an skalierbar entwerfen.

Glücklicherweise stehen dir mehrere Methoden zur Verfügung, um Onchain-Daten auf Solana zu überwachen:

  1. Polling
  2. WebSockets
  3. Geyser
  4. Helius Webhooks

Polling

Dies ist die am wenigsten empfehlenswerte Methode, um Events auf Solana zu überwachen, auch wenn sie konzeptionell am einfachsten sein dürfte. 

Je nachdem, welche Daten du abrufen möchtest, richtest du einfach eine Schleife ein, die wiederholt eine JSON-RPC-Methode auf einem Solana-RPC-Node aufruft. Typische Anwendungsfälle wären das Polling der Methode getBlock, um neue Blöcke zu erkennen, oder das Polling von `getSignaturesForAddress`, um neue Transaktionen für eine bestimmte Adresse zu prüfen.

Interessanterweise könnte dies auch die beste Methode für sehr fortgeschrittene Anwendungsfälle sein, bei denen du Updates mit vollständig eigener Logik auslösen möchtest.

WebSockets

Solana-RPCs stellen Entwicklern außerdem PubSub-WebSockets zur Verfügung. Folgende Event-Typen sind verfügbar:

Hier ist ein kurzes JavaScript-Codebeispiel, das Account-Änderungen über einen Helius RPC überwacht, der WebSockets unterstützt:

Code
const solanaWeb3 = require(‘@solana/web3.js’)
const connection = new solanaWeb3.Connection(“https://rpc.helius.xyz?api-key=“);
(async () => {  
connection.onAccountChange(
new solanaWeb3.PublicKey(“5yv6Vh8FNx93TXeSS94xy8VLZMbTqx4vXp7Zg5bDLZtE”),
(updatedAccountInfo, context) => console.log(“Updated account info: “, updatedAccountInfo),“confirmed”  );
})();

‍Ein sehr wichtiger Vorbehalt bei WebSockets: Sie sind zwar für Prototypen nützlich, haben sich in der Praxis aber als recht anfällig und unzuverlässig erwiesen. Wir empfehlen dringend, sie nicht für geschäftskritische Workflows zu verwenden, da dir Events entgehen werden.

Geyser

Kurz gesagt: Du kannst Nodes auf Solana Daten direkt über eine Plugin-Schnittstelle an dich streamen lassen und dabei anpassen, wie du diese Daten empfängst. Dies ist die schnellste Streaming-Methode mit der geringsten Latenz auf Solana. Für DeFi-Liquidationen und latenzkritische Anwendungen ist sie unverzichtbar.

Solana-Validatoren und RPCs bieten eine einzigartige, Solana-native Methode zum Streamen von Daten: Geyser-Plugins.

Die Validatoren unterstützen einen Plugin-Mechanismus namens „Geyser“-Plugin. Darüber lassen sich Informationen zu Accounts, Slots, Blöcken und Transaktionen an externe Datenspeicher wie relationale Datenbanken, NoSQL-Datenbanken oder Kafka übertragen. Anschließend können RPC-Dienste die Daten aus diesen externen Datenspeichern abrufen und flexibler sowie gezielter optimieren, etwa durch Caching und Indexierung.

Leider kann das Einrichten von Geyser recht aufwendig und teuer sein. Selbst nach der Einrichtung ist erheblicher DevOps-Aufwand nötig, damit alles reibungslos läuft. Deshalb haben wir bei Helius GeyserVM entwickelt. Damit kannst du deine Plugins hochladen und innerhalb weniger Sekunden ausführen. Unsere hochverfügbaren und redundanten Cluster sorgen dafür, dass du dir keine Gedanken über Datenprobleme machen musst. Da die Ressourcen gemeinsam genutzt werden, kannst du außerdem mehr als 200 % deiner monatlichen Kosten sparen!

Wenn du dediziertes Geyser-as-a-Service möchtest, bieten wir natürlich auch das an. Klicke hier, um mehr darüber zu erfahren.

Webhooks

Das Konzept von Webhooks ist einfach. Kurz gesagt: Webhooks überwachen Events und senden sie beim Eintreten an einen von dir eingerichteten Server. Vielleicht möchtest du zum Beispiel bei jedem NFT-Verkauf eine Benachrichtigung an deinen Discord-Server senden. Mit einem Webhook gelingt das nahtlos. 

Für die meisten Workflows zur Event-Überwachung auf Solana sind Webhooks die einfachste, flexibelste und kosteneffizienteste Methode. Nur bei Anwendungsfällen mit extrem niedriger Latenz solltest du Webhooks hinterfragen – wenn schon 5 ms über Erfolg oder Misserfolg deiner Anwendung entscheiden, etwa beim Hochfrequenzhandel.

Bei Helius haben wir das robusteste Webhook-Angebot im gesamten Kryptobereich entwickelt. 

Du kannst bis zu 100.000 Adressen überwachen – mit nur einem Webhook. Konfiguriere die gewünschten Event-Typen, die wir für dich parsen, und gib einfach die URL deines Servers ein. Mehr brauchst du nicht, um kostenlos loszulegen.

Ein Dienst wie dieser bietet viele Vorteile: Du sparst nicht nur Wochen oder Monate an Entwicklungszeit und Aufwand, sondern erhältst auch ein elastisches Backend, das mit deinem Wachstum skaliert. 

Hier erfährst du mehr über Webhooks.

Anwendungsfälle

Jetzt weißt du, wie du Onchain-Events auf Solana überwachst. Was kommt als Nächstes? Hier sind einige interessante Anwendungsfälle:

Bots

  • Wenn ein NFT auf Marktplatz X gelistet wird, löse die Aktion „NFT kaufen“ aus.
  • Wenn eine Margin-Position nicht ausreichend gedeckt ist, löse die Aktion „Liquidation“ aus.

Überwachung & Warnmeldungen

  • Wenn ein Programm ein bestimmtes Log ausgibt, löse die PagerDuty-Integration aus.
  • Wenn sich das Guthaben eines Token-Accounts um mehr als X % ändert, sende über Dialect eine Warnung.

Event-gesteuerte Indexierung

  • Wenn eine Transaktion für ein bestimmtes Programm stattfindet, sende sie direkt an deine Datenbank oder dein Backend.

Benachrichtigungen & Aktivitätsverfolgung

  • Wenn eine Übertragung von Wallet X zu Wallet Y erfolgt, sende eine Slack-Benachrichtigung oder E-Mail.

Analysen & Logs

  • Wenn Event X eintritt, sende es an eine ETL-Pipeline oder speichere es direkt auf Helius, um langfristige Trends anzuzeigen.

Workflow-Automatisierung

  • Wenn Event X eintritt, löse eine beliebige Gruppe von Aktionen aus.

Fazit

In diesem Beitrag haben wir die Unterschiede zwischen Polling und Streaming, verschiedene Möglichkeiten zur Überwachung der Solana-Blockchain und einige Anwendungsbeispiele behandelt.

Zusammenfassend kannst du Onchain-Events auf Solana über Polling, WebSockets, Geyser oder Helius Webhooks überwachen. Jede Methode hat Vor- und Nachteile. Prüfe deshalb die Anforderungen deiner Systeme, bevor du dich für einen Ansatz entscheidest. Danke fürs Lesen!

Weitere Informationen zu den Angeboten von Helius, darunter Solana-RPCs, Solana-APIs, Solana Webhooks und Solana-Infrastruktur, findest du auf unserer Website.

‍

Helius abonnieren

Bleib bei der Solana-Entwicklung auf dem Laufenden und erhalte Updates, wenn wir neue Beiträge veröffentlichen