Autor original: Jarrod Watts
Compilación original: Frank, Foresight News
La última propuesta EIP-7702 de Vitalik Buterin puede ser uno de los cambios más impactantes en la historia de Ethereum. Este artículo presentará cómo funciona esta nueva propuesta y todo lo que necesita saber para implementarla.
Primero, la nueva propuesta EIP-7702 es sorprendentemente corta, lo que confunde a algunas personas sobre cómo funciona realmente. Para comprender 7702, primero debemos comprender las otras tres propuestas mencionadas en ella:
EIP-4337
EIP-3074
EIP-5003
Comencemos con el objetivo común de todas estas propuestas, la "abstracción de cuentas": las EOA (cuentas "ordinarias") en Ethereum son terribles, son riesgosas y tienen una funcionalidad muy limitada, mientras que la abstracción de cuentas permite a los usuarios usar contratos inteligentes como cuentas para agregar. más funciones y seguridad para solucionar este problema.
EIP-4337
EIP-4337, que entró en funcionamiento en la red principal en marzo de 2023, permite que los contratos inteligentes se escriban como cuentas para que puedan verificar y ejecutar transacciones, lo que mejora la experiencia de muchos usuarios (UX).
Desde su lanzamiento, EIP-4337 ha experimentado una adopción generalizada, liderada principalmente por Polygon, mientras que Base ha experimentado una mayor actividad en los últimos meses.
La última innovación relacionada con EIP-4337 proviene del ecosistema Coinbase y Coinbase Smart Wallet, que se basa en tecnología biométrica y tiene una excelente experiencia de usuario. Creé otra pequeña demostración en ETH Global Sydney el fin de semana pasado para demostrarlo.
Entonces, ¿qué tiene de malo el EIP-4337? ¿Por qué otra propuesta de resumen de cuentas hoy? Porque la EOA sigue siendo, con diferencia, el tipo de cuenta más utilizado.
Además de esto, la mayoría de las cuentas de contratos inteligentes EIP-4337 están controladas por un único firmante de EOA. Aquí está el código de muestra:
Debido a que no hay forma de "convertir" el EOA del usuario en una cuenta de contrato inteligente, existe esta extraña solución intermedia, principalmente debido a la falta de soporte nativo para conectar cuentas de contrato inteligente en aplicaciones Web3, la mayoría de las personas hoy en día todavía usan plug -en carteras como MetaMask Utilice EOA.
EIP-3074
Esto nos lleva a nuestra próxima propuesta: EIP-3074.
De hecho, esta propuesta se hizo antes de EIP-4337, pero aún no se ha fusionado con la red principal. EIP-3074 intenta darle más poder a EOA, permitiéndoles delegar el control de su EOA a contratos inteligentes.
La propuesta describe lo siguiente y agrega dos nuevos códigos de operación:
AUTH: Una EOA puede llamar a AUTH para autorizar un contrato inteligente determinado a realizar operaciones en nombre de su EOA;
AUTHCALL: Los contratos inteligentes autorizados pueden utilizar AUTHCALL para ejecutar transacciones para EOA;
Esto permite muchos de los mismos casos de uso que EIP-4337 sin necesidad de que cada usuario implemente un nuevo contrato inteligente. Una diferencia clave es que la transacción proviene del EOA del usuario, en lugar de un nuevo contrato sin el historial de la cuenta del usuario, ETH, NFT, tokens, etc.
Una respuesta común a EIP-3074 es "¿Qué pasa si alguien hace un contrato malicioso y el usuario lo delega?" Después de todo, delegar en un contrato malicioso puede causar que se agoten todos los activos criptográficos en la billetera del usuario.
La solución a este problema es que el proveedor de servicios de billetera ni siquiera permite a los usuarios autorizar ningún contrato, pueden mantener una lista blanca de contratos inteligentes a los que los usuarios pueden delegar autorización, y cualquier contrato fuera de esta lista no se mostrará al usuario.
Un punto clave de la delegación EIP-3074 es que la delegación no es permanente. "Una sola transacción de EOA hará que el nonce aumente, invalidando así la autorización inconclusa".
Básicamente, después de que el usuario realiza una nueva operación, la orden ya no es válida.
EIP-5003
Tampoco queremos darle más poder a la EOA. Después de todo, el objetivo de estas propuestas es trasladar a los usuarios de EOA a cuentas de contratos inteligentes, entonces, ¿por qué agregamos funcionalidad a EOA?
Esto conduce muy bien a nuestra próxima propuesta: EIP-5003. EIP-5003 agrega otro código de operación "AUTHUSURP" que implementa código en la dirección autorizada EIP-3074.
La diferencia entre EIP-3074 y EIP-5003 es:
EIP-3074 es una delegación temporal del contrato inteligente y puede revocarse;
EIP-5003 es una migración permanente de EOA y una "conversión" de EOA a una cuenta de contrato inteligente;
Un gran problema con EIP-3074 + EIP-5003 es que no es muy compatible con el esquema de abstracción de cuenta corriente a través de EIP-4337, por lo que a algunos en la comunidad Ethereum les preocupa que "creemos dos ecosistemas de código separados".
EIP-7702
Eso nos lleva a la propuesta de Vitalik Buterin de hoy: EIP-7702: propone modificar EIP-3074 para hacerlo más ágil y más compatible con EIP-4337, para que no terminemos con dos ecosistemas de abstracción de cuentas separados, pero también Considere EIP-5003 como el siguiente paso en la migración permanente.
EIP-7702 propone un nuevo tipo de transacción que acepta los campos código_contrato y firma, que establece el código de contrato de la cuenta del firmante en código_contrato al comenzar a ejecutar la transacción. Al final de la operación, restablece el ticker para que esté vacío.
Esto es lo mismo que EIP-3074, que implementa la función de delegación temporal de EOA para contratos inteligentes. Sin embargo, EIP-7702 no introduce nuevos códigos de operación (lo que requeriría una bifurcación), sino que define funciones que se llamarán:
AUTH -> llamar a "verificar" (verificación)
AUTHCALL -> llamar a "ejecutar"
Específicamente:
Verifique si el código de contrato de su cuenta está vacío;
Si está vacío, se establece en el código de contrato proporcionado;
Ejecute la transacción de acuerdo con la forma en que el contrato inteligente proporcionado maneja la transacción;
Restaure la configuración del código de contrato de la cuenta para que esté vacía;
"Código de contrato" significa literalmente que el código del contrato inteligente se almacena en el "código de contrato". Dado que la EOA en sí no es un contrato, este campo suele estar vacío. Sin embargo, lo inteligente de EIP-7702 es que completa temporalmente algún código de contrato inteligente en este campo durante la ejecución de la transacción.
Esta es una manera de darle a su EOA un nuevo comportamiento (en forma de ticker) para ejecutar esta transacción específica. El siguiente paso es hacer de este un cambio de comportamiento permanente, simplemente seleccione "No configurar el ticker después del cierre de la operación" null". .
Una de las mejores cosas de esta propuesta es que es altamente compatible con todo el trabajo de abstracción de cuentas creado para EIP-4337 hasta la fecha, "el código de contrato que los usuarios deben firmar puede ser en realidad el código de billetera EIP-4337 existente".
Una vez que este cambio entre en vigor, los EOA existentes de los usuarios pueden ejecutar cualquier código de contrato inteligente. Con EIP adicional, EOA también se puede actualizar permanentemente para ejecutar código específico.
Con el tiempo, esto podría revolucionar la forma en que todos interactuamos con las aplicaciones Web3.