Movatterモバイル変換


[0]ホーム

URL:


Skip to content
DEV Community
Log in Create account

DEV Community

Cover image for ¡Entiende las Attestations! Guía definitiva📚
Ahmed Castro
Ahmed Castro

Posted on

     

¡Entiende las Attestations! Guía definitiva📚

Esta es la guía definitiva sobre attestations. ¿Qué son? ¿Para qué sirven? ¿Importan? Vamos a ir de 0 a 100% con ejemplos prácticos y de actualidad para usuarios y desarrolladores. ¿Por qué estoy haciendo este artículo? Pienso que no son una moda, que serán una parte fundamental de web3 en áreas como gobernanza, DeFi, protección contra problemas de IA, entre otros. Además, en los últimos meses he tenido contacto directo con los creadores de EAS para entender más a profunidad este tema. Así que les invito a leer el artículo hasta el final donde voy a estar compartiendo tips avanzados.

Primeros casos de uso

EAS ya lanzó en Ethereum Mainnet y también en varias L2 como Optimism, Arbitrum, Scroll, Base y Línea. Aunque EAS es un proyecto bastante reciente, tenemos un par de aplicaciones que ya lanzaron o están próximas a lanzar. La que más me ha llamado la atención es la integración degitcoin passport que ayudará a simplificar el proceso por medio del cual demostrás tu prueba de humanidad. Otro caso de uso que me parece muy interesante es cómo EAS puede ayudar a Coinbase a cumplir con la complejidad de la regulación en Estados Unidos por medio deverificación on chain en Base. Y moviéndonos un poco del tema de identad, tenemos a Optimism RPGF que uso EAS para registrar a losBadge Holders,aplicaciones y más. Me encanta este ejemplo porque yo participé en la RPGF y ni me dí cuenta que lo estaba usando.

Casos de uso en el futuro

Te comparto a continuación los casos de uso que me parecen más relevantes a continuación

  • Proof of trade, esto para construir reputación on-chain y abrir posibilidad de préstamos sin colateral o acceso a diferentes tipos de derivados
  • Legaltech, RWA, firmas de intención, anteriormente trabajé en legaltech en web2 y veo cómo EAS puede mejorar el estándar de validez y respaldo de todo tipo de documentos legales
  • Grafos de identidad descentralizada, pruebas de reputación, mecanismos anti sybil
  • Prueba de humanidad, diferenciación entre AI y humanos, pruebas anti deepfake

Estos son mis casos de uso favoritos, para mas casos de uso consultaesta lista oficial de ideas.

Creemos una attestation desde el website

Puedes crear una attestation en base a un schema ya existente o crear el tuyo propio. Los schemas son el formato de en el que se realizarán las attestations y en este caso usaremos el schemaIs Human para attestar que el dueño de cierto address es humano. Para este ejemplo solo necesitas colocar tu billetera deMetamask (o cualquier wallet) en Scroll Sepolia, luego colocar el address al que le quieres hacer una attestation y hacer click enMake attestation. Puedes elegir si deseas la attestation off-chain, o sea gratis, que puedes obtener únicamente firmando una transacción. O alternativamente puedes elegir hacerla on-chain y pagar por la transacción para que quede pública y además la puedas conectar a lógica de smart contracts. En este caso necesitarás obtener fondos en Scroll Sepolia a través de unaScroll Sepolia Faucet

How to make an Attestation Using EAS Scan easscan

Ejemplo avanzado: Attestaciones de Swap

Este contrato hace un attestations de swaps deWETH aGHO en Uni V3 en Scroll Sepolia. Es un ejemplo que te puede ayudar a entender cómo integrar EAS en cualquier protocolo de manera autónoma, todo a través de Smart Contracts. Para probarlo, puedes lanzar este contracto y llamar la funciónswap() pasando como parámentro la cantidad deWETH que deseas cambiar. Luego puedes ver en el schema correspondiente enEAS Scan tu attestation. Recuerda que debes tenerWETH de antemano, puedes obtenerlo mediante la funcióndeposit()aquí.

