La EIP-7702 introduce un nuevo tipo de transacción en Ethereum que permite a las Cuentas Externamente Propietarias (EOAs) establecer su propio código. Este avance tiene como objetivo mejorar la experiencia del usuario en aplicaciones descentralizadas al simplificar interacciones y añadir nuevas funcionalidades.
A pesar de los progresos en monederos de contratos inteligentes, las EOAs han limitado la adopción de mejoras en la experiencia del usuario. Esta EIP se enfoca en permitir:
La "set code transaction" se basa en la EIP-2718, que establece un nuevo formato para las transacciones en Ethereum. Esta EIP permite la introducción de diferentes tipos de transacciones sin afectar la compatibilidad hacia atrás con las transacciones existentes. La EIP-2718 introduce un formato que combina un TransactionType con un TransactionPayload.
La estructura de la "set code transaction" permite que las EOAs no solo envíen y reciban transacciones, sino que también establezcan su propio código, equiparándolas con los contratos inteligentes en términos de funcionalidad.
Un aspecto clave de esta transacción es el "indicador de delegación". Este mecanismo permite que el código de una cuenta EOA sea ejecutado como si fuera un contrato inteligente. Al establecer un código a través de la delegación, las EOAs pueden apuntar a direcciones específicas donde se encuentra el código a ejecutar, ampliando así sus capacidades. Por ejemplo, podríamos ejecutar el “set code transaction” indicando a nuestra EOA que, al ser invocada, ejecute el código del smart contract que hemos especificado.
El remitente de la transacción es responsable de cubrir todos los costos de gas, incluyendo las autorizaciones, sin importar su validez. La cuenta que está delegando y comportándose como un smart contract no será quien pague por las transacciones que realice al ser invocada, de la misma forma que funciona un smart contract común. El costo total del gas se compone de un costo base, además de gastos adicionales por la cantidad de datos enviados, que varían entre datos nulos y no nulos. También se suman costos por acceder a claves y direcciones en la lista de autorizaciones. El acceso a cuentas frías resulta más caro que a cuentas cálidas, lo que refleja el uso adicional de recursos. Esto se debe a que acceder a una dirección que fue inicializada es menos costoso que a una que no lo fue. Así, el costo de gas puede ser más alto o más bajo, dependiendo de la complejidad de la transacción.
La EIP-7702 también aborda preocupaciones de seguridad. Requiere que el código delegado sea auditado correctamente para evitar accesos no autorizados. Los contratos delegados deben implementar protecciones como nonces, límites de gas, value y validación de calldata para prevenir abusos y el control malicioso de cuentas. La inicialización debe estar firmada por el EOA para prevenir ataques de front-running. Cambiar la delegación requiere cuidado con el uso de almacenamiento para evitar colisiones. Permitir que tx.origin establezca código puede romper protecciones de reentrancia. Además, los relayers deben protegerse ante pérdidas de gas no reembolsadas. Finalmente, al delegar lógica a EOAs, se complica la propagación de transacciones, por lo que los clientes deben limitar las transacciones pendientes por cuenta delegada. Por ejemplo, si alguien hace un llamado para retirar fondos de la billetera, pero antes de que se ejecute, la billetera retira los fondos, la transacción de la mempool no se ejecutará.
La EIP-7702 representa un avance importante para las EOAs en Ethereum, permitiendo una experiencia de usuario más rica y flexible. Al introducir funcionalidades como el agrupamiento de transacciones y el patrocinio, facilita la transición hacia un ecosistema donde las EOAs pueden operar con la eficacia de los contratos inteligentes. Su base en la EIP-2718 establece un marco sólido para futuros desarrollos en la plataforma.
Para una explicación más detallada y un ejemplo práctico, no olvides ver el video aquí: https://youtu.be/n6hr1g36oXw
Tendrás en tu correo todas nuestras noticias y avances. Podrás darte de baja cuando gustes :)