Desarrollando en zkSync Era

Series zkSync Parte 3/3

Hola comunidad 👋

¡Bienvenidos a la tercera parte de nuestra serie sobre zkSync! En la primera parte, exploramos su arquitectura, en la segunda hablamos sobre su futuro y escalabilidad, y en esta última edición, cubriremos conceptos muy poderosos, como la abstracción de cuentas (AA) y cómo se puede utilizar en zkSync.

También presentamos la Dapp de mensajería en L2 en español, donde podrás interactuar y dejar tus mensajes “Sólo ETH para testnet”. Aunque explicaremos cómo se ha desarrollado en los documentos y cómo se “podría” configurar mediante AA y un Paymaster. El Paymaster permitiría al usuario pagar con otro token ERC20, y luego el Paymaster se encargaría de pagar la transacción en ETH.

Agregado token zL2Es como Paymaster
Agregado token zL2Es como Paymaster

Esperamos que esta serie de artículos haya sido de gran ayuda e interés para ustedes y haya abordado temas importantes. Ahora, nos centraremos en aprender sobre el gran concepto de la abstracción de cuentas (AA).

✍️🔒 Account abstraction

Las cuentas en zkSync Era pueden iniciar transacciones, como una EOA, pero también pueden tener lógica arbitraria implementada en ellas, como un contrato inteligente, esta característica se denomina "abstracción de cuenta"

Repasemos algunas definiciones muy claras para entender AA:

Definición 1: AA es cuando un contrato inteligente puede pagar sus propias transacciones (Martin Triay, Devcon 6). En otras palabras, los contratos abstractos (o contratos inteligentes de cuentas) pueden pagar las transacciones. Tenga en cuenta que no es lo mismo que cuentas de propiedad externa o billeteras inteligentes.

Definición 2: AA es abstracción de validación. En L1 solo hay una forma de validar transacciones (recuperar una dirección de una firma, mirar esa dirección en el estado, determinar si el nonce está bien para la transacción que se envió y si la cuenta tiene saldo suficiente para realizar la transacción) . Con AA, abstrae el proceso de validación: utiliza diferentes tipos de firmas, primitivas criptográficas, procesos de ejecución, etc

Nota: En computación, el término abstracción se usa para generalizar algo. En este caso, estamos generalizando los contratos inteligentes de la existencia de Externally Owned Contracts (EOA) y Contract Accounts (CA), a simplemente contratos inteligentes.

La implementación de billeteras de contratos inteligentes mejoran la experiencia del usuario de almacenamiento que da pie a propiedades interesantes tales como la recuperación de claves privadas (por ejemplo, a través de recuperación social, multigrado).

También cabe destacar entre sus características que:

  • Tienen la capacidad de pagar tarifas de gas de forma nativa en tokens que no sean ETH.

  • Tienen la capacidad de cambiar tanto sus claves públicas como privadas.

  • La adición de modificaciones no criptográficas permite a los usuarios solicitar características adicionales en las transacciones, como tiempos de vencimiento y confirmaciones fuera de servicio.

  • Diversidad en los sistemas de verificación de firmas de la ECDSA actual, incluidos los algoritmos de firma segura poscuántica (p. ej., Lamport, Winternitz).

🧑‍💻 Equipo de Pruebas Nadai L2-Español

En L2 en Español, hemos explorado diversas opciones de desarrollo en los tutoriales de zkSync. A pesar de los desafíos encontrados, el resultado final fue muy satisfactorio al evidenciar el gran potencial de esta zkEVM.

💰 Paymaster

Uno de los casos de uso más interesantes de zkSync son los Paymasters “pagadores”. Imagínese poder pagar tarifas para los usuarios de su protocolo. Los paymasters son cuentas que pueden compensar las transacciones de otras cuentas. Además, también pueden facilitar el pago de tarifas en tokens ERC-20. Aunque ETH es el token de tarifa formal en zkSync, los pagadores pueden brindar la capacidad de intercambiar tokens ERC-20 a ETH sobre la marcha.

Si los usuarios desean interactuar con un paymaster, deben proporcionar la dirección del paymaster distinta de cero en su transacción EIP-712 , "Un procedimiento para el hash y la firma de datos estructurados tipeados en lugar de solo cadenas de bytes.". Los datos de entrada al paymaster se proporcionan en el campo paymasterInput.

Para garantizar que los usuarios experimenten con paymasters en testnet y puedan seguir pagando tarifas en tokens ERC-20, el equipo de Matter Labs proporciona el paymaster de testnet. Este permite pagar tarifas en token ERC-20 a una tasa de cambio de 1:1 con ETH (es decir, una unidad de este token es igual a 1 wei de ETH).

En nuestra investigación sobre Paymaster, hemos utilizado la validación de Account Abstraction para crear una nueva wallet derivada de nuestra propia wallet, la cual manejará nuestros nuevos tokens. Esta wallet utilizará un token creado por L2 Español y será gestionada mediante un smart contract de Paymaster que hemos creado y definido, para manejar la tasa de cambio del token utilizado en el pago.

Creación de nueva Wallet mediante AA, también mint "3 Token zL2Es" y un Paymaster
Creación de nueva Wallet mediante AA, también mint "3 Token zL2Es" y un Paymaster

Con el uso de Paymaster, se logra una forma segura y eficiente de realizar transacciones en el token elegido sin comprometer la seguridad del usuario. Este servicio se encarga de efectuar el pago correspondiente en el token seleccionado, permitiéndonos controlar y administrar nuestro gasto sin tener que realizar ninguna operación adicional. De esta manera, se evita exponer información sensible y se asegura la correcta ejecución de las transacciones.

