Kostenloser Ethereum-ABI-Decoder
Dekodiere die Aufrufdaten von Ethereum-Smart-Contracts mithilfe eines ABI im JSON-Format. Analysiere Funktionsselektoren und dekodiere uint256-, address-, bool-, string- und bytes32-Parameter.
Aktualisiert am
Ethereum ABI Decoder
Decode Ethereum transaction calldata using ABI definitions. Inspect function calls and parameter values.
ABI JSON
Häufig gestellte Fragen
Welche Parametertypen können dekodiert werden?
uint256, address, bool, string und bytes32. Dynamische Typen (Arrays, Tupel) erfordern eine manuelle Prüfung.
Was ist ein Funktionsselektor?
Die ersten 4 Bytes der Aufrufdaten, abgeleitet aus dem keccak256-Hash der Funktionssignatur (z. B. "transfer(address,uint256)").
Ist es kostenlos?
Ja, völlig kostenlos.
Sind meine Daten mit diesem Tool sicher?
Absolut. Der Ethereum-ABI-Decoder verarbeitet alles clientseitig in deinem Browser. Es werden keine Daten auf einen Server hochgeladen oder dort gespeichert. Deine Inhalte bleiben jederzeit privat auf deinem Gerät.
Funktioniert der Ethereum-ABI-Decoder auf Mobilgeräten?
Ja, der Ethereum-ABI-Decoder ist vollständig responsiv und funktioniert auf Smartphones und Tablets. Du kannst ihn auf jedem Gerät mit einem modernen Webbrowser nutzen, ganz ohne App-Download.
Muss ich ein Konto erstellen, um dieses Tool zu nutzen?
Es ist kein Konto und keine Registrierung erforderlich. Öffne einfach den Ethereum-ABI-Decoder in deinem Browser und beginne sofort mit der Nutzung. Es gibt keine Anmeldeschranken oder Nutzungsbeschränkungen.
Wie verwende ich den Ethereum-ABI-Decoder?
Gib einfach deine Daten in das vorgesehene Feld ein, passe die Einstellungen nach Wunsch an, und das Tool verarbeitet sie sofort. Anschließend kannst du das Ergebnis in die Zwischenablage kopieren oder herunterladen.
Welche Browser werden unterstützt?
Der Ethereum-ABI-Decoder funktioniert in allen modernen Browsern, einschließlich Chrome, Firefox, Safari, Edge und Opera. Für das beste Erlebnis verwende die neueste Version deines bevorzugten Browsers.
Wie lese ich uint256-Beträge, die aus ERC-20-Calldata dekodiert wurden?
Ein uint256 in der Calldata ist eine reine Ganzzahl ohne Dezimalpunkt, weshalb ein Token-Transferbetrag als sehr große Zahl in der kleinsten Einheit des Tokens erscheint. Bei den meisten ERC-20-Token bedeutet das Wei-artige Einheiten mit 18 Dezimalstellen: Der Wert 1000000000000000000 (0xde0b6b3a7640000) entspricht exakt 1 Token. Zum Umrechnen teilst du die dekodierte Ganzzahl durch 10 hoch der Dezimalstellenzahl des Tokens. USDC und USDT verwenden 6 Dezimalstellen, sodass 1000000 gleich 1,00 ist, während WBTC 8 Dezimalstellen nutzt. Der Decoder liest den 32-Byte-Block big-endian und zeigt dir die exakte Ganzzahl samt dem rohen Hexwert, aus dem sie stammt, sodass du den Betrag selbst überprüfen kannst. Füge dein ABI und deine Calldata ein, um die genaue Zahl zu sehen, bevor du einer Wallet-Anfrage vertraust.
Warum meldet der Decoder, dass keine passende Funktion gefunden wurde?
Der Decoder berechnet für jede Funktion in deinem ABI einen Keccak-256-Selector und vergleicht ihn mit den ersten 4 Bytes deiner Calldata. Gibt es keine Übereinstimmung, bedeutet das, dass das eingefügte ABI nicht die Funktion enthält, die tatsächlich aufgerufen wurde. Häufige Ursachen sind das ABI des falschen Contracts, ein Proxy-Contract, der Aufrufe an eine andere Implementierung weiterleitet, oder ein ABI, dem die spezifische Funktion fehlt. Schon ein einzelnes abweichendes Zeichen in einem Parametertyp, etwa uint statt uint256, verändert den Selector und verhindert den Abgleich. Die Lösung besteht darin, das verifizierte ABI für den exakten Contract aus einem Block-Explorer zu laden und erneut zu dekodieren. Die Fehlermeldung selbst ist ein nützliches Signal dafür, dass die Transaktion nicht das ist, was du angenommen hast. Prüfe die Quelle noch einmal und versuche es mit dem richtigen ABI erneut.
Was ist der Unterschied zwischen einem Function Selector und einem vollständigen ABI?
Ein Function Selector besteht aus nur 4 Bytes, dem führenden Ausschnitt des Keccak-256-Hashes einer kanonischen Signatur wie transfer(address,uint256), der angibt, auf welche Funktion eine Transaktion abzielt. Er verrät dir die Funktion, aber nichts über Parameternamen oder wie die nachfolgenden Bytes zu interpretieren sind. Ein vollständiges ABI ist die komplette JSON-Beschreibung der Funktionen eines Contracts, einschließlich Name und Typ jedes Inputs sowie der Outputs. Der Decoder benötigt das ABI und nicht nur den Selector, denn die 32-Byte-Argumentblöcke sind bedeutungslos, solange du nicht weißt, dass einer eine address und der nächste einen uint256 enthält. Mit nur einem Selector kannst du nach einer wahrscheinlichen Signatur suchen; mit dem ABI erhältst du benannte, typisierte Werte. Füge das ABI-Array hier ein, um rohes Hex in eine beschriftete Parameteraufschlüsselung zu verwandeln.
Kann dieses Tool dynamische Typen wie string, bytes und Arrays dekodieren?
Es verarbeitet string und bytes nach den ABI-Kodierungsregeln: Der statische Block enthält einen Offset-Zeiger auf einen separaten Bereich, in dem zuerst die Länge und anschließend die eigentlichen Daten gespeichert sind. Der Decoder liest diesen Zeiger aus, springt zur Länge und rekonstruiert den Text- oder Hexwert. Statische Typen fester Größe wie uint256, int, address, bool und bytes32 belegen jeweils einen einzigen 32-Byte-Block und werden jedes Mal sauber dekodiert. An seine Grenzen stößt das Tool bei komplexen dynamischen Strukturen wie Arrays variabler Länge und verschachtelten Tupeln, die eine mehrteilige Kodierung nutzen und eher eine manuelle Prüfung als einen einzelnen sauberen Wert erfordern können. Bei alltäglichen Aufrufen wie ERC-20-Transfers, Genehmigungen und einfachen Settern ist die automatische Ausgabe vollständig. Füge deine Calldata ein, um zu sehen, welche Parameter sich direkt auflösen lassen.
Wie wird der Function Selector aus einer Signatur berechnet?
Ausgangspunkt ist die kanonische Signatur: der Funktionsname gefolgt von seinen Parametertypen in Klammern, durch Kommas getrennt, ohne Leerzeichen und ohne Parameternamen, zum Beispiel transfer(address,uint256). Diese exakte Zeichenfolge wird durch die Keccak-256-Hashfunktion geschickt, und man nimmt die ersten 4 Bytes des 32-Byte-Ergebnisses. Für transfer ergibt das 0xa9059cbb. Die kanonische Form ist entscheidend, denn uint muss als vollständiges Alias uint256 geschrieben werden und int als int256 — sonst ändern sich Hash und Selector komplett. Dieses Tool berechnet Selektoren mit einer integrierten Keccak-256-Implementierung direkt in deinem Browser und benötigt daher niemals umständliche Online-Signaturdatenbanken, um einen Aufruf zuzuordnen. Lade das ERC-20-Transfer-Beispiel, um zu sehen, wie eine echte Signatur zu ihrem Selector aufgelöst wird, und setze dann deine eigene Funktion ein, um zu prüfen, was eine Transaktion tatsächlich aufruft.
Verwandte Tools
Kostenloser Generator für sichere Passwörter
Erstelle sichere, zufällige Passwörter mit anpassbaren Optionen. Kostenlos, schnell und vollständig in deinem Browser ohne Anmeldung.
Kostenloser UUID/GUID-Generator
Erstelle universell eindeutige Bezeichner (UUID/GUID). Kostenlos, schnell und vollständig in deinem Browser ohne Anmeldung.
Kostenloser QR-Code-Generator Online
Erstelle QR-Codes für URLs, Text, WLAN-Zugangsdaten und mehr. Kostenlos, schnell und vollständig in deinem Browser ohne Anmeldung.
Kostenloser JSON-Formatierer & Validator
Formatiere, validiere und verschönere JSON-Daten mit Syntaxhervorhebung und Fehlererkennung. Kostenlos, schnell und vollständig in deinem Browser ohne Anmeldung.
Über den Ethereum-ABI-Decoder
Der Ethereum-ABI-Decoder verwandelt rohe Transaktions-Calldata in einen lesbaren Funktionsaufruf. Du fügst das ABI-JSON eines Contracts sowie eine Hex-Calldata-Zeichenfolge ein, und das Tool zeigt dir, welche Funktion aufgerufen wurde, ihren 4-Byte-Selector und den dekodierten Wert jedes einzelnen Parameters. Entwickelt wurde es für Solidity-Entwickler, Smart-Contract-Auditoren und alle, die genau nachvollziehen wollen, was eine ausstehende oder bereits ausgeführte Transaktion bewirkt — bevor sie unterschrieben wird oder im Nachhinein.
Alles läuft lokal in deinem Browser ab. Das ABI, die Calldata und die dekodierte Ausgabe verlassen niemals dein Gerät — es gibt keinen API-Aufruf, keine Wallet-Verbindung und keine Registrierung. Das ist besonders wichtig, wenn du Calldata aus einer unbekannten dApp-Anfrage oder einer Transaktion prüfst, der du noch nicht traust.
Was ABI-Dekodierung eigentlich macht
Auf Ethereum ist ein Contract-Aufruf schlicht ein Datenblock aus Bytes. Die ersten 4 Bytes sind der Function Selector — die führenden 4 Bytes des Keccak-256-Hashes der kanonischen Funktionssignatur, etwa transfer(address,uint256), was 0xa9059cbb ergibt. Alles danach sind die kodierten Argumente, verpackt in 32-Byte (256-Bit) große Blöcke.
Dieser Decoder berechnet die Selektoren aus deinem ABI mithilfe einer integrierten Keccak-256-Implementierung und gleicht anschließend den Selector am Anfang deiner Calldata mit jeder Funktion im ABI ab. Bei einem Treffer zerlegt er die verbleibenden Bytes in 32-Byte-Blöcke und interpretiert jeden davon entsprechend dem deklarierten Parametertyp. Das Ergebnis zeigt den Funktionsnamen, den Selector sowie eine Aufschlüsselung pro Parameter mit Name, Typ, dekodiertem Wert und dem rohen 32-Byte-Block, aus dem er stammt.
Welche Parametertypen sich dekodieren lassen
Der Decoder verarbeitet die gängigen statischen (Fixgrößen-)Solidity-Typen, von denen jeder genau einen 32-Byte-Block belegt:
- uint256 / uint und int — werden big-endian und rechtsbündig gelesen; vorzeichenbehaftete
int-Werte werden korrekt per Zweierkomplement interpretiert. - address — die 20 relevanten Bytes werden von rechts aus dem Block entnommen, der links mit Nullen aufgefüllt ist.
- bool — wird aus dem letzten Byte als
trueoderfalsedekodiert. - bytes32 — wird als vollständiger 32-Byte-Hexwert angezeigt.
Zusätzlich versucht das Tool, string und bytes zu dekodieren — dynamische Typen, die als Offset-Zeiger auf einen längenpräfixierten Datenbereich kodiert sind. Da diese und andere dynamische Strukturen (Arrays variabler Länge und Tupel) eine mehrteilige Kodierung verwenden, kann komplexe Verschachtelung eine manuelle Prüfung erfordern, statt einen sauberen Einzeilwert zu liefern.
Ein praktischer Workflow
Klicke auf ERC-20-Transfer-Beispiel laden, um einen echten transfer-Aufruf vollständig dekodiert zu sehen: den Selector 0xa9059cbb, eine Empfängeradresse und einen Betrag in Wei (zum Beispiel 0xde0b6b3a7640000, was exakt 1 Token bei 18 Dezimalstellen entspricht). Von dort aus kannst du deine eigenen Daten einsetzen.
Konkrete Situationen, in denen das Zeit spart:
- Eine Wallet-Anfrage prüfen — bevor du eine Transaktion bestätigst, kannst du Funktion, genaue Empfängeradresse und Betrag verifizieren, statt einer verwirrenden Hex-Zeichenfolge blind zu vertrauen.
- Eine fehlgeschlagene oder unerwartete Transaktion debuggen — rekonstruiere, welche Argumente tatsächlich an einen Contract gesendet wurden.
- Auditing und Reverse Engineering — untersuche Calldata aus einem Block-Explorer, wenn du zwar das ABI, aber keine verifizierte Quellansicht hast.
Ein separater Tab ABI-Encoding-Leitfaden erklärt die Kodierungsregeln — Selektoren, statische Blöcke und Zeiger auf dynamische Typen —, damit die Ausgabe auch dann Sinn ergibt, wenn du neu im Umgang mit Low-Level-EVM-Daten bist.
Zum Dekodieren fügst du das ABI als JSON-Array von Funktionsobjekten ein (jeweils mit name, type und inputs), fügst die Calldata mit oder ohne 0x-Präfix ein und drückst auf Dekodieren. Passt der führende Selector zu keiner Funktion im ABI, weist dich das Tool darauf hin — ein schnelles Signal dafür, dass du für diese Transaktion das falsche ABI verwendest.