---
title: "ERC-4337 UserOperation Debugger und Paymaster Decoder"
canonical: https://wavect.io/de/tools/erc-4337-useroperation-debugger/
language: de
description: "Dekodiere ERC-4337 UserOperations, handleOps-Calldata, paymasterAndData und EntryPoint-Fehler für v0.6 bis v0.9 vollständig im Browser."
image: "https://wavect.io/img/general/bak/open_graph_preview.jpg"
---

BROWSER-LOKALE ERC-4337-DIAGNOSE

# Öffne die UserOperation, bevor der nächste undurchsichtige Bundler-Fehler zur Schatzsuche wird.

Füge JSON, einen JSON-RPC-Umschlag, handleOps-Calldata oder Revert-Daten ein. Der Doctor trennt gepackte Felder, erklärt AA-Fehler, prüft Versionsgrenzen und erzeugt einen reproduzierbaren Request.

[Doctor öffnen](#tool-app) [Quellcode ansehen](https://github.com/wavect/erc-4337-useroperation-debugger)

- EntryPoint v0.6 · v0.7 · v0.8 · v0.9
- Eingaben JSON · Calldata · Revert
- Hashing Legacy · Packed · EIP-712
- Netzwerk Keine RPC- oder Wallet-Aufrufe

**USEROP DOCTOR**

ENTRYPOINT v0.9 · CHAIN 1 **paymasterSignature: 65B**

Form gültig · externer Zustand ungeprüft

DER NÜTZLICHE TEIL

Der Doctor macht aus einem undurchsichtigen Objekt prüfbare Felder und einen reproduzierbaren Request. Er trennt fehlerhafte lokale Daten von Aussagen, die Bundler- oder Chain-Zustand benötigen, und sendet die Operation nirgendwohin.

DIE ECHTE OPERATION PRÜFEN

## UserOperation Doctor

Bestätige EntryPoint-Version, Adresse und Chain, bevor du einen berechneten Hash als verbindlich behandelst. Die strukturelle Dekodierung beginnt sofort.

Nichts wird übertragen

**ERC-4337-Feldmikroskop** Versionsbewusst · browser-lokal · schreibgeschützt

Beispiel laden Analysieren

EntryPoint-VersionForm erkennenv0.6v0.7v0.8v0.9 Chain ID EntryPoint-Adresse

01

### UserOperation, RPC-Umschlag, Calldata oder Revert

Warte auf Eingabe

### Optionale Account-ABI für callData

02

### Deterministische Befunde

Nicht analysiert

Analysiere das Beispiel oder deine Operation, um lokale Formfehler von Prüfungen mit externem Zustand zu trennen.

03

### Gepackte Felder und Exporte

Dekodierte Felder, Byte-Segmente und ein reproduzierbarer RPC-Request erscheinen hier.

### Reproduzierbarer RPC-Request

Parsing und Hashing bleiben lokal Keine Chain- oder Bundler-Aufrufe Niemals private Schlüssel einfügen

VOM BLOB ZUR REPRODUKTION

## Prüfe die Darstellung vor der Chain

Viele Integrationsfehler lassen sich isolieren, ohne einen weiteren Request zu senden oder einen Explorer zu öffnen.

1. 01 - **Fehlerhaftes Artefakt einfügen** - Nutze die genaue UserOperation, den RPC-Umschlag, handleOps-Calldata oder den verschachtelten Revert des Bundlers.
2. 02 - **Version und Domain bestätigen** - Wähle die EntryPoint-Generation und prüfe Adresse und Chain ID, bevor du dem Hash vertraust.
3. 03 - **Reproduktion exportieren** - Kopiere normalisierte Felder, Request, cURL-Befehl oder Markdown-Bericht in das zuständige Issue oder den Test.

ACCOUNT ABSTRACTION IN PRODUKTION

## Für die Grenze, an der Wallet, Bundler, Paymaster und EntryPoint widersprechen

Wavect lieferte Account-Abstraction-Infrastruktur und MetaMask-Integrationen gegen echte, teilweise dokumentierte Systeme. Der schnellste Debugging-Schritt ist oft, die genaue Darstellung einzufrieren und zu belegen, welche Schicht sie verändert hat.

### Versionsbewusstes Hashing

v0.6-Legacy-Packing, v0.7-Packed-Hashing und v0.8- oder v0.9-EIP-712-Domains bleiben getrennt.

### Paymaster-Suffix sichtbar

v0.9-Signaturlänge und Magic Bytes werden von signierten Paymaster-Daten getrennt.

### Externer Zustand bleibt extern

Prüfungen zu Code, Nonce, Delegation, Deposit, Policy, Simulation oder Account-Logik werden entsprechend markiert.

EHRLICHE GRENZEN

## Ein Decoder ist keine Bundler-Simulation

- Das Tool prüft Darstellung und deterministisches Hashing. Es führt validateUserOp, Account-callData, Paymaster-Policy oder postOp nicht aus.
- EIP-7702-Hashing hängt von der Delegationsadresse ab. Der Doctor erfindet diesen Zustand nicht.
- Account-Signaturen und eigene callData lassen sich nur mit bekanntem Schema oder einer ABI interpretieren.
- Offizielle EntryPoint-Adressen sind praktische Standardwerte. Prüfe Adresse und Bytecode im tatsächlichen Netzwerk.

## Fragen zum UserOperation Doctor

### Ruft der Debugger meinen Bundler oder die Chain auf?

Nein. JSON-Parsing, ABI-Dekodierung, Packing und Hashing laufen lokal. Den erzeugten RPC-Request führst du selbst aus.

### Welche EntryPoint-Versionen werden unterstützt?

v0.6, v0.7, v0.8 und v0.9. Die Form kann teilweise erkannt werden, aber vor einem verbindlichen Hash musst du die Version bestätigen.

### Kann er paymasterAndData dekodieren?

Ja. Er trennt Paymaster-Adresse, Verification- und postOp-Gas, Paymaster-Daten und den optionalen v0.9-Signatur-Suffix.

### Warum berechnet er meinen EIP-7702-Hash nicht?

Der EntryPoint-Hash enthält das aktuelle Delegationsziel. Ohne diesen Zustand oder eine vollständige Autorisierung kann ein lokales Tool keinen verbindlichen Wert liefern.

KOSTENLOS · OPEN SOURCE · NUR LESEND

## Friere die UserOperation ein, trenne die Felder und gib dem Fehler eine reproduzierbare Form.

Nutze den Doctor lokal und bringe normalisierten Request und Befunde zu der Schicht, die tatsächlich fehlgeschlagen ist.

[Zurück zum Doctor](#tool-app) [Quellcode ansehen](https://github.com/wavect/erc-4337-useroperation-debugger)

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ],
      "employee": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "founder": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "legalRepresentative": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "name": "Wavect GmbH",
      "subjectOf": {
        "@id": "https://wavect.io/verified-claims.json#dataset",
        "@type": "Dataset",
        "creator": {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        "description": "A machine-readable registry of quantitative and qualitative claims published by Wavect, with review dates, localized page appearances and public third-party citations where available.",
        "inLanguage": "en",
        "isAccessibleForFree": true,
        "license": "https://creativecommons.org/licenses/by/4.0/",
        "name": "Wavect verified publication claims",
        "url": "https://wavect.io/verified-claims.json"
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/team/kevin-riedl/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Kevin Riedl",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796365",
        "https://www.linkedin.com/in/wsdt",
        "https://github.com/wsdt"
      ],
      "url": "https://wavect.io/team/kevin-riedl/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/team/christof-jori/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Christof Jori",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796367",
        "https://www.linkedin.com/in/jocr77/",
        "https://github.com/jo-chris"
      ],
      "url": "https://wavect.io/team/christof-jori/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/#website",
      "@type": "WebSite",
      "inLanguage": [
        "en",
        "de",
        "es",
        "zh"
      ],
      "name": "Wavect",
      "potentialAction": {
        "@type": "SearchAction",
        "query-input": "required name=search_term_string",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://wavect.io/search/?q={search_term_string}"
        }
      },
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/de/tools/erc-4337-useroperation-debugger/#webpage",
      "@type": "WebPage",
      "dateModified": "2026-08-05",
      "inLanguage": "de",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-08-05",
      "url": "https://wavect.io/de/tools/erc-4337-useroperation-debugger/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "SoftwareApplication",
  "applicationCategory": "DeveloperApplication",
  "browserRequirements": "JavaScript und Browser mit Web Crypto",
  "codeRepository": "https://github.com/wavect/erc-4337-useroperation-debugger",
  "description": "Dekodiere ERC-4337 UserOperations, handleOps-Calldata, paymasterAndData und EntryPoint-Fehler für v0.6 bis v0.9 vollständig im Browser.",
  "isAccessibleForFree": true,
  "name": "ERC-4337 UserOperation Debugger",
  "offers": {
    "@type": "Offer",
    "price": "0",
    "priceCurrency": "EUR"
  },
  "operatingSystem": "Jeder moderne Browser",
  "url": "https://wavect.io/de/tools/erc-4337-useroperation-debugger/"
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "item": "https://wavect.io/de/",
      "name": "Startseite",
      "position": 1
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/de/tools/",
      "name": "Kleine Tools für Aufgaben, die nicht mühsam bleiben sollten.",
      "position": 2
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/de/tools/erc-4337-useroperation-debugger/",
      "name": "ERC-4337 UserOperation Debugger",
      "position": 3
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Nein. JSON-Parsing, ABI-Dekodierung, Packing und Hashing laufen lokal. Den erzeugten RPC-Request führst du selbst aus."
      },
      "name": "Ruft der Debugger meinen Bundler oder die Chain auf?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "v0.6, v0.7, v0.8 und v0.9. Die Form kann teilweise erkannt werden, aber vor einem verbindlichen Hash musst du die Version bestätigen."
      },
      "name": "Welche EntryPoint-Versionen werden unterstützt?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Ja. Er trennt Paymaster-Adresse, Verification- und postOp-Gas, Paymaster-Daten und den optionalen v0.9-Signatur-Suffix."
      },
      "name": "Kann er paymasterAndData dekodieren?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Der EntryPoint-Hash enthält das aktuelle Delegationsziel. Ohne diesen Zustand oder eine vollständige Autorisierung kann ein lokales Tool keinen verbindlichen Wert liefern."
      },
      "name": "Warum berechnet er meinen EIP-7702-Hash nicht?"
    }
  ],
  "speakable": {
    "@type": "SpeakableSpecification",
    "cssSelector": [
      ".faq-question",
      ".faq-answer"
    ]
  }
}
```
