---
title: "Depurador UserOperation ERC-4337 y decodificador paymaster"
canonical: https://wavect.io/es/tools/erc-4337-useroperation-debugger/
language: es
description: "Decodifica UserOperations ERC-4337, calldata handleOps, paymasterAndData y errores EntryPoint de v0.6 a v0.9 en tu navegador."
image: "https://wavect.io/img/general/bak/open_graph_preview.jpg"
---

DIAGNÓSTICO ERC-4337 LOCAL EN EL NAVEGADOR

# Abre la UserOperation antes de que otro error opaco del bundler te haga excavar a ciegas.

Pega JSON, una envoltura JSON-RPC, calldata handleOps o datos de revert. El doctor separa campos, explica errores AA, valida límites de versión y produce una petición reproducible.

[Abrir el doctor](#tool-app) [Ver el código](https://github.com/wavect/erc-4337-useroperation-debugger)

- EntryPoint v0.6 · v0.7 · v0.8 · v0.9
- Entradas JSON · calldata · revert
- Hashing Heredado · packed · EIP-712
- Red Sin llamadas RPC ni wallet

**USEROP DOCTOR**

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

Forma válida · estado externo sin verificar

LA PARTE ÚTIL

El doctor convierte un objeto opaco en campos inspeccionables y una petición reproducible. Distingue datos locales malformados de conclusiones que requieren bundler o estado de cadena, y nunca envía la operación.

INSPECCIONA LA OPERACIÓN REAL

## Doctor de UserOperation

Confirma la versión, dirección EntryPoint y cadena antes de tratar el hash como autoritativo. La decodificación estructural puede empezar ya.

No se envía nada

**Microscopio de campos ERC-4337** Consciente de versión · local · solo lectura

Cargar ejemplo Analizar

Versión EntryPointDetectar formav0.6v0.7v0.8v0.9 Chain ID Dirección EntryPoint

01

### UserOperation, envoltura RPC, calldata o revert

Esperando entrada

### ABI opcional de la cuenta para callData

02

### Hallazgos deterministas

Sin analizar

Analiza el ejemplo o tu operación para separar errores locales de comprobaciones que necesitan estado externo.

03

### Anatomía packed y exportaciones

Aquí aparecerán campos, segmentos de bytes y una petición RPC reproducible.

### Petición RPC de reproducción

El análisis y hashing quedan en local Sin peticiones a cadena o bundler Nunca pegues claves privadas

DEL BLOB A LA REPRODUCCIÓN

## Depura la representación antes que la cadena

Muchos fallos de integración pueden aislarse sin enviar otra petición ni abrir un explorador.

1. 01 - **Pega el artefacto fallido** - Usa la UserOperation, envoltura RPC, calldata handleOps o revert anidado exactos del bundler.
2. 02 - **Confirma versión y dominio** - Elige la generación EntryPoint y verifica dirección y Chain ID antes de confiar en el hash.
3. 03 - **Exporta la reproducción** - Copia campos normalizados, petición, comando cURL o informe Markdown en el issue o prueba correspondiente.

ACCOUNT ABSTRACTION EN PRODUCCIÓN

## Para el límite donde wallet, bundler, paymaster y EntryPoint discrepan

Wavect desplegó infraestructura de account abstraction e integraciones MetaMask contra sistemas reales y parcialmente documentados. Congelar la representación exacta suele revelar qué capa la modificó.

### Hashing por versión

El packing v0.6, hashing packed v0.7 y dominios EIP-712 de v0.8 o v0.9 permanecen separados.

### Sufijo de paymaster visible

La longitud de firma v0.9 y los magic bytes se separan de los datos firmados del paymaster.

### El estado externo sigue externo

Se marcan las comprobaciones que requieren código, nonce, delegación, depósitos, políticas, simulación o lógica de cuenta.

LÍMITES HONESTOS

## Un decodificador no es una simulación del bundler

- La herramienta valida representación y hashing determinista. No ejecuta validateUserOp, callData, política del paymaster ni postOp.
- El hashing EIP-7702 depende de la dirección delegada. El doctor no inventa ese estado.
- Las firmas y callData propias solo se interpretan si se proporciona su esquema o ABI.
- Las direcciones EntryPoint oficiales son valores cómodos. Verifica dirección y código en la red real.

## Preguntas sobre el doctor de UserOperation

### ¿Llama el depurador a mi bundler o cadena?

No. El análisis JSON, ABI, packing y hashing se hacen en local. La petición RPC generada es texto para que tú la revises y ejecutes.

### ¿Qué versiones EntryPoint admite?

v0.6, v0.7, v0.8 y v0.9. Puede inferir parte de la forma, pero debes confirmar la versión antes de aceptar un hash como autoritativo.

### ¿Decodifica paymasterAndData?

Sí. Separa dirección, límites de gas, datos del paymaster y el sufijo opcional de firma v0.9.

### ¿Por qué no calcula mi hash EIP-7702?

El hash incluye el destino de delegación actual. Sin ese estado o una autorización completa, una herramienta local no puede dar un valor autoritativo.

GRATIS · CÓDIGO ABIERTO · SOLO LECTURA

## Congela la UserOperation, separa los campos y da al fallo una forma reproducible.

Usa el doctor en local y lleva la petición normalizada y los hallazgos a la capa que realmente falló.

[Volver al doctor](#tool-app) [Ver el código](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/es/tools/erc-4337-useroperation-debugger/#webpage",
      "@type": "WebPage",
      "dateModified": "2026-08-05",
      "inLanguage": "es",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-08-05",
      "url": "https://wavect.io/es/tools/erc-4337-useroperation-debugger/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "SoftwareApplication",
  "applicationCategory": "DeveloperApplication",
  "browserRequirements": "JavaScript y navegador compatible con Web Crypto",
  "codeRepository": "https://github.com/wavect/erc-4337-useroperation-debugger",
  "description": "Decodifica UserOperations ERC-4337, calldata handleOps, paymasterAndData y errores EntryPoint de v0.6 a v0.9 en tu navegador.",
  "isAccessibleForFree": true,
  "name": "Depurador de UserOperation ERC-4337",
  "offers": {
    "@type": "Offer",
    "price": "0",
    "priceCurrency": "EUR"
  },
  "operatingSystem": "Cualquier navegador moderno",
  "url": "https://wavect.io/es/tools/erc-4337-useroperation-debugger/"
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "item": "https://wavect.io/es/",
      "name": "Inicio",
      "position": 1
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/es/tools/",
      "name": "Pequeñas herramientas para tareas que no deberían seguir molestando.",
      "position": 2
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/es/tools/erc-4337-useroperation-debugger/",
      "name": "Depurador de UserOperation ERC-4337",
      "position": 3
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "No. El análisis JSON, ABI, packing y hashing se hacen en local. La petición RPC generada es texto para que tú la revises y ejecutes."
      },
      "name": "¿Llama el depurador a mi bundler o cadena?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "v0.6, v0.7, v0.8 y v0.9. Puede inferir parte de la forma, pero debes confirmar la versión antes de aceptar un hash como autoritativo."
      },
      "name": "¿Qué versiones EntryPoint admite?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Sí. Separa dirección, límites de gas, datos del paymaster y el sufijo opcional de firma v0.9."
      },
      "name": "¿Decodifica paymasterAndData?"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "El hash incluye el destino de delegación actual. Sin ese estado o una autorización completa, una herramienta local no puede dar un valor autoritativo."
      },
      "name": "¿Por qué no calcula mi hash EIP-7702?"
    }
  ],
  "speakable": {
    "@type": "SpeakableSpecification",
    "cssSelector": [
      ".faq-question",
      ".faq-answer"
    ]
  }
}
```
