Ethereum Account Abstraction: mejorando la seguridad y la experiencia al operar con Blockchain

9 de abril de 2024

Parece que hay cierto consenso en que la tecnología Blockchain y el concepto de web3 tienen el potencial de revolucionar la forma en que interactuamos con el mundo digital. Esta revolución se basa en que cada transacción, es decir, interacción con un servicio digital, irá “firmada” por el usuario y registrada de manera inmutable en una red de Blockchain, dejando huella irrefutable de toda su actividad digital.

Para ello el usuario necesita de un monedero digital, o wallet en inglés, que será el encargado de firmar y registrar las transacciones.

Una de las principales barreras para la adopción de un monedero digital (wallet) es su poca usabilidad.

Sin embargo, una de las principales barreras para su adopción es la poca usabilidad de los monederos digitales. Los usuarios que desean realizar transacciones en una red de Blockchain deben seguir una serie de pasos que pueden resultar confusos y desalentadores, en ningún caso triviales incluso para usuarios experimentados y no digamos por parte de usuarios no técnicos.

Cómo crear y cargar un monedero digital (wallet)

Sin ser exhaustivo, los pasos a seguir para disponer de un monedero digital o wallet serían:

  1. Crear el monedero, que viene a ser un par de claves criptográficas encadenadas. Por simplicidad, puede elegir un proveedor, p. ej. Metamask, que lo crea por él.
  2. Guardar el par de claves, pública y privada, para asegurarse que tiene acceso al monedero.
  3. Crear una cuenta en un Exchange o casa de cambio, una especie de banco especializado en estas transacciones.
  4. Pasar por un proceso de KYC, o Know Your Customer en inglés, para activar la cuenta del Exchange.
  5. Traspasar fondos de su cuenta en moneda FIAT (euros) a su cuenta en el Exchange.
  6. Comprar criptomoneda de la red Blockchain que vaya a utilizar, como quien compra acciones en la casa de cambio.

Sólo cuando el monedero está creado y cargado, el usuario puede empezar a enviar transacciones a Blockchain. Para ello es necesario que “firme” la transacción con la clave privada asociada a su monedero, inicie la transacción, pague el coste de ejecutarla y, finalmente, esperar a que se confirme.

Estas transacciones tienen un coste asociado que depende, entre otros factores, de la capacidad de computación de la red Blockchain que necesite para ejecutarse, por lo que es necesario que el monedero tenga suficientes fondos para ejecutarlas.

Riesgos de los monederos digitales

Algunos de los riesgos asociados al monedero son:

  • Perder el par de claves, por lo que se dejaría de tener acceso al monedero, perdiendo todos los fondos que en él hubiera de forma irremediable. Como las redes Blockchain son descentralizadas y el monedero depende del usuario, no existe un tercero, como un banco en cuentas tradicionales, que permita restaurar las credenciales.
  • Que un tercero se haga con dicho par de claves (mediante phishing, o cualquier otra técnica que lleve a obtener estas claves) y transfiera todos los fondos a su monedero, quedándose el usuario sin ellos. Por eso, hay que tomar precauciones y no basta con guardarlas para recuperarlas, sino hacerlo con las medidas oportunas de seguridad para minimizar el riesgo de robo.
  • Realizar una transacción sobre un contrato del que se desconoce su funcionalidad y que éste vaya ‘vaciando’ el monedero. Estos contratos, o smart contracts en inglés, son programas descentralizados cuya funcionalidad puede ser ejecutada por otros contratos y/o monederos. Por ello es importante conocer de antemano qué es lo que se va a ejecutar ya que se podría estar ejecutando una transacción que ‘vacíe’ de fondos el monedero.

Ethereum Account Abstraction para operar de forma más sencilla y segura

La industria Blockchain es consciente de estos problemas y riesgos, y ha definido un mecanismo que permite operar en redes Blockchain de forma más sencilla y segura. Gracias a este mecanismo, conocido como Account Abstraction, definido en el estándar de la comunidad de Ethereum ERC4337, el usuario no necesita crear ningún monedero, ni guardar ningún par de claves pública/privada y arriesgarse a que un tercero se haga con ellas y perder los fondos. Tampoco tiene que preocuparse de adquirir fondos para realizar transacciones.

