Kernpunkte
- Viem nutzt TypeScript, um Aufrufe und Ergebnisse anhand des Contract-ABI zu typisieren.
- Es trennt Lese-, Signatur- und Test-Clients nach ihrer Zuständigkeit.
- Simulation und Typisierung helfen, Fehler zu erkennen, garantieren aber nicht die künftige Ausführung.
Was ist Viem?
Viem ist eine TypeScript-Bibliothek für die Interaktion mit Ethereum und EVM-Netzwerken. Ihre API trennt Abfrage-, Signatur- und Testfunktionen und leitet Typen aus dem ABI eines Contracts ab. Sie lässt sich in einem Frontend, einem SDK oder einem Backend-Dienst einsetzen, ohne von React abzuhängen.
Diese Typableitung hilft, Funktionsnamen oder Argumente zu erkennen, die nicht zum deklarierten ABI passen. Sie prüft weder, ob die konfigurierte Adresse diesen Contract enthält, noch ob externe Daten korrekt sind. Die Qualität der Integration hängt auch von Konfiguration und Validierungen zur Laufzeit ab.
So funktioniert es
Ein Public Client fragt den Zustand ab und simuliert Aufrufe; ein Wallet Client fordert Signaturen an oder sendet autorisierte Operationen. Transports verbinden über HTTP, WebSocket oder benutzerdefinierte Provider. Netzwerk und Konto explizit zu wählen hilft zu vermeiden, dass eine Operation für ein anderes Ziel vorbereitet wird als das, welches die Wallet verwendet.
Die Simulation eines Schreibvorgangs kann Reverts erkennen und eine Anfrage vorbereiten, die zum abgefragten Zustand passt. Das Senden bleibt ein eigener Schritt und kann fehlschlagen, wenn sich Guthaben, Berechtigungen oder Bedingungen des Contracts ändern. Die Anwendung muss den Receipt verfolgen und darf die Simulation nicht als abgeschlossene Ausführung darstellen.
Was Viem leistet
Ein Protokoll-SDK kann Funktionen bereitstellen, die ABI, Adresse und erwartete Einheiten enthalten, und so wiederkehrende Entscheidungen für die nutzenden Teams reduzieren. Die Antworten behalten bigint, wo es angebracht ist, und werden über explizite Regeln in Transportformate umgewandelt. Die Dokumentation erklärt, wie Beträge und Fehler zu interpretieren sind.
Leseaktionen lassen sich bündeln, wenn Abhängigkeiten und Umgebung es erlauben. Für kritische Operationen wird der Block oder die zeitliche Referenz der verwendeten Daten festgehalten. Das hilft, eine Entscheidung zu reproduzieren und zu erkennen, ob verschiedene Lesevorgänge inkompatible Zustände beschreiben.
Grenzen und Auswahlkriterien
Die Modularität erleichtert es dem Bundler, nicht genutzten Code zu entfernen, die endgültige Größe hängt jedoch von Importen und Konfiguration ab. Einen universellen Einsparungsprozentsatz gegenüber Ethers gibt es nicht. Die Auswahl sollte vorhandene Clients, Typisierungsanforderungen und die Wartung durch das Team berücksichtigen.
Alternative Transports helfen bei Ausfällen, allerdings können zwei Provider mit unterschiedlichen Blockhöhen oder Zuständen antworten. Die Anwendung muss Netzwerk und Aktualität prüfen, Wiederholungen begrenzen und verlorene Events rekonstruieren. Typen und eine gute API verringern bestimmte Fehler, ersetzen aber keine Tests des Signatur- und Bestätigungspfads.
Auch bekannt als
- viem.sh
- Viem client
- Wevm Viem





