Kernpunkte
- Go verbindet Kompilierung, statische Typisierung und Werkzeuge für Nebenläufigkeit.
- Es ist eine Grundlage für Nodes, Dienste und Integrationen, einschließlich der Entwicklung mit dem Cosmos SDK.
- Eine Infrastrukturimplementierung erfordert Last- und Wiederherstellungstests.
Was ist Go?
Go ist eine kompilierte Sprache, die in Netzwerkdiensten und Infrastruktursoftware eingesetzt wird. Im Blockchain-Umfeld findet sie sich in Clients wie Geth und im Cosmos SDK sowie in Integrationen, die Netzwerke abfragen oder Transaktionen verarbeiten. Ihre Rolle hängt von der Komponente ab: Einen Node zu betreiben, Module einer Chain zu entwickeln und eine Client-Anwendung zu schreiben sind unterschiedliche Aufgaben.
Die Standardbibliothek sowie die Werkzeuge für Kompilierung, Tests und Diagnose helfen, Dienste im Betrieb zu halten. Die Auslieferung als ausführbare Datei vereinfacht bestimmte Deployments, die Infrastruktur benötigt jedoch weiterhin Konfiguration, Updates und Überwachung.
So funktioniert es
Goroutines erlauben es, nebenläufige Aufgaben zu organisieren, und Channels bieten einen Weg, Ergebnisse zu übermitteln. Diese Nebenläufigkeit darf nicht unbegrenzt wachsen: Ein Indexer muss steuern, wie viele Abfragen er stellt, wie lange er wartet und was passiert, wenn der RPC-Anbieter seine Kapazität drosselt. Contexts ermöglichen es, Abbrüche und Fristen über Operationen hinweg weiterzugeben.
Für Ethereum umfassen die Geth-Werkzeuge die Erzeugung von Go-Bindings aus dem ABI eines Smart Contracts. Im Cosmos SDK implementieren Module Funktionen einer Chain. Es handelt sich um unterschiedliche Schnittstellen, die nicht mit den Pallets von Polkadot oder mit auf einer EVM bereitgestellten Smart Contracts verwechselt werden dürfen.
Was Go leistet
Ein Abgleichdienst kann Logs in Blockbereichen abrufen, dekodieren und einen dauerhaften Fortschrittspunkt speichern. Nach einem Neustart setzt er die Verarbeitung an diesem Punkt fort und prüft, ob die Blöcke weiterhin zur kanonischen Kette gehören. Batches zu begrenzen und Kennungen zu speichern verhindert doppelte Buchungen oder den Verlust von Arbeit bei einer Unterbrechung.
Go eignet sich auch für APIs, die Smart Contracts mit Unternehmenssystemen verbinden. Metriken zum Rückstand gegenüber der Chain, zu Dekodierungsfehlern und zur Größe der Warteschlangen helfen, eine Netzwerkstörung von einem eigenen Engpass zu unterscheiden. Diese Signale sind nützlicher, als eine Sprache nach einer pauschalen Leistungskennzahl auszuwählen.
Grenzen und Auswahlkriterien
Go ist nicht die übliche Sprache für EVM-Smart-Contracts, lässt sich aber für Chaincode in Hyperledger Fabric verwenden. Ob sich damit Smart Contracts schreiben lassen, hängt also von der Plattform und ihrem Ausführungsmodell ab. Graph Node wiederum ist überwiegend in Rust implementiert, auch wenn es Client-Werkzeuge in anderen Sprachen gibt.
Die Auswahl muss die benötigten Bibliotheken, die Erfahrung des Teams und die Betriebskosten des Dienstes berücksichtigen. Die Garbage Collection vereinfacht die Speicherverwaltung, verhindert aber weder Ressourcenlecks noch Deadlocks zwischen Goroutines noch Logikfehler. Nebenläufigkeitstests, Ausführungsprofile und ein geordnetes Herunterfahren gehören zu einer wartbaren Auslieferung.
Auch bekannt als
- Golang
- Go language





