Werkzeug AT-W37REV. 2026-A
Calldata-Decoder: Was macht diese Transaktion, bevor Sie unterschreiben?
Calldata ist der Hex-Text, mit dem eine Transaktion einen Smart Contract aufruft. Die ersten vier Byte nennen die Funktion, der Rest die Werte, und genau dort steht, ob Sie Token überweisen oder einer anderen Adresse eine unbegrenzte Freigabe erteilen. Der Decoder übersetzt das in Klartext, auch verschachtelte Multicalls, den Universal Router von Uniswap und Safe-Transaktionen. Eine zweite Eingabe liest EIP-712-Signaturanfragen wie Permit und Permit2.
- kostenlos
- ohne Anmeldung
- liest im Browser
01 / DECODER
Calldata oder Signaturanfrage einfügen, Klartext ablesen
Decoder · Calldata und Signaturanfragen
Der Decoder liest, was in den Daten steht. Ob die Adresse dahinter der echte Vertrag ist und was er mit den Werten tatsächlich macht, kann er nicht sehen; dafür braucht es den geprüften Quelltext oder eine Simulation.
Liest in Ihrem Browser. Es wird nichts gesendet oder gespeichert. Seed-Phrase oder privaten Schlüssel braucht das Werkzeug nie.
02 / AUFBAU
Was in der Calldata steht
Eine Wallet zeigt beim Bestätigen meist Empfänger und Betrag. Ruft die Transaktion einen Vertrag auf, steht das Wesentliche aber im Datenfeld, und das ist Hex. Seine ersten vier Byte heißen Selektor: Keccak-256 über die Signatur der Funktion, also über Name und Parametertypen ohne Leerzeichen, und davon der Anfang. Für approve(address,uint256) ist das 0x095ea7b3.
Danach kommen die Parameter in Wörtern zu je 32 Byte. Zahlen stehen rechtsbündig, eine Adresse belegt die letzten 20 Byte ihres Worts, davor stehen 12 Nullbytes. Texte, Byte-Folgen und Listen haben keine feste Länge. An ihrer Stelle steht im Kopf ein Verweis, und die Daten folgen weiter hinten, mit ihrer Länge vorneweg. Genau so lassen sich Aufrufe ineinander packen: Ein Multicall ist eine Liste von Byte-Folgen, und jede davon ist wieder Calldata.
Das Beispiel im Bild ist eine echte Form, wie sie täglich millionenfach vorkommt. Der Decoder liest sie so: „Erlaubt 0x000000000022D473030F116dDEE9F6B43aC78BA3 (Permit2 von Uniswap), unbegrenzt viele USDC aus Ihrem Bestand auszugeben, bis Sie die Freigabe zurücknehmen."
Abb. 1 · Selektor, Wörter und Verweise. Kodierung nach der ABI-Spezifikation von Solidity, Stand 14. November 2026.
Wie der Decoder liest und was er dabei prüft
| Typ | Im Kopf | Was geprüft wird |
|---|---|---|
| uint8 … uint256 | ein Wort | passt in die Bitzahl, sonst lehnt Solidity ab 0.8 den Aufruf ab |
| int8 … int256 | ein Wort | Zweierkomplement, Vorzeichen korrekt auf 256 Bit erweitert |
| address | ein Wort | 12 Nullbytes davor; Ausgabe mit Prüfsumme nach EIP-55 |
| bool | ein Wort | nur 0 oder 1 |
| bytes1 … bytes32 | ein Wort | rechts mit Nullen aufgefüllt |
| bytes, string | Verweis | Verweis und Länge liegen innerhalb der Daten; Text als UTF-8 |
| T[], T[k] | Verweis bzw. in Folge | Länge passt in die Daten, bevor gelesen wird |
| (T1,T2,…) | Verweis, wenn ein Teil dynamisch ist | jeder Teil nach seinen Regeln |
Gegen unsaubere Eingaben ist der Decoder gebaut: Verweise, die immer wieder auf dieselbe Stelle zeigen, könnten aus 96 Kilobyte eine Milliarde Werte machen. Er bricht deshalb nach 50.000 Werten ab und liest höchstens 8 Ebenen tief. Nach dem Lesen kodiert er alles neu und vergleicht. Weicht das Ergebnis ab, etwa durch Bytes am Ende, die zu keinem Parameter gehören, steht das als Hinweis da.
Ein Selektor ist nur vier Byte lang und verrät die Parametertypen nicht. Signatur-Datenbanken helfen, sind aber unvollständig und kommen bei neuen Verträgen nicht nach Chen u. a. 2022. Der Decoder fragt keine Datenbank ab; was nicht in seiner Liste steht, liest er mit Ihrer ABI oder Signatur. Den Selektor zu einer Signatur und umgekehrt rechnet der Selektor- und Topic-Rechner.
03 / FREIGABEN
Freigaben: Wer darf was mit Ihren Token?
Ein Tausch, eine Einzahlung oder ein Verkauf beginnt oft mit einer Freigabe. Sie erlauben damit einem Vertrag, Token aus Ihrem Bestand abzubuchen, auch später und ohne neue Bestätigung. Das ist gewollt, denn sonst müsste jede Anwendung Ihre Token erst in Verwahrung nehmen. Es heißt aber auch: Die Freigabe ist die eigentliche Erlaubnis, nicht der Tausch danach.
In einer Auswertung von 25,4 Millionen ERC-20-Freigaben bis Juli 2021 waren rund 60 Prozent unbegrenzt. Alle 22 untersuchten Anwendungen fragten unbegrenzte Freigaben ab, nur 3 von 31 Oberflächen erklärten, was das bedeutet, und nur 5 ließen den Betrag ändern Wang u. a. 2022. Betrugsmaschen, die Freigaben missbrauchen, setzen genau an dieser Stelle an und profitieren davon, wie knapp Wallets Freigaben darstellen Adamczyk 2025. Der Decoder schreibt deshalb jede Freigabe aus: wer, wie viel und wie lange, auch wenn sie tief in einem Bündel steckt.
| Funktion | Was sie erlaubt | Umfang und Dauer | Zurücknehmen |
|---|---|---|---|
| approve | Eine Adresse darf ERC-20-Token aus Ihrem Bestand abbuchen. | bis zum Betrag; der Höchstwert gilt als unbegrenzt; kein Ablauf | approve mit 0 |
| setApprovalForAll | Eine Adresse darf alle NFTs eines Vertrags übertragen. | ganze Sammlung, auch künftig erhaltene; kein Ablauf | dieselbe Funktion mit false |
| permit (EIP-2612) | Wie approve, aber als Unterschrift; einreichen kann sie jeder. | Betrag; die Frist gilt für die Unterschrift, die Freigabe danach bleibt | nach dem Einreichen wie approve |
| Permit2 approve, permit | Ein Vertrag darf über Permit2 Token bewegen; der Token ist dafür einmal für Permit2 freigegeben. | Betrag, Höchstwert von uint160 gilt als unbegrenzt; mit Ablaufdatum | lockdown oder approve mit 0 |
| Permit2 permitTransferFrom | Eine einzelne Abbuchung per Unterschrift. | genau einmal, bis zur Frist | vor dem Einreichen: invalidateUnorderedNonces |
Nach EIP-20, EIP-721, EIP-1155, EIP-2612 und dem Quelltext von Permit2, Stand 14. November 2026.
Zwei Dinge helfen im Alltag. Erstens knappe Beträge: Eine Freigabe über den Betrag des Tauschs ist danach verbraucht. Später nachzubessern ist nicht dasselbe, denn wer schon berechtigt ist, kann vor einer Änderung noch den alten Betrag abheben und danach den neuen Rahimian u. a. 2019. Zweitens ab und zu aufräumen. Block-Explorer wie Etherscan führen für jede Adresse eine Übersicht der erteilten Freigaben, und was Sie nicht mehr nutzen, nehmen Sie dort zurück.
Drainer-Baukästen, die als Dienst vermietet werden, bestehen im Kern aus genau diesen Funktionen: approve, setApprovalForAll, permit, Permit2 He u. a. 2025. Darum erkennt der Decoder sie an der Funktion selbst und nicht an der Website, die sie anfordert.
04 / SIGNATUREN
Unterschriften ohne Transaktion: EIP-712
Nicht alles, was eine Wallet zum Bestätigen vorlegt, ist eine Transaktion. Bei EIP-712 unterschreiben Sie eine strukturierte Nachricht: kein Gas, keine Spur in der Chain, bis jemand sie einreicht. Permit, Permit2, Verkaufsangebote auf Marktplätzen mit Seaport und die Freigabe einer Safe-Transaktion laufen so. Die Unterschrift wirkt trotzdem: Wer sie hat, setzt mit ihr die Freigabe oder den Auftrag in Kraft.
Eine Signaturanfrage hat zwei Teile. Die Domain sagt, wofür sie gilt: Name der Anwendung, Version, Chain und Vertrag. Die Nachricht sagt, was gilt. Der Decoder zeigt beides vollständig, erkennt Permit, Permit2, Seaport und SafeTx und schreibt den Kern als Satz. Steht in der Nachricht ein Feld, das im Typ nicht vorkommt, meldet er das, denn so ein Feld wird angezeigt, aber nicht unterschrieben.
| Feld | Bedeutung | Worauf achten |
|---|---|---|
| name | Name der Anwendung oder des Tokens | Passt er zu dem, was Sie gerade tun? |
| version | Version des Signaturformats | nur zur Unterscheidung |
| chainId | Chain, auf der die Unterschrift gilt | Fehlt sie, ist die Unterschrift an keine Chain gebunden. |
| verifyingContract | Vertrag, der die Unterschrift prüft | bei Permit der Token, bei Permit2 immer 0x000000000022D473030F116dDEE9F6B43aC78BA3 |
| salt | zusätzliche Unterscheidung | selten genutzt |
Blind Signing: wenn das Gerät nur Hashes zeigt
Hardware-Wallets zeigen Signaturanfragen, die sie nicht kennen, oft nur als Hashes: bei EIP-712 den Domain-Hash und den Nachrichten-Hash. Bestätigen Sie dann, unterschreiben Sie blind. Ein Gerät allein ist dabei auch nur eine einzelne Stelle, der man vertrauen muss Dabrowski u. a. 2021. Der Decoder rechnet dieselben Hashes unabhängig aus der Anfrage, die Sie hier einfügen. Stimmen beide Hashes mit dem Gerät überein, unterschreiben Sie genau das, was oben im Klartext steht. Bei Safe ist der Signatur-Hash der safeTxHash, den auch die Safe-Oberfläche zeigt.
Eines bleibt dabei wichtig: Eine bestätigte Transaktion kommt nicht zurück, und eine eingereichte Freigabe gilt, bis Sie sie zurücknehmen. Gerade Umsteiger aus dem Bankverkehr gehen oft vom Gegenteil aus Voskobojnikov u. a. 2021, und Wallets machen den Einstieg Neulingen nicht leicht Froehlich u. a. 2021. Deshalb schreibt der Decoder ohne Fachwörter und erklärt die, die sich nicht vermeiden lassen.
05 / BÜNDEL
Verschachtelte Aufrufe: Multicall, Universal Router, Safe
Viele Transaktionen sind Bündel. Multicall3 führt mehrere Aufrufe an verschiedene Verträge aus, multicall(bytes[]) mehrere an denselben. Der Universal Router von Uniswap bekommt eine Folge von Befehlsbytes und zu jedem Befehl eine Eingabe. Ein Safe führt mit execTransaction einen Aufruf aus, häufig einen DELEGATECALL an MultiSend, der wiederum eine gepackte Liste von Aufrufen enthält. Der Decoder liest jede Ebene und nummeriert die Sätze, damit klar bleibt, was wo steckt.
Gerade darin verstecken sich Freigaben gern. Bei Phishing über Transaktionen werden Nutzer auf nachgebaute Seiten gelockt und unterschreiben dort Aufrufe, die anderen ihre Werte zugänglich machen; eine Studie fand in acht Monaten 26.333 solcher Seiten He u. a. 2023. Eine Folgearbeit zählte in 300 Tagen 130.637 Phishing-Transaktionen, die über die Nutzdaten von Vertragsaufrufen arbeiteten Chen u. a. 2025. Was zählt, steht in der Calldata, nicht auf der Website. Deshalb zeigt der Decoder Adressen auch immer vollständig: Gefälschte Adressen gleichen der echten oft am Anfang und am Ende. Zwei Adressen Zeichen für Zeichen vergleicht der Ethereum-Adress-Prüfer.
Befehle des Universal Routers
| Byte | Befehl | Was er tut |
|---|---|---|
| 0x00 | V3_SWAP_EXACT_IN | Tausch über Uniswap v3, feste Eingabe |
| 0x01 | V3_SWAP_EXACT_OUT | Tausch über Uniswap v3, feste Ausgabe |
| 0x02 | PERMIT2_TRANSFER_FROM | bucht Token über Permit2 ab |
| 0x03 | PERMIT2_PERMIT_BATCH | reicht eine Permit2-Sammelfreigabe ein |
| 0x04 | SWEEP | zahlt den Bestand des Routers aus |
| 0x05 | TRANSFER | überweist Token aus dem Router |
| 0x06 | PAY_PORTION | zahlt einen Anteil aus (Gebühr) |
| 0x07 | PAY_PORTION_FULL_PRECISION | zahlt einen Anteil aus (Gebühr, genau) |
| 0x08 | V2_SWAP_EXACT_IN | Tausch über Uniswap v2, feste Eingabe |
| 0x09 | V2_SWAP_EXACT_OUT | Tausch über Uniswap v2, feste Ausgabe |
| 0x0a | PERMIT2_PERMIT | reicht eine Permit2-Freigabe ein |
| 0x0b | WRAP_ETH | tauscht ETH in WETH |
| 0x0c | UNWRAP_WETH | tauscht WETH in ETH |
| 0x0d | PERMIT2_TRANSFER_FROM_BATCH | bucht mehrere Token über Permit2 ab |
| 0x0e | BALANCE_CHECK_ERC20 | prüft einen Mindestbestand |
| 0x10 | V4_SWAP | Tausch über Uniswap v4 (Aktionsliste) |
| 0x11 | V3_POSITION_MANAGER_PERMIT | Permit für eine v3-Position |
| 0x12 | V3_POSITION_MANAGER_CALL | Aufruf am v3-PositionManager |
| 0x13 | V4_INITIALIZE_POOL | legt einen v4-Pool an |
| 0x14 | V4_POSITION_MANAGER_CALL | Aufruf am v4-PositionManager |
| 0x21 | EXECUTE_SUB_PLAN | führt eine eingebettete Befehlsfolge aus |
| 0x40 | ACROSS_V4_DEPOSIT_V3 | Brücke über Across (Drittanbieter) |
Nach Commands.sol und Dispatcher.sol, Stand 14. November 2026. Gesetztes Bit 0x80 heißt: Der Befehl darf scheitern. Ältere Router (Version 1) belegen 0x10 bis 0x22 mit NFT-Befehlen; mit der Zieladresse erkennt der Decoder das.
Bei jedem Tausch nennt der Klartext den Mindestbetrag. Er ist der Schutz dagegen, dass der Kurs zwischen Unterschreiben und Ausführen schlechter wird. Bots beobachten offene Transaktionen und setzen eigene Aufträge davor Daian u. a. 2020, beim Sandwich auch noch einen dahinter Zhou u. a. 2021. Steht der Mindestbetrag auf 0, meldet der Decoder das. Was ein Tausch an Gas kostet, rechnet der Gas-Rechner.
Ein DELEGATECALL aus einem Safe ist ein Sonderfall: Der aufgerufene Code läuft mit den Rechten und dem Speicher des Safe, kann also auch die Unterzeichner ändern oder das Guthaben bewegen. Für die offiziellen MultiSend-Verträge von Safe ist das so vorgesehen, für alles andere meldet der Decoder es als Auffälligkeit. Ähnlich bei Proxys: upgradeTo tauscht die Logik eines Vertrags aus, und rund die Hälfte der untersuchten austauschbaren Verträge wurde von einer einzigen Adresse kontrolliert Salehi u. a. 2023.
06 / LISTE
Welche 89 Funktionen der Decoder ohne ABI kennt
Die Liste deckt ab, was Wallets im Alltag am häufigsten vorlegen: Token und NFTs, Vaults, Verwaltung von Verträgen, Permit2, Bündel, Uniswap und Safe. Der Selektor ist jeweils aus der Signatur gerechnet, nicht abgeschrieben; der Test des Werkzeugs vergleicht ihn mit bekannten Werten und prüft, dass keine zwei Einträge denselben haben.
| Selektor | Signatur | Standard | Was sie tut |
|---|---|---|---|
| 0xa9059cbb | transfer(address,uint256) | ERC-20 | überweist Token an eine Adresse |
| 0x23b872dd | transferFrom(address,address,uint256) | ERC-20 / ERC-721 | bucht Token mit einer bestehenden Freigabe ab; bei NFTs ist die Zahl die Token-Nummer |
| 0x095ea7b3 | approve(address,uint256) | ERC-20 / ERC-721 | erteilt eine Freigabe; der Höchstwert heißt unbegrenzt |
| 0x39509351 | increaseAllowance(address,uint256) | ERC-20 (OpenZeppelin) | erhöht eine Freigabe |
| 0xa457c2d7 | decreaseAllowance(address,uint256) | ERC-20 (OpenZeppelin) | senkt eine Freigabe |
| 0xd505accf | permit(address,address,uint256,uint256,uint8,bytes32,bytes32) | EIP-2612 | reicht eine unterschriebene Freigabe ein |
| 0x8fcbaf0c | permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32) | DAI-Permit | reicht eine unterschriebene DAI-Freigabe ein (ja/nein, ohne Betrag) |
| 0xd0e30db0 | deposit() | WETH | tauscht mitgeschickte ETH 1:1 in WETH |
| 0x2e1a7d4d | withdraw(uint256) | WETH | tauscht WETH 1:1 zurück in ETH |
| 0x42842e0e | safeTransferFrom(address,address,uint256) | ERC-721 | überträgt ein NFT |
| 0xb88d4fde | safeTransferFrom(address,address,uint256,bytes) | ERC-721 | überträgt ein NFT mit Zusatzdaten |
| 0xa22cb465 | setApprovalForAll(address,bool) | ERC-721 / ERC-1155 | gibt alle NFTs eines Vertrags frei oder nimmt die Freigabe zurück |
| 0xf242432a | safeTransferFrom(address,address,uint256,uint256,bytes) | ERC-1155 | überträgt Stück eines ERC-1155-Tokens |
| 0x2eb2c2d6 | safeBatchTransferFrom(address,address,uint256[],uint256[],bytes) | ERC-1155 | überträgt mehrere ERC-1155-Tokens auf einmal |
| 0x6e553f65 | deposit(uint256,address) | ERC-4626 | zahlt Token in einen Vault ein |
| 0x94bf804d | mint(uint256,address) | ERC-4626 | kauft Vault-Anteile |
| 0xb460af94 | withdraw(uint256,address,address) | ERC-4626 | hebt Token aus einem Vault ab |
| 0xba087652 | redeem(uint256,address,address) | ERC-4626 | löst Vault-Anteile ein |
| 0xf2fde38b | transferOwnership(address) | Ownable (OpenZeppelin) | übergibt die Verwaltung des Vertrags |
| 0x715018a6 | renounceOwnership() | Ownable (OpenZeppelin) | gibt die Verwaltung endgültig auf |
| 0x79ba5097 | acceptOwnership() | Ownable2Step (OpenZeppelin) | nimmt eine angebotene Verwaltung an |
| 0x2f2ff15d | grantRole(bytes32,address) | AccessControl (OpenZeppelin) | vergibt eine Rolle |
| 0xd547741f | revokeRole(bytes32,address) | AccessControl (OpenZeppelin) | entzieht eine Rolle |
| 0x36568abe | renounceRole(bytes32,address) | AccessControl (OpenZeppelin) | gibt eine eigene Rolle ab |
| 0x8456cb59 | pause() | Pausable (OpenZeppelin) | hält den Vertrag an |
| 0x3f4ba83a | unpause() | Pausable (OpenZeppelin) | lässt den Vertrag weiterlaufen |
| 0x3659cfe6 | upgradeTo(address) | Proxy (EIP-1967) | tauscht die Logik hinter einem Proxy |
| 0x4f1ef286 | upgradeToAndCall(address,bytes) | Proxy (EIP-1967) | tauscht die Logik und ruft sie gleich auf |
| 0x87517c45 | approve(address,address,uint160,uint48) | Permit2 | Freigabe mit Ablaufdatum über Permit2 |
| 0x2b67b570 | permit(address,((address,uint160,uint48,uint48),address,uint256),bytes) | Permit2 | reicht eine unterschriebene Permit2-Freigabe ein |
| 0x2a2d80d1 | permit(address,((address,uint160,uint48,uint48)[],address,uint256),bytes) | Permit2 | reicht mehrere Permit2-Freigaben auf einmal ein |
| 0x36c78516 | transferFrom(address,address,uint160,address) | Permit2 | bucht Token über eine Permit2-Freigabe ab |
| 0x0d58b1db | transferFrom((address,address,uint160,address)[]) | Permit2 | bucht mehrere Token über Permit2-Freigaben ab |
| 0x30f28b7a | permitTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes) | Permit2 | einmalige Abbuchung mit Unterschrift |
| 0x137c29fe | permitWitnessTransferFrom(((address,uint256),uint256,uint256),(address,uint256),address,bytes32,string,bytes) | Permit2 | einmalige Abbuchung mit Unterschrift und Auftragsdaten |
| 0xcc53287f | lockdown((address,address)[]) | Permit2 | setzt Permit2-Freigaben auf null |
| 0x65d9723c | invalidateNonces(address,address,uint48) | Permit2 | macht noch nicht eingereichte Unterschriften ungültig |
| 0x3ff9dcb1 | invalidateUnorderedNonces(uint256,uint256) | Permit2 | macht noch nicht eingereichte Unterschriften ungültig |
| 0x252dba42 | aggregate((address,bytes)[]) | Multicall3 | führt mehrere Aufrufe nacheinander aus |
| 0xbce38bd7 | tryAggregate(bool,(address,bytes)[]) | Multicall3 | mehrere Aufrufe, einzelne dürfen scheitern |
| 0xc3077fa9 | blockAndAggregate((address,bytes)[]) | Multicall3 | mehrere Aufrufe mit Blocknummer |
| 0x399542e9 | tryBlockAndAggregate(bool,(address,bytes)[]) | Multicall3 | mehrere Aufrufe mit Blocknummer |
| 0x82ad56cb | aggregate3((address,bool,bytes)[]) | Multicall3 | mehrere Aufrufe, je Aufruf wählbar, ob er scheitern darf |
| 0x174dea71 | aggregate3Value((address,bool,uint256,bytes)[]) | Multicall3 | mehrere Aufrufe mit ETH-Betrag je Aufruf |
| 0xac9650d8 | multicall(bytes[]) | Multicall (OpenZeppelin, Uniswap) | mehrere Aufrufe an denselben Vertrag |
| 0x5ae401dc | multicall(uint256,bytes[]) | Uniswap SwapRouter02 | mehrere Aufrufe mit Frist |
| 0x1f0464d1 | multicall(bytes32,bytes[]) | Uniswap SwapRouter02 | mehrere Aufrufe, nur auf einem bestimmten Block |
| 0x3593564c | execute(bytes,bytes[],uint256) | Uniswap Universal Router | führt eine Befehlsfolge aus (Tausch, Permit2, Weiterleitung) |
| 0x24856bc3 | execute(bytes,bytes[]) | Uniswap Universal Router | führt eine Befehlsfolge aus |
| 0x44684dc3 | executeSigned(bytes,bytes[],bytes32,bytes32,bool,bytes32,bytes,uint256) | Uniswap Universal Router 2.1 | führt eine Befehlsfolge aus, die eine EIP-712-Unterschrift freigibt |
| 0xd04d79a2 | signedRouteContext() | Uniswap Universal Router 2.1 | liest Unterzeichner, intent und data der laufenden signierten Ausführung |
| 0xdd46508f | modifyLiquidities(bytes,uint256) | Uniswap v4 PositionManager | ändert Liquiditätspositionen in Uniswap v4 |
| 0x38ed1739 | swapExactTokensForTokens(uint256,uint256,address[],address,uint256) | Uniswap V2 Router | tauscht eine feste Menge Token |
| 0x8803dbee | swapTokensForExactTokens(uint256,uint256,address[],address,uint256) | Uniswap V2 Router | tauscht auf eine feste Zielmenge |
| 0x7ff36ab5 | swapExactETHForTokens(uint256,address[],address,uint256) | Uniswap V2 Router | tauscht mitgeschickte ETH in Token |
| 0x4a25d94a | swapTokensForExactETH(uint256,uint256,address[],address,uint256) | Uniswap V2 Router | tauscht Token auf eine feste ETH-Menge |
| 0x18cbafe5 | swapExactTokensForETH(uint256,uint256,address[],address,uint256) | Uniswap V2 Router | tauscht Token in ETH |
| 0xfb3bdb41 | swapETHForExactTokens(uint256,address[],address,uint256) | Uniswap V2 Router | tauscht ETH auf eine feste Token-Menge |
| 0x5c11d795 | swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256) | Uniswap V2 Router | Tausch für Token mit Gebühr beim Überweisen |
| 0xb6f9de95 | swapExactETHForTokensSupportingFeeOnTransferTokens(uint256,address[],address,uint256) | Uniswap V2 Router | Tausch für Token mit Gebühr beim Überweisen |
| 0x791ac947 | swapExactTokensForETHSupportingFeeOnTransferTokens(uint256,uint256,address[],address,uint256) | Uniswap V2 Router | Tausch für Token mit Gebühr beim Überweisen |
| 0xe8e33700 | addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256) | Uniswap V2 Router | zahlt zwei Token in einen Pool ein |
| 0xf305d719 | addLiquidityETH(address,uint256,uint256,uint256,address,uint256) | Uniswap V2 Router | zahlt Token und ETH in einen Pool ein |
| 0xbaa2abde | removeLiquidity(address,address,uint256,uint256,uint256,address,uint256) | Uniswap V2 Router | zieht Liquidität aus einem Pool ab |
| 0x02751cec | removeLiquidityETH(address,uint256,uint256,uint256,address,uint256) | Uniswap V2 Router | zieht Liquidität aus einem Pool ab |
| 0x414bf389 | exactInputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160)) | Uniswap V3 SwapRouter | tauscht eine feste Menge über einen Pool |
| 0xc04b8d59 | exactInput((bytes,address,uint256,uint256,uint256)) | Uniswap V3 SwapRouter | tauscht eine feste Menge über mehrere Pools |
| 0xdb3e2198 | exactOutputSingle((address,address,uint24,address,uint256,uint256,uint256,uint160)) | Uniswap V3 SwapRouter | tauscht auf eine feste Zielmenge |
| 0xf28c0498 | exactOutput((bytes,address,uint256,uint256,uint256)) | Uniswap V3 SwapRouter | tauscht auf eine feste Zielmenge über mehrere Pools |
| 0x04e45aaf | exactInputSingle((address,address,uint24,address,uint256,uint256,uint160)) | Uniswap SwapRouter02 | tauscht eine feste Menge über einen Pool |
| 0xb858183f | exactInput((bytes,address,uint256,uint256)) | Uniswap SwapRouter02 | tauscht eine feste Menge über mehrere Pools |
| 0x5023b4df | exactOutputSingle((address,address,uint24,address,uint256,uint256,uint160)) | Uniswap SwapRouter02 | tauscht auf eine feste Zielmenge |
| 0x09b81346 | exactOutput((bytes,address,uint256,uint256)) | Uniswap SwapRouter02 | tauscht auf eine feste Zielmenge über mehrere Pools |
| 0x49404b7c | unwrapWETH9(uint256,address) | Uniswap V3 Periphery | tauscht WETH im Router zurück in ETH und zahlt aus |
| 0x49616997 | unwrapWETH9(uint256) | Uniswap SwapRouter02 | tauscht WETH im Router zurück in ETH |
| 0x12210e8a | refundETH() | Uniswap V3 Periphery | zahlt übrige ETH aus dem Router zurück |
| 0xdf2ab5bb | sweepToken(address,uint256,address) | Uniswap V3 Periphery | zahlt Token-Reste aus dem Router aus |
| 0x6a761202 | execTransaction(address,uint256,bytes,uint8,uint256,uint256,uint256,address,address,bytes) | Safe | führt eine mehrfach unterschriebene Safe-Transaktion aus |
| 0x8d80ff0a | multiSend(bytes) | Safe MultiSend | mehrere Safe-Aufrufe in einer gepackten Liste |
| 0x0d582f13 | addOwnerWithThreshold(address,uint256) | Safe | nimmt einen weiteren Unterzeichner auf |
| 0xf8dc5dd9 | removeOwner(address,address,uint256) | Safe | entfernt einen Unterzeichner |
| 0xe318b52b | swapOwner(address,address,address) | Safe | tauscht einen Unterzeichner aus |
| 0x694e80c3 | changeThreshold(uint256) | Safe | ändert, wie viele Unterschriften nötig sind |
| 0x610b5925 | enableModule(address) | Safe | schaltet ein Modul frei, das ohne Unterschriften handeln darf |
| 0xe009cfde | disableModule(address,address) | Safe | schaltet ein Modul ab |
| 0xe19a9dd9 | setGuard(address) | Safe | setzt einen Prüfvertrag vor jede Transaktion |
| 0xf08a0323 | setFallbackHandler(address) | Safe | setzt den Vertrag für unbekannte Aufrufe |
| 0x08c379a0 | Error(string) | Solidity | Fehlermeldung aus require oder revert |
| 0x4e487b71 | Panic(uint256) | Solidity | Programmfehler, etwa Überlauf oder Division durch null |
Selektor = erste 4 Byte von Keccak-256 der Signatur, z. B. 0xa9059cbb für transfer(address,uint256). Stand 14. November 2026.
07 / VORGEHEN
So lesen Sie eine Transaktion vor dem Unterschreiben
- Daten holen. In der Wallet unter „Daten" oder „Hex" kopieren, bei einer schon gesendeten Transaktion bei Etherscan unter „Input Data". Die Zieladresse (to) gleich mit.
- Klartext lesen. Passt der Satz zu dem, was Sie vorhaben? Wer einen Tausch will, sollte keinen Satz über eine Sammel-Freigabe für NFTs lesen.
- Auffälligkeiten durchgehen. Unbegrenzte Freigabe, kein Mindestbetrag, fremder Empfänger, DELEGATECALL: Jede kann gewollt sein. Wichtig ist, dass Sie sie kennen.
- Adressen vergleichen. Den Empfänger einer Freigabe vollständig mit der Adresse abgleichen, die die Anwendung selbst nennt, nicht nur Anfang und Ende.
- Bei Hashes auf dem Gerät: Domain- und Nachrichten-Hash mit dem Ergebnis hier vergleichen, bevor Sie bestätigen.
Wo der Decoder aufhört
- Kein Blick in die Chain. Ob die Zieladresse der echte Vertrag ist, ob er ein Proxy ist und was sein Code mit den Werten macht, bleibt offen. Die Erklärung gilt für Verträge, die sich an den genannten Standard halten.
- Unbekannte Selektoren. Ohne ABI oder Signatur bleiben sie unentschlüsselt; das Werkzeug fragt keine Online-Datenbank ab. Verschiedene Funktionen können denselben Selektor haben.
- Beträge in kleinster Einheit. Kürzel und Nachkommastellen kennt das Werkzeug nur für die wenigen Token in seiner Liste, sonst stehen Beträge in der kleinsten Einheit des Tokens.
- Keine Simulation. Was die Transaktion am Ende bewegt, hängt vom Zustand der Chain beim Ausführen ab, etwa vom Kurs bei einem Tausch.
Der Decoder ist eine zweite Sicht auf das, was unterschrieben wird. Schlüssel und Gerät deckt er nicht ab; in einer Auswertung von 84 Wallet-Vorfällen mit 5,4 Milliarden US-Dollar Schaden verteilen sich die Angriffe über mehrere Ebenen Erinle u. a. 2025.
Wenn Ihre eigene Anwendung Nutzern vor dem Unterschreiben zeigen soll, was eine Transaktion tut, bauen wir das mit Ihnen; wie, steht unter Web3-Entwicklung. Weitere Werkzeuge rund um Blockchain, Token und Verträge sammelt die Übersicht der Web3-Werkzeuge.
08 / FORSCHUNG
Was die Forschung dazu sagt
Die Hinweise des Decoders folgen Befunden aus begutachteten Arbeiten. Die wichtigsten hier, die vollständige Liste mit Prüfvermerk steht weiter unten.
- Unbegrenzte Freigaben sind die Regel, Erklärungen die Ausnahme. Rund 60 Prozent der ERC-20-Freigaben waren unbegrenzt, nur jede zehnte Oberfläche erklärte sie Wang u. a. 2022. Der Decoder schreibt deshalb jede Freigabe als Satz.
- Was zählt, steht in den Daten. Phishing über Transaktionen arbeitet mit nachgebauten Seiten und verschachtelten Nutzdaten He u. a. 2023 Chen u. a. 2025. Darum liest der Decoder unabhängig von der Seite und bis in die achte Ebene.
- Wallets stellen Freigaben oft zu knapp dar. Eine Untersuchung von Freigabe-Betrug verglich 18 Wallets genau daraufhin Adamczyk 2025.
- Der Mindestbetrag schützt den Tausch. Vorgezogene und eingerahmte Aufträge sind an dezentralen Börsen gut belegt Daian u. a. 2020 Zhou u. a. 2021.
- Selektoren allein reichen nicht. Signatur-Datenbanken sind lückenhaft Chen u. a. 2022; der Decoder sagt ehrlich „unbekannt" und zeigt die Rohdaten.
- Transaktionen sind endgültig. Diese Annahme fehlt vielen, die aus dem Bankverkehr kommen Voskobojnikov u. a. 2021. Der Merksatz im Ergebnis sagt es deshalb ausdrücklich.
09 / FÜR KI-ASSISTENTEN
Dieses Werkzeug aus einem KI-Assistenten nutzen
Assistenten wie Claude oder ChatGPT, die das Model Context Protocol (MCP) sprechen, können die Rechnung dieser Seite direkt aufrufen, statt sie nachzubauen. Der Server ist öffentlich, braucht keine Anmeldung und speichert nichts. Die Antwort enthält immer den Link auf diese Seite, den Stand der Daten und die Grenzen des Ergebnisses.
- Endpunkt
- https://aureum-tech.com/mcp
- Werkzeug
- werkzeug_calldata_decoder
- Transport
- Streamable HTTP, nur lesend
| Name | Pflicht | Bedeutung |
|---|---|---|
| calldata | nein | Calldata einer Transaktion als Hex, z. B. „0x095ea7b3…" (Feld „data" oder „input"). Auch ein Transaktions-JSON mit „to" und „data" geht. |
| typed_data | nein | Alternativ: EIP-712-Signaturanfrage als JSON-Text mit types, primaryType, domain und message (wie für eth_signTypedData_v4), etwa Permit, Permit2, Seaport oder SafeTx. |
| abi | nein | Optional: ABI des Vertrags als JSON-Text (Liste, Hardhat-Artefakt oder Etherscan-Antwort). Nötig für Funktionen, die nicht in der Liste des Werkzeugs stehen. |
| signatur | nein | Optional: eine oder mehrere Solidity-Signaturen, je Zeile eine, z. B. „transfer(address to, uint256 amount)". Ohne Funktionsnamen, etwa „(address,uint256)", wird die Calldata als reine Parameter ohne Selektor gelesen. |
| an | nein | Optional: Zieladresse der Transaktion (Feld „to"). Damit erkennt das Werkzeug bekannte Token (Kürzel, Nachkommastellen) und Router-Versionen. |
| ihre_adresse | nein | Optional: Adresse der Person, die unterschreibt. Dann meldet das Werkzeug Empfänger, die nicht diese Adresse sind. |
| jetzt_unix | nein | Optional: aktuelle Zeit als Unix-Zeitstempel in Sekunden. Nur damit sagt das Werkzeug, ob Fristen schon abgelaufen sind oder ungewöhnlich lang laufen. |
Fragen, bei denen ein Assistent es aufrufen sollte
- „Was macht diese Calldata? Sie beginnt mit 0x095ea7b3 und endet mit 64-mal f."
- „Meine Wallet will, dass ich einen Uniswap-Tausch bestätige. Hier ist die Calldata; wohin gehen die Token und gibt es einen Mindestbetrag?"
- „Ist diese Permit2-Signaturanfrage eine unbegrenzte Freigabe, und bis wann gilt sie?"
- „Welche Aufrufe stecken in dieser Safe-Transaktion mit MultiSend, und läuft etwas als DELEGATECALL?"
Wie die Anbindung funktioniert und was MCP im eigenen Betrieb leisten kann, steht auf der Seite zu MCP-Integrationen.
10 / HÄUFIGE FRAGEN
Häufige Fragen zu Calldata, Freigaben und Signaturen
Was ist Calldata?
Calldata ist der Datenteil einer Transaktion, mit dem ein Smart Contract aufgerufen wird. Die ersten 4 Byte sind der Selektor, also die ersten vier Byte des Keccak-256-Hashes der Funktionssignatur, etwa 0x095ea7b3 für approve(address,uint256). Danach folgen die Parameter in Wörtern zu je 32 Byte nach der ABI-Spezifikation von Solidity. Wallets zeigen diese Daten oft nur als Hex; der Decoder macht daraus Klartext.
Was bedeutet eine unbegrenzte Freigabe bei approve?
Mit approve(spender, amount) erlauben Sie einer Adresse, Token aus Ihrem Bestand abzubuchen. Steht als Betrag der Höchstwert 2²⁵⁶ − 1, in Hex 64-mal f, gilt die Freigabe für jeden Betrag und ohne Ablaufdatum, bis Sie sie zurücknehmen. Viele Anwendungen fragen das so ab, weil Sie dann nicht vor jedem Tausch neu freigeben müssen. In einer Auswertung von 25,4 Millionen Freigaben waren rund 60 Prozent unbegrenzt.
Wie nehme ich eine Freigabe zurück?
Eine ERC-20-Freigabe nehmen Sie mit approve und dem Betrag 0 zurück, eine Sammel-Freigabe für NFTs mit setApprovalForAll und false. Permit2-Freigaben setzt die Funktion lockdown auf null. Jede Rücknahme ist selbst eine Transaktion und kostet Gas. Welche Freigaben eine Adresse erteilt hat, zeigen Block-Explorer wie Etherscan in einer eigenen Übersicht.
Was ist der Unterschied zwischen approve, permit und Permit2?
approve ist eine Transaktion, die Sie selbst senden. Bei permit (EIP-2612) unterschreiben Sie nur eine Nachricht; wer sie hat, reicht sie ein, und die Freigabe gilt danach wie bei approve. Permit2 ist ein Vertrag von Uniswap: Sie geben einen Token einmal für Permit2 frei, danach vergeben Sie dort Freigaben mit Betrag und Ablaufdatum per Unterschrift. Der Decoder liest alle drei Formen.
Was ist Blind Signing, und wozu dienen die Hashes?
Kann eine Hardware-Wallet eine Signaturanfrage nicht selbst lesbar darstellen, zeigt sie nur Hashes, bei EIP-712 meist den Domain-Hash und den Nachrichten-Hash. Wer dann bestätigt, unterschreibt blind. Der Decoder rechnet dieselben Hashes aus der Anfrage, die Ihnen der Browser zeigt. Stimmen sie mit dem Gerät überein, unterschreiben Sie genau das, was Sie oben im Klartext lesen.
Warum erkennt der Decoder einen Selektor nicht?
Er arbeitet ohne Online-Datenbank mit einer eigenen Liste von 89 verbreiteten Funktionen. Für alles andere braucht er die ABI oder die Signatur des Vertrags; bei geprüften Verträgen steht die ABI bei Etherscan. Ohne sie zeigt er die Parameter als 32-Byte-Wörter mit möglicher Deutung. Ein Selektor sind nur 4 Byte, deshalb können verschiedene Funktionen denselben haben.
Sagt der Decoder, ob eine Transaktion in Ordnung ist?
Nein. Er zeigt, was in den Daten steht, und meldet sachliche Auffälligkeiten wie eine unbegrenzte Freigabe, einen fehlenden Mindestbetrag beim Tausch oder einen DELEGATECALL. Ob die Zieladresse der echte Vertrag ist und was sein Code mit den Werten macht, sieht er nicht. Ob die Transaktion zu dem passt, was Sie vorhaben, entscheiden Sie.
Wo hört der Calldata-Decoder auf?
Er liest ohne Zugriff auf die Chain und ohne Simulation; Beträge kennt er in Token-Einheiten nur für wenige bekannte Token. Wenn Ihre eigene Anwendung Transaktionen so anzeigen soll, dass Nutzer verstehen, was sie freigeben, bauen wir das mit Ihnen, samt Prüfung der Verträge und der Zwischenzustände.
11 / STUDIEN UND QUELLEN
Worauf sich das Werkzeug stützt
Die Richtwerte und Hinweise oben beruhen auf diesen 14 wissenschaftlichen Arbeiten. Jede ist über ihren DOI bzw. die Seite des Verlags geprüft (zuletzt am 14. November 2026): Es gibt sie, sie ist nicht zurückgezogen, und ihr Befund trägt für die Frage heute noch.
Wang, D.; Feng, H.; Wu, S. u. a. (2022): Penny Wise and Pound Foolish: Quantifying the Risk of Unlimited Approval of ERC20 Tokens on Ethereum. Proceedings of the 25th International Symposium on Research in Attacks, Intrusions and Defenses (RAID 2022), S. 99–114
Befund Rund 60 Prozent von 25,4 Millionen ERC-20-Freigaben bis Juli 2021 waren unbegrenzt. Alle 22 untersuchten Anwendungen verlangten unbegrenzte Freigaben, nur 3 von 31 Oberflächen erklärten den Mechanismus, nur 5 ließen den Betrag ändern.
Im Werkzeug Der Decoder schreibt jede Freigabe mit Empfänger und Betrag aus und meldet den Höchstwert ausdrücklich als „unbegrenzte Freigabe".
doi.org/10.1145/3545948.3545963 · Konferenzbeitrag
Adamczyk, B. (2025): Dissection of an Approval-Based Trusted-Token Fraud Scheme Used Across Multiple Blockchain Systems. IEEE Access 13, S. 34467–34482
Befund Eine fast einjährige Untersuchung von Betrugsgruppen, die mit Freigaben (Approval Phishing) Millionenbeträge im Monat erbeuten; begünstigt wird das dadurch, wie Wallets Freigaben darstellen und prüfen. 18 Wallets wurden daraufhin verglichen.
Im Werkzeug Darum steht im Ergebnis zuerst der Klartext der Freigabe, auch wenn sie tief in einem Multicall oder einer Safe-Transaktion steckt.
doi.org/10.1109/access.2025.3543651 · Fachzeitschrift
He, B.; Chen, Y.; Chen, Z. u. a. (2023): TxPhishScope: Towards Detecting and Understanding Transaction-based Phishing on Ethereum. Proceedings of the 2023 ACM SIGSAC Conference on Computer and Communications Security (CCS), S. 120–134
Befund Bei Transaktions-Phishing locken nachgebaute Websites Nutzer dazu, Transaktionen zu unterschreiben, mit denen andere ihre Werte abziehen. Zwischen November 2022 und Juli 2023 fanden die Autoren 26.333 solcher Seiten und 3.486 Konten der Täter.
Im Werkzeug Der Text erklärt, dass das Entscheidende in der Calldata steht und nicht auf der Website; der Decoder liest sie unabhängig von der Seite, die sie erzeugt hat.
doi.org/10.1145/3576915.3623210 · Konferenzbeitrag
Chen, Z.; Hu, Y.; He, B. u. a. (2025): Dissecting Payload-based Transaction Phishing on Ethereum. Proceedings 2025 Network and Distributed System Security Symposium (NDSS)
Befund Phishing über die Nutzdaten von Vertragsaufrufen: 130.637 Phishing-Transaktionen in 300 Tagen mit über 341,9 Millionen US-Dollar Schaden, eingeteilt in vier Haupt- und elf Unterarten. Allein für Address Poisoning gaben Täter täglich rund 13,4 ETH an Gas aus.
Im Werkzeug Der Decoder zeigt Adressen immer vollständig mit Prüfsumme, nie gekürzt, und liest verschachtelte Nutzdaten bis in die achte Ebene.
doi.org/10.14722/ndss.2025.230311 · Konferenzbeitrag
He, B.; Hu, Y.; Chen, Z. u. a. (2025): Unmasking the Shadow Economy: A Deep Dive into Drainer-as-a-Service Phishing on Ethereum. Proceedings of the 2025 ACM Internet Measurement Conference (IMC), S. 430–444
Befund Wallet-Drainer werden als Dienstleistung vertrieben: Betreiber liefern die Baukästen, Partner betreiben die Seiten. Erfasst wurden 1.910 Verträge zur Gewinnteilung, 87.077 Auszahlungen und 32.819 Phishing-Seiten.
Im Werkzeug Weil dieselben Baukästen massenhaft eingesetzt werden, erkennt der Decoder die gängigen Muster (Freigabe, Sammel-Freigabe, Permit, Permit2) an der Funktion selbst und nicht an der Website.
doi.org/10.1145/3730567.3764476 · Konferenzbeitrag
Chen, T.; Li, Z.; Luo, X. u. a. (2022): SigRec: Automatic Recovery of Function Signatures in Smart Contracts. IEEE Transactions on Software Engineering 48 (8), S. 3066–3086
Befund Signatur-Datenbanken sind unvollständig und kommen mit neuen Verträgen nicht nach. SigRec gewinnt Selektor und Parametertypen aus dem Bytecode zurück und erreichte dabei 98,7 Prozent Genauigkeit.
Im Werkzeug Ein unbekannter Selektor bleibt deshalb ehrlich „unbekannt"; der Decoder zeigt dann die 32-Byte-Wörter mit Deutung und nimmt ABI oder Signatur entgegen.
doi.org/10.1109/tse.2021.3078342 · Fachzeitschrift
Voskobojnikov, A.; Wiese, O.; Mehrabi Koushki, M. u. a. (2021): The U in Crypto Stands for Usable: An Empirical Study of User Experience with Mobile Cryptocurrency Wallets. Proceedings of the 2021 CHI Conference on Human Factors in Computing Systems, S. 1–14
Befund In 6.859 App-Bewertungen von Wallets zeigten sich Fehlannahmen aus dem Bankverkehr: Manche hielten Transaktionen für kostenlos, umkehrbar und jederzeit stornierbar.
Im Werkzeug Der Merksatz im Ergebnis sagt ausdrücklich, dass eine bestätigte Transaktion nicht zurückkommt und eine Freigabe gilt, bis sie abläuft oder widerrufen wird.
doi.org/10.1145/3411764.3445407 · Konferenzbeitrag
Froehlich, M.; Wagenhaus, M. R.; Schmidt, A. u. a. (2021): Don’t Stop Me Now! Exploring Challenges Of First-Time Cryptocurrency Users. Designing Interactive Systems Conference 2021 (DIS), S. 138–148
Befund In einer Nutzerstudie mit 34 Personen scheiterten Neulinge auch an verbreiteten Wallets, die nicht für ihre Bedürfnisse gebaut sind; die Hürden reichten von der Oberfläche bis zu kryptospezifischen Begriffen.
Im Werkzeug Der Klartext kommt ohne Fachwörter aus, und Begriffe wie Selektor, Freigabe oder DELEGATECALL werden dort erklärt, wo sie im Ergebnis auftauchen.
doi.org/10.1145/3461778.3462071 · Konferenzbeitrag
Erinle, Y.; Kethepalli, Y.; Feng, Y. u. a. (2025): SoK: Design, vulnerabilities, and security measures of cryptocurrency wallets. Computer Networks 273, Art. 111691
Befund Eine Systematisierung von Wallet-Bauarten und Angriffen mit einem mehrschichtigen Angriffsmodell; ausgewertet wurden 84 Vorfälle von 2012 bis 2024 mit zusammen 5,4 Milliarden US-Dollar Schaden.
Im Werkzeug Daraus die Grenze im Text: Der Decoder deckt nur die Ebene „was wird unterschrieben" ab, nicht die Sicherheit von Schlüssel, Gerät oder Wallet-Software.
doi.org/10.1016/j.comnet.2025.111691 · Übersichtsarbeit
Dabrowski, A.; Pfeffer, K.; Reichel, M. u. a. (2021): Better Keep Cash in Your Boots - Hardware Wallets are the New Single Point of Failure. Proceedings of the 2021 ACM CCS Workshop on Decentralized Finance and Security, S. 1–8
Befund Hardware-Wallets verlagern das Vertrauen nur vom PC auf ein anderes Gerät, das sich vor oder nach der Lieferung manipulieren lässt. Die Autoren fordern eine gegenseitige Prüfung, bei der weder ein kompromittierter PC noch eine kompromittierte Wallet Transaktionen unbemerkt verändern kann.
Im Werkzeug Der Decoder rechnet die EIP-712-Hashes selbst, damit Sie sie mit der Anzeige der Hardware-Wallet vergleichen können: zwei unabhängige Geräte, ein Ergebnis.
doi.org/10.1145/3464967.3488588 · Konferenzbeitrag
Rahimian, R.; Eskandari, S.; Clark, J. (2019): Resolving the Multiple Withdrawal Attack on ERC20 Tokens. 2019 IEEE European Symposium on Security and Privacy Workshops (EuroS&PW), S. 320–329
Befund Wer eine bestehende ERC-20-Freigabe von N auf M ändert, gibt dem Berechtigten die Gelegenheit, vorher noch N abzuheben und danach M. Keine der zehn untersuchten Gegenmaßnahmen löst das vollständig.
Im Werkzeug Der Text zu Freigaben erklärt, warum schon das Ändern einer bestehenden Freigabe ein Risiko ist, und rät zu knappen Beträgen statt späterer Korrekturen.
doi.org/10.1109/eurospw.2019.00042 · Konferenzbeitrag
Salehi, M.; Clark, J.; Mannan, M. (2023): Not so Immutable: Upgradeability of Smart Contracts on Ethereum. Financial Cryptography and Data Security. FC 2022 International Workshops, Lecture Notes in Computer Science, S. 539–554
Befund Sechs Muster machen Verträge austauschbar. Von 8.225 eindeutigen austauschbaren Proxys wurde rund die Hälfte von einer einzigen Adresse kontrolliert, etwa 14 Prozent von einem Safe mit wenigen Unterzeichnern.
Im Werkzeug Bei upgradeTo und upgradeToAndCall erklärt der Decoder, dass danach neuer Code gilt, auch für bestehende Freigaben, und die Grenzen nennen Proxys ausdrücklich.
doi.org/10.1007/978-3-031-32415-4_33 · Konferenzbeitrag
Daian, P.; Goldfeder, S.; Kell, T. u. a. (2020): Flash Boys 2.0: Frontrunning in Decentralized Exchanges, Miner Extractable Value, and Consensus Instability. 2020 IEEE Symposium on Security and Privacy (SP), S. 910–927
Befund Arbitrage-Bots beobachten offene Transaktionen an dezentralen Börsen, überbieten sich bei den Gebühren und setzen ihre eigenen Aufträge vor die der Nutzer.
Im Werkzeug Bei jedem Tausch nennt der Klartext den Mindestbetrag, denn er ist der Schutz gegen schlechtere Kurse durch vorgezogene Aufträge.
doi.org/10.1109/SP40000.2020.00040 · Konferenzbeitrag
Zhou, L.; Qin, K.; Torres, C. F. u. a. (2021): High-Frequency Trading on Decentralized On-Chain Exchanges. 2021 IEEE Symposium on Security and Privacy (SP), S. 428–445
Befund Sandwich-Angriffe rahmen einen Tausch mit einem Auftrag davor und einem danach ein. Schon ein einzelner Angreifer konnte damit auf Uniswap täglich mehrere Tausend US-Dollar verdienen.
Im Werkzeug Steht der Mindestbetrag eines Tauschs auf 0, meldet der Decoder das als Auffälligkeit: Der Tausch läuft dann zu jedem Kurs.
doi.org/10.1109/SP40001.2021.00027 · Konferenzbeitrag
Normen, Behörden und Herstellerangaben
- Contract ABI Specification · Solidity-Dokumentation
- EIP-20: Token Standard · Ethereum Improvement Proposals
- EIP-721: Non-Fungible Token Standard · Ethereum Improvement Proposals
- EIP-1155: Multi Token Standard · Ethereum Improvement Proposals
- EIP-2612: Permit Extension for EIP-20 Signed Approvals · Ethereum Improvement Proposals
- EIP-712: Typed structured data hashing and signing · Ethereum Improvement Proposals
- EIP-55: Mixed-case checksum address encoding · Ethereum Improvement Proposals
- EIP-1967: Proxy Storage Slots · Ethereum Improvement Proposals
- Permit2: AllowanceTransfer und SignatureTransfer · Uniswap, Quelltext
- Universal Router: Commands.sol und Dispatcher.sol · Uniswap, Quelltext
- Uniswap v4: Actions.sol · Uniswap, Quelltext
- Multicall3 · mds1, Quelltext
- MultiSend.sol: gepackte Kodierung der Sammelaufrufe · Safe, Quelltext
12 / WEITERE WERKZEUGE
Noch eine Frage offen?
Alle Werkzeuge rund um Blockchain und Smart Contracts stehen in der Übersicht der Web3-Werkzeuge.
- AT-W32 · Betriebe
Blockchain-Eignungs-Check
Braucht Ihr Vorhaben wirklich eine Blockchain, oder reicht eine Datenbank? - AT-W33 · Betriebe
MiCA-Check
Fällt Ihr Token unter MiCA, und welche Pflichten folgen daraus? - AT-W34 · Privat & Betriebe
Gas-Rechner
Was kostet eine Transaktion auf Ethereum, Arbitrum, Optimism, Base oder Polygon? - AT-W35 · Privat & Betriebe
Ethereum-Adress-Prüfer
Ist diese Ethereum-Adresse gültig und richtig geschrieben? Prüfsumme nach EIP-55 und Vergleich zweier Adressen. - AT-W36 · Betriebe
Selektor- und Topic-Rechner
Welcher Funktions-Selektor oder Event-Topic gehört zu dieser Solidity-Signatur, und umgekehrt? - AT-W38 · Betriebe
Merkle-Allowlist-Generator
Allowlist für Mint oder Airdrop: Merkle-Root und Beweise aus einer Adressliste.
Sie bauen eine Anwendung, deren Nutzer verstehen sollen, was sie unterschreiben? Wir entwickeln Smart Contracts und Oberflächen, die Freigaben und Fristen vor dem Bestätigen in Klartext zeigen, von Rodewisch aus.
+49 3744 4399760[email protected]Mo–Fr 8–17 Uhr · Straße der Jugend 5, 08228 Rodewisch