Una de las novedades más recientes que se han comenzado a integrar a Ethereum es la Ethereum Account Abstraction (EAA), más conocida como la Propuesta de Mejora de Ethereum (Ethereum Improvement Proposal – EIP 4337), un nuevo paradigma que permitirá facilitar el uso de cuentas Ethereum y la interacción con las dApps desplegadas en la red.
Empieza en Bit2Me y salta al mundo de las criptomonedas con ventaja. Regístrate fácilmente y consigue 15€ GRATIS en tu primera compra con este enlace. ¡No esperes más para unirte a la revolución cripto! Registrarme
Monederos y su problema de usabilidad en las criptomonedas
Uno de los principales problemas de usabilidad de las criptomonedas está en la forma en cómo administramos nuestras cuentas. Desde la llegada de Bitcoin, hemos dependido de software diseñado para hacer de «wallets o monederos de nuestras criptomonedas». En realidad, dicho software o hardware, según sea el caso, se encarga de gestionar nuestras claves privadas y públicas, para acceder a nuestras criptomonedas contabilizadas en la blockchain.
Este sistema también es utilizado en Ethereum en la actualidad y lo es por una poderosa razón: es en extremo seguro. Si el software y el hardware están bien construidos, es imposible obtener esas claves y con ello imposible de acceder a los saldos que tengamos registrados.
De allí que una de las principales premisas en cripto sea: mantén tus claves seguras y bien resguardadas.
No importa si estas claves son un archivo binario (como pasa en Bitcoin Core, donde todo está en un archivo llamado wallet.dat) o sean un conjunto de palabras como sucede con las seed phrase (generalmente, siguiendo el estándar de Bitcoin, BIP-39).
Mantener seguras estas claves es el mayor reto para algunas personas, un reto en el que muchos fallan y con ello se pierden cientos e incluso millones de dólares de valor. Todo porque una vez pierdes las claves, es imposible volver a recuperarlas, un problema de usabilidad que mantiene a muchas personas alejadas del sector y la tecnología.
Si bien en cripto la premisa de descentralizar el dinero es fundamental, solucionar este problema de usabilidad es necesario para la adopción masiva. De hecho, solucionarlo conlleva que más personas confíen en la tecnología y así el dinero descentralizado llegue a más personas.
Una de las primeras soluciones son las ofrecidas por los exchanges y wallets centralizados. Pero la misma no es del todo satisfactoria para la comunidad, especialmente aquella abocada la total descentralización del dinero.
Sin embargo, ¿qué pasaría si pudiéramos unir las capacidades de la centralización (ej: recuperar cuentas) con las de la descentralización de los monederos que estamos acostumbrados a ver (ej: la total autocustodia)? Pues bien, eso es precisamente lo que hace Ethereum Account Abstraction, y lo hace enteramente haciendo uso de smarts contracts, para construir toda una infraestructura que permite configurar monederos fáciles de crear, seguros y con opciones tan interesantes como la capacidad de recuperar nuestros saldos en caso de que perdamos acceso a nuestras claves.
Conociendo las cuentas y transacciones en Ethereum
Antes de seguir avanzando en cómo funciona la Ethereum Account Abstraction, debemos entender primero qué es una cuenta en el contexto de Ethereum y cómo se controlan. En primer lugar, debes saber que en Ethereum hay dos tipos de cuentas:
- Cuentas de contrato: este tipo de cuentas son simplemente una cuenta que vive en la blockchain y cuyo comportamiento está definido por un smart contract que lo controla.
- Cuentas de propiedad externa (EOAs): en este caso, una EOA una cuenta controlada por un par de claves pública/privada. Es decir, nuestros monederos de toda la vida.
Ahora que entendemos las cuentas, hablemos de las transacciones. ¿Qué es una transacción? Una transacción es un registro de un evento que ocurre en la blockchain de Ethereum. Las transacciones pueden utilizarse para transferir tokens, acuñar NFT o interactuar con contratos inteligentes.
Las transacciones son iniciadas por cuentas de propiedad externa (EOA). Las EOA son como personas, y tienen una clave pública y una clave privada. La clave pública se emplea para recibir transacciones y la privada para firmarlas. Cuando un EOA quiere realizar una transacción, la firma con su clave privada. Esta firma se usa para verificar que la transacción ha sido autorizada por el propietario de la EOA.
Las transacciones también tienen que pagar tasas de gas o comisiones. Las tasas de gas se utilizan para pagar los recursos computacionales que se utilizan para procesar la transacción. La cantidad de gas necesaria para una transacción depende de la complejidad de la misma. Con este conocimiento tenemos lo básico para entender como funcionan estos dos elementos y como Ethereum Account Abstraction cambiará la forma en cómo funcionan.
Ethereum Account Abstraction, cambiando la forma en cómo manejamos nuestras cuentas Ethereum
Ethereum Account Abstraction es una propuesta para permitir a los usuarios interactuar con aplicaciones descentralizadas (dApps), usando para ello carteras de contratos inteligentes en lugar de cuentas de propiedad externa (EOAs).
Esto eliminaría por completo la necesidad de que los usuarios gestionen sus propias claves privadas. Los monederos de contratos inteligentes podrían firmar transacciones en nombre de los usuarios, pero estarían controlados por la lógica del contrato inteligente. Esto permitiría una serie de beneficios, entre los que se incluyen:
- Mayor seguridad: los usuarios ya no necesitarían gestionar sus propias claves privadas, lo que reduciría el riesgo de perder sus fondos.
- Experiencia de usuario sin fisuras: los usuarios podrían interactuar con dApps sin tener que preocuparse de gestionar sus propias cuentas.
- Mayor adopción: la abstracción de cuentas facilitaría la adopción de dApps por parte de usuarios no técnicos.
- Flexibilidad: las carteras de contratos inteligentes pueden programarse para tener diferentes reglas y configuraciones. Esto permite a los usuarios tener un mayor control sobre sus cuentas y sus fondos.
La abstracción de cuentas es una propuesta que ya ha comenzado a implementarse en Ethereum. De hecho, el smart contract principal, conocido como EntryPoint Smart Contract, que será usado para comenzar con el despliegue de estas funciones, ya se ha activado en la cadena de Ethereum, y se ha usado para ir avanzando en el desarrollo de esta nueva forma de cuentas sobre Ethereum.
Historia de las propuestas de Ethereum Account Abstraction
Ethereum Account Abstraction ha tenido durante mucho tiempo una serie de propuestas que se remontan a 2016. Entre esas propuestas tenemos:
- EIP-86 (2016): Esta propuesta permitiría a los usuarios crear «contratos de cuenta» que realicen cualquier comprobación de firma/nonce deseada en lugar de utilizar el mecanismo que actualmente está codificado en el procesamiento de transacciones.
- EIP-2938 (2020): Esta propuesta crearía una nueva transacción con el tipo AA_TX_TYPE. Las transacciones de este tipo se denominan «transacciones AA».
- EIP-3074 (2020): Esta propuesta permitiría a los usuarios delegar el control de su EOA a un contrato inteligente. Permitiría a cualquier EOA actuar como un monedero de contrato inteligente sin desplegar un contrato.
La razón por la que estas propuestas no se han implementado todavía es que requieren cambios en el protocolo de la capa de consenso de la red Ethereum. Estos cambios son difíciles de implementar y requieren mucha coordinación entre las diferentes partes interesadas. Sin embargo, en 2021, se hizo una nueva propuesta para la abstracción de cuentas: EIP-4337. Esta propuesta no requiere cambios en el protocolo de la capa de consenso y puede implementarse sobre la red Ethereum existente.
¿Cómo funciona Ethereum Account Abstraction según el EIP-4337?
EIP-4337 introduce un nuevo concepto llamado «Operaciones de Usuario». Las operaciones de usuario son un tipo de transacción que describe una operación que se enviará en nombre de un usuario. Las operaciones de usuario se almacenan en un «mempool alternativo o alt mempool», que es esencialmente una sala de espera para almacenar información sobre transacciones no confirmadas. Los nodos de la red Ethereum pueden elegir actuar como «bundlers».
En este punto, los agrupadores recogen las operaciones de los usuarios del alt mempool y agrupan varias operaciones de usuarios en una única transacción denominada «transacción agrupada«. Una vez que crean una transacción agrupada, la envían a un contrato inteligente global «singleton» conocido como «EntryPoint». Sólo hay un contrato inteligente EntryPoint en toda la cadena de bloques.
El agrupador llama a una función del contrato inteligente EntryPoint denominada handleOps (manejador de operaciones). Esta función recibe la transacción del paquete y llama a una función especial en cada cuenta: validateUserOp. Cada cartera de contrato inteligente debe implementar esta función. La función validateUserOp sirve verificar la firma de la operación, y pagar la tasa si la cuenta considera la operación válida, antes de continuar ejecutando la operación. Cada monedero de contrato inteligente también debe implementar una segunda función: se espera que se llame «execute» para realizar realmente la operación enviada por el contrato EntryPoint.
Ventajas únicas del modelo
Gracias al modelo único de Ethereum Account Abstraction, se introduce una serie de nuevas características, incluyendo:
Recuperación social
La recuperación social es una nueva característica que permite a los usuarios añadir contactos de confianza que pueden ayudarles a recuperar sus cuentas si pierden su frase semilla. Para utilizar la recuperación social, los usuarios crean una lista de contactos de confianza y les asignan pesos de recuperación. Si un usuario pierde su frase semilla, sus contactos de confianza pueden utilizar sus pesos de recuperación para votar quién debe ser el nuevo propietario de la cuenta.
Cuentas multifirma
Las cuentas multifirma son un nuevo tipo de cuenta que requiere varias firmas para determinadas transacciones. Esto puede utilizarse para aumentar la seguridad al requerir que varias personas aprueben una transacción antes de que pueda ejecutarse. Por ejemplo, una empresa puede utilizar una cuenta multifirma para exigir la aprobación de dos o más administradores antes de efectuar un pago.
Transacciones por lotes
Las transacciones por lotes permiten a los usuarios agrupar varias transacciones y firmarlas con una sola firma. Esto puede reducir los costes de gas al eliminar la necesidad de pagar gas por cada transacción individual. Por ejemplo, un usuario puede agrupar varios pagos pequeños para reducir el coste total del gas.
Transacciones patrocinadas
Las transacciones patrocinadas permiten a los usuarios pagar transacciones con tokens ETH o ERC-20, en lugar de Ether. Esto puede ser útil para los usuarios que no tienen Ether o que quieren evitar el pago de altas tarifas de gas. Por ejemplo, un usuario podría patrocinar una transacción para enviar un mensaje a un amigo que no tiene Ether.
Así, Ethereum Account Abstraction se convierte en una mejora significativa con respecto a las cuentas tradicionales de Ethereum. Hace que las cuentas sean más seguras, más fáciles de usar y más asequibles.