Contrato Paymaster y su balance equivalente en 1:1 del ERC-20 creado "3 zL2Ep Token"
Contrato Paymaster y su balance equivalente en 1:1 del ERC-20 creado "3 zL2Ep Token"

Para añadir nuevos tokens, como zL2Es, podemos configurar el Paymaster para que cree una nueva wallet que comience desde la transacción 0 y mintea nuestro nuevo token. De esta forma, el Paymaster puede controlar con qué token se paga y realizar el cambio necesario para pagar la tarifa en ETH. Como usuarios, solo necesitamos escoger el token y pagar la tarifa en el token escogido. Si es ETH, podemos realizar la transacción directamente, de lo contrario, solo tendremos que firmar la transacción y el Paymaster se encargará del resto.

El Paymaster puede ser limitado si se detecta que el usuario está intentando realizar una operación malintencionada o que no cumple con los requisitos previos necesarios para la transacción.

Por lo tanto, es importante verificar que el usuario ha cumplido con todos los requisitos previos antes de realizar cualquier lógica en el Paymaster. En el contexto del tutorial, esto significa verificar que el usuario ha proporcionado suficiente asignación de token antes de realizar la transferencia.

El método getOverrides devuelve un objeto vacío cuando los usuarios deciden pagar con ether, pero cuando los usuarios seleccionan la opción ERC20, debe devolver la dirección del paymaster y toda la información requerida por ella. Esto ha sido una parte muy importante para último tutorial.

En resumen, la validación de AA nos permite controlar el sistema de pago de una manera segura y eficiente sin tener que preocuparnos por la gestión de tokens y transacciones complejas, podríamos haber personalizado un límite de gasto diario o configurar una multisig gracias al soporte de abstracción de cuenta o en zkSync.

👥💭 Dapp Mensajes

En esta guía, le presentamos nuestra Dapp "Mensajería L2 en Español" diseñada para mejorar su experiencia de interacción. Aunque ether es el único token con el que puede pagar tarifas, la función de extracción de cuenta le permite integrar pagadores, hemos incorporado una parte activa pero solo el propietario de Paymaster puede configurarlo, podrá ver cómo se cargan sus saldos en ERC-20 desde Paymaster y cómo puede dejar su Saludo con ETH testnet.

Además, hemos creado un contrato inteligente que almacena mensajes de saludos y una Dapp para recuperar y actualizar esos mensajes. Tenga en cuenta que aunque la opción de firma estará disponible y los saldos sean correctos de los ERC-20 configurados para el Paymaster, puede experimentar errores al intentar firmar con los ERC-20, así que sólo dejamos configurado ETH para la actualización de su mensaje.

Smart contract de Mensajería con el último mensaje guardado en la Blockchain
Smart contract de Mensajería con el último mensaje guardado en la Blockchain

Para comenzar, deberá seguir los mismos pasos que en la parte 1 para agregar la red y tener fondos. Una vez que haya hecho esto, podrá conectar su wallet de testnet a nuestra dapp.

Conectar su wallet a la dapp
Conectar su wallet a la dapp

Para pagar las tarifas, deberá seleccionar el token que desee utilizar, aunque si selecciona un token configurado que no sea "ETH", podrá ver su saldo e intentar pagar, pero el Paymaster dará un error. Por lo tanto, podrá testear su poder pero deberá elegir "ETH" para escribir su mensaje y pagar la transacción. Una vez hecho esto, podrá dejar su mensaje escrito en nuestra Dapp e interactuar de una forma más cómoda, incluso agregando emojis si lo desea.

Refrescar para reajustar la tarifa
Refrescar para reajustar la tarifa

Es importante tener en cuenta que el botón Refresh debe usarse para recalcular la tarifa, ya que esta puede depender de la longitud del mensaje que queremos almacenar como saludo.

Esperamos que a través de la Dapp "Mensajería L2 en Español", pueda tener una mejor perspectiva visual del poder de la configuración de Paymaster en testnet y cómo podría pagar con otros tokens ERC20 mediante la abstracción de cuenta, permitiendo realizar las transacciones utilizando solo una validación de firma.

🫂 Agradecimientos

¡Y así concluimos la serie de zkSync! En esta última parte, profundizamos en cómo desarrollar y aprovechar el poder de zkEVM. Recordemos que en la primera parte de la serie, analizamos la arquitectura de esta solución y en la segunda edición, exploramos el futuro de la escalabilidad con zkSync Era. Esperamos que esta serie les haya sido útil y les invitamos a estar atento/as a futuras actualizaciones.

Terminamos la tercera parte y final de la serie de zkSync, en esta parte analizamos como desarrollar y el poder que tenemos en su zkEVM. En la primera parte fue la arquitectura de esta solución y en la segunda edición, hablamos sobre el futuro de la escalabilidad con zkSync Era.

También pueden consultar nuestra Biblioteca de Layer 2 en Español para tener una información más detallada o ir directamente en este caso a zkSync Era.

🎉 ¡Gracias por leer hasta el final! Si está interesado en continuar aprendiendo y colaborando con nosotros, le invitamos a unirse a la vibrante comunidad de Telegram L2 en Español y a seguirnos en nuestro Twitter L2 en Español. Allí encontrará una gran cantidad de información sobre Layer 2 y el ecosistema de Blockchain en general. ¡Te Esperamos!

Subscribe to L2 en Español
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.