Seguimos con Account Abstraction, y hoy viene la cosa calentita calentita.
Primero una par de definiciones para recordar conceptos. En el estado actual de Ethereum hay dos tipos de cuentas:
Externally Owned Accounts (EOA)
Contract Accounts (CA).
Una cosa intermedia sería las AA Wallets (Account Abstraction Wallets), que aquí hemos probado varias.
Pero básicamente una EOA es una wallet que tu usas, y una CA es un contrato. Los contratos inteligentes tienen un saldo y envían transacciones por la red. Sin embargo, no están controlados por un usuario, sino que están programados y se ejecutan como se hayan programado.
Hasta hoy 🥳.
Presentamos EIP-3074
EIP-3074 es la Ethereum Improvement Proposal, que trata sobre “Allow externally owned accounts to delegate control to a contract” que básicamente quiere decir “Permitir que EOA deleguen su control a una CA”, o lo que es lo mismo:
Permitir que tu cuenta de Ethereum tal y como la conoces sea controlada y gestionada por un contrato.
Esto es algo viejo, no acaba de llegar. Fue inicialmente lanzada en Octubre de 2020.
La motivación de esto, cuando fue lanzado, fue implementar más funcionalidades a las cuentas EOA. Hablábamos de procesar varias transacciones de una, permitir pagar el GAS de una cuenta distinta a la nuestra, caducidades de firmas, y scripts.
Aunque la principal característica que se buscaba era el “sponsor de gas”: Permitir que el fee de una transacción sea pagado por una cuenta diferente de aquella que inicia la transacción.
Pues bien, EIP-3074 ha sido finalmente aprobada 🥳. La tendremos live 📺 en la próxima actualización de Ethereum. Porque a día de hoy las EOA se nos quedan cortas. Estos son los problemas que tenemos actualmente:
Una transacción por cada aprobación de cada token.
Cada acción en tu cuenta tiene una correlación 1:1 con transacciones.
Indefensos contra la pérdida de tus claves privadas.
No podemos ejecutar transacciones sin Ether.
¿Y cómo lo podemos arreglar? Pues vamos en la EIP-3074 vamos a añadir dos funciones AUTH y AUTHCALL.
AUTH toma la firma y la acción prevista de un usuario, y verifica que haya sido firmada correctamente. Establece una variable que indica la dirección de origen de la transacción.
AUTHCALL luego llama al contrato o contratos objetivo con la dirección del originador como el llamante en lugar del msg.sender real.
También vamos a conseguir, por ejemplo, que pagando una sola transacción en Uniswap estemos aprobando el token, y haciendo el swap. Una sola transacción 🥳.
💣 Recuperación de activos 💣: Podremos usar Social Recovery, es decir, perder tus claves privadas no va a significar la pérdida de tus activos.
Pero no todo es bueno. Hay cosas malas en EIP-3074…o más bien habrá que lidiar con nuevas cosas. Todos relacionadas con los “invokers”
Los contratos invoker son intermediarios sin confianza entre el patrocinador y el patrocinado. Un patrocinado cede el control al invoker para requerir que su transacción sea procesada solo por un contrato en el que confíe. Esto les permite interactuar con patrocinadores sin necesidad de confiar en ellos.
Elegir un invoker es similar a elegir una implementación de billetera de contrato inteligente. Es importante elegir uno que haya sido revisado minuciosamente, probado y aceptado por la comunidad como seguro.
Entonces:
“Invokers” maliciosos podrían robar fondos de usuarios.
El Ether en EOAs no podría ser gastado.
Un problema para las protecciones que se usan para impedir los flash-loan.
“Invokers” harán más complicado actualizar Ethereum.
En resumen, podemos decir que EIP-3074 va a simplificar y reducir las fees on-chain en Ethereum. Si, por fin algo que hace Ethereum más económico. Y lo hará más barato por dos razones:
Unir o usar una sola transacción cuando antes eran varias.
Algunas transacciones podrían ser sponsorizadas, por ejemplo swaps y minteos promocionados por el propietario.
Todo ello se hará via hard fork, proximamente.
No todo es bonito del todo 🤢
Charles Guillemet ha mostrado reservas sobre el EIP-3074. Charles que es el CTO en Ledger comenta:
La proliferación de soluciones de Layer 2 e implementaciones de Abstracción de Cuentas (AA) está causando fragmentación en la liquidez, lo que resulta en mercados ineficientes y, lo que es más importante, una experiencia de usuario fragmentada.
El próximo hard fork corre el riesgo de deshacer las mejoras realizadas en EIP-4337.
Indica además que AUTH y AUTHCALL simplificaré el trabajo de los estafadores.
Si un actor malicioso te hiciera firmar una transacción, podría vaciar toda tu wallet. TO-DA.
Pero esto podría ser fácil de evitar: Las wallets deberían no aceptar solicitudes de firma de dApps desconocidas o fuentes no confiables.
Pero vamos, esto es de toda la vida de dios. No firmes lo que no sepas.
¿Cuando?
La próxima actualización de Ethereum se llamará Pralectra. Pralectra viene de Prague y Electra. Recordarás que que Dencun (Cancún-Deneb) era llamado así por los que los cambios en cada capa requieren una actualización diferente:
Los producidos en la capa de ejecución, son Cancún.
Los producidos en la capa de consenso, son Deneb.
Pues en Pralectra pasará similar: Prague y Electra.
Y no hay fecha. 🤨
Me parece que el social recovery no es compatible con 3074, precisamente porque no se pueden rotar firmas. Tampoco hay control de gastos, ni guardianes. Básicamente sigues tendiendo tu semilla y llaves privadas. Te da algunas funciones de AA pero no todas.
Solo espero que sea fácil de hacer y con poco riesgo.