// SPDX-License-Identifier: MITpragmasolidity0.8.23;import{IEAS,AttestationRequest,AttestationRequestData,RevocationRequest,RevocationRequestData}from"@ethereum-attestation-service/eas-contracts/contracts/IEAS.sol";import{NO_EXPIRATION_TIME,EMPTY_UID}from"@ethereum-attestation-service/eas-contracts/contracts/Common.sol";structExactInputSingleParams{addresstokenIn;addresstokenOut;uint24fee;addressrecipient;uintamountIn;uintamountOutMinimum;uint160sqrtPriceLimitX96;}interfaceIUniswapV3Router{functionexactInputSingle(ExactInputSingleParamscalldataparams)externalpayablereturns(uintamountOut);}interfaceIERC20{functiontotalSupply()externalviewreturns(uint256);functionbalanceOf(addressaccount)externalviewreturns(uint256);functiontransfer(addressto,uint256value)externalreturns(bool);functionallowance(addressowner,addressspender)externalviewreturns(uint256);functionapprove(addressspender,uint256value)externalreturns(bool);functiontransferFrom(addressfrom,addressto,uint256value)externalreturns(bool);}contractSwapAttestation{addressWETH=0x5300000000000000000000000000000000000004;addressGHO=0xD9692f1748aFEe00FACE2da35242417dd05a8615;addressuniswapRouter=0x17AFD0263D6909Ba1F9a8EAC697f76532365Fb95;uint24poolFee=500;// 100 500 3000 10000addresseasAddress=0xaEF4103A04090071165F78D45D83A0C0782c2B2a;bytes32schema=0x5312f94781cdc373a4f16ddb71e8aee048bc0e3fac0819ca0258cc170c646a1d;functionswap(uintamountIn)public{IERC20(WETH).transferFrom(msg.sender,address(this),amountIn);IERC20(WETH).approve(uniswapRouter,amountIn);ExactInputSingleParamsmemoryparams=ExactInputSingleParams({tokenIn:WETH,tokenOut:GHO,fee:poolFee,recipient:msg.sender,amountIn:amountIn,amountOutMinimum:0,sqrtPriceLimitX96:0});uintamountOut=IUniswapV3Router(uniswapRouter).exactInputSingle(params);IEAS(easAddress).attest(AttestationRequest({schema:schema,data:AttestationRequestData({recipient:msg.sender,expirationTime:NO_EXPIRATION_TIME,revocable:false,refUID:EMPTY_UID,data:abi.encode(WETH,GHO,amountIn,amountOut),value:0// No value/ETH})}));}}
Enter fullscreen modeExit fullscreen mode

¿Qué más puedo hacer con las Attestations?

Ahora que ya experimentamos las attestations, exploremos las posibilidades que nos ofrece EAS con ejemplos.

Herramientas interesantes para desarrollar attestation

  • Attestations privadas, hacemos una attestation a un merkle root manteniendo encriptada la información almacenada en los nodos hoja.
  • Verficación de firmas de Account Abstractionusando el EIP 1271.
  • Indexador opensource.
  • Metamask Snap que permite a los usuarios decodificar los mensajes que están firmando para una mejor UX.

Antes de diseñar tus attestations asegúrate de esto

Recientemente mientras diseñaba mis attestations tuve la oportunidad de platicar con el equipo de desarrollo de EAS. Yo les mostré un diseño de un schema muy similar a este a continuación, sobre attestations de ratings de libros.

  • Book Rating Schema
    • Book name
    • Author name
    • Rating

El equipo de EAS me advirtió que al momento de diseñar attestations muchas veces es mejor hacer "Attestations de attestations" para mantener un mejor orden y ahorrar gas. Me recomendó hacer 2 esquemas como detallo a continación:

  • Book Schema
    • Name
    • Author name
  • Book Rating Schema
    • Book UID
    • Rating

DondeBook UID es una referencia a una attestation deBook Schema ya existente. Así es más fácil de indexar la información y hacer búsquedas de todas las attestation de un libro. Además que nos ahorramos el gas de guardar el detalle de cada libro (Autor y Nombre) para cada attestation.

¡Gracias por leer este artículo!

Sígueme en dev.to y enYoutube para todo lo relacionado al desarrollo en Blockchain en Español.

Top comments(0)

Subscribe
pic
Create template

Templates let you quickly answer FAQs or store snippets for re-use.

Dismiss

Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment'spermalink.

For further actions, you may consider blocking this person and/orreporting abuse

Videos sobre programación en blockchain en español
  • Joined

More fromAhmed Castro

DEV Community

We're a place where coders share, stay up-to-date and grow their careers.

Log in Create account

[8]ページ先頭

©2009-2025 Movatter.jp