Cannot sign a UserOperation for gasless approve + swap with MetaMask Stateless7702

Abierto
#9,970 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
30/100
Tipo de issue
Nueva funcionalidad
Claridad
Necesita aclaración
Estado de actividad
Activo
Stack tecnológico
blockchain, typescript

Línea de trabajo

Revisa la restricción mencionada en core PR 5470 y sigue cómo @metamask/smart-accounts-kit forma el payload EIP-712 para eth_signTypedData_v4. Compara los casos de implementación de la EOA delegada y Stateless7702, y después examina wallet_sendCalls y las cuestiones relativas al bundler/paymaster externo. Se considera terminado cuando se documente la vía de integración compatible y la justificación de seguridad, o se identifique el cambio de producto necesario.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Hi MetaMask team,

I try to build a gasless atomic approve + swap flow for a MetaMask EOA that has already delegated to the Stateless7702 implementation.

The intended flow is:

User signs a UserOperation
→ External bundler submits it
→ External paymaster sponsors the gas
→ EntryPoint executes approve + swap

Using @metamask/smart-accounts-kit, the canonical EIP-712 payload sets verifyingContract to the delegated user EOA. This appears correct because the Stateless7702 implementation executes in the EOA's context.

However, MetaMask rejects eth_signTypedData_v4 with this error:

"External signature requests cannot use internal accounts as the verifying contract."

Using the Stateless7702 implementation address instead allows signing, but produces an invalid UserOperation signature because it changes the EIP-712 digest.

I found the related restriction here:

https://github.com/MetaMask/core/pull/5470

Could you please clarify:

  1. Is raw UserOperation signing for a MetaMask-managed EIP-7702 EOA intentionally unsupported for external dapps?

  2. What security risk is this restriction designed to prevent?

  3. What is the supported integration route for a dapp to implement gasless approve + swap using its own bundler and paymaster?

  4. If wallet_sendCalls is required, how can the dapp specify an external paymaster?

Thanks !

Lenguaje dominante
TypeScript
Estrellas
422
Forks
313
Merge medio
1 d 8 h
PR fusionados (30 d)
414

Preparar el entorno

  • Sin Dockerfile ni archivo de Docker Compose
  • Tiene una plantilla de pull request
  • Sin guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de MetaMask/core

Todos los issues de MetaMask/core

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.