Account Abstraction (abstracción de cuentas) consta de los siguientes elementos, que son totalmente transparentes para el usuario:

  • Smart Account: smart contract que actúa como un monedero.
  • Smart Account Factory: smart contract dedicado a crear nuevas Smart Accounts.
  • User Operation: es una meta transacción (contiene los detalles de una transacción que se ejecutará en nombre de la Smart Account).
  • Entrypoint: se encarga de hacer las comprobaciones necesarias y ejecutar las User Operations, ahora sí, como transacciones.
  • Bundler: elemento encargado de recibir las User Operations enviadas por los usuarios, en caso necesario empaquetarlas, y enviarlas al Entrypoint.
  • Paymaster: encargado de patrocinar las transacciones, es decir, pagar los fondos necesarios para su ejecución en nombre de la Smart Account.

Por lo tanto, el flujo para realizar una transacción por primera vez queda de la siguiente forma:

  1. Crear una Smart Account, o cuenta controlada por contrato: Esta cuenta se crea de forma transparente para el usuario al poder utilizar cualquier credencial que actuará como identificador único para generarla, desde una simple dirección de correo electrónico y una contraseña, de forma que la creación de una Smart Account sería, de cara al usuario, exactamente igual que iniciar sesión en su correo electrónico, hasta autenticación de doble factor (2FA) o cualquier otro método de autenticación. De este modo, se elimina la necesidad de generar y guardar pares de claves pública/privada. Para la creación se llama al contrato Smart Account Factory.
  2. Iniciar la transacción, que llegará al Bundler y la redirigirá al Entrypoint para ser ejecutada.
  3. Esperar a que se confirme la transacción.

Ventajas de la abstracción de cuentas

La abstracción de cuentas abre todo un mundo de posibilidades. A continuación, se muestran algunas de las principales aplicaciones prácticas:

Transacciones patrocinadas

Esta es la aplicación más directa y popular de abstracción de cuentas y que se ha tratado anteriormente en este artículo. Gracias a las transacciones patrocinadas, ya no es necesario administrar fondos ni pagar directamente por las transacciones realizadas.

El caso de uso típico de este tipo de transacciones es el de un proveedor de servicios que asume el coste de la transacción del usuario. Frente a una transacción tradicional donde el que firma asume el coste, con este mecanismo el que firma y por tanto el responsable y dueño de la transacción no tiene que ser la misma cuenta que asume los fondos necesarios para el registro.

Lotes de transacciones

Otra de las aplicaciones de la abstracción de cuentas es la posibilidad de realizar varias transacciones en una, agrupándolas en un lote y ahorrando una cantidad nada desdeñable del coste que supondría ejecutar cada transacción por separado.

Esto contribuye a crear una experiencia Blockchain más escalable y económica, al estilo de lo que permiten las soluciones Blockchain de capa 2 y rollups. Además, Account Abstraction también se puede aplicar a este tipo de soluciones, incrementando aún más sus beneficios.

Cuentas multifirma

Un monedero solo tiene un propietario, y no permite realizar transacciones con la aprobación de terceros. La abstracción de cuentas viene a solucionar este problema con las cuentas multifirma, en las que es necesario que una transacción sea necesariamente firmada por varios integrantes antes de que se pueda ejecutar.

Recuperación de cuentas

Subcaso de cuentas multifirma. Gracias a la abstracción de cuentas, los usuarios ya no tienen que guardar la clave privada de su monedero. Sin embargo, se sigue dependiendo de una credencial de acceso. En el caso de que el dueño de una Smart Account pierda esta credencial de acceso pierde el acceso a su cuenta.

La recuperación de cuentas viene a solucionar este problema de forma que el propietario de una Smart Account pueda autorizar a un tercero en su cuenta. Una vez autorizado, si el propietario de la Smart Account pierde las credenciales puede recuperar su cuenta pidiéndole al tercero autorizado que le identifique como dueño de ésta.

Estas son solo unas pocas aplicaciones prácticas de la abstracción de cuentas. Como las Smart Accounts son cuentas controladas por un smart contract, dependen de la lógica del contrato y se puede implementar una innumerable cantidad de condiciones para autorizar la ejecución de transacciones.

La abstracción de cuentas está llamada a revolucionar Web3 al mejorar inmensamente la experiencia de usuario y aumentar la customización de cuentas y su seguridad.
Criptomonedas: el fenómeno preocupante de los rug-pulls (y cómo protegerse)

Foto de rc.xyz NFT gallery en Unsplash.