[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-eip-7702-en-la-practica-construir-flujos-cuenta-inteligente-despues-pectra":3},{"article":4,"author":55},{"id":5,"category_id":6,"title":7,"slug":8,"excerpt":9,"content_md":10,"content_html":11,"locale":12,"author_id":13,"published":14,"published_at":15,"meta_title":7,"meta_description":16,"focus_keyword":17,"og_image":18,"canonical_url":18,"robots_meta":19,"created_at":15,"updated_at":15,"tags":20,"category_name":34,"related_articles":35},"d0000000-0000-0000-0000-000000000590","a0000000-0000-0000-0000-000000000082","EIP-7702 en la practica: construir flujos de cuenta inteligente despues de Pectra","eip-7702-en-la-practica-construir-flujos-cuenta-inteligente-despues-pectra","EIP-7702 permite a cualquier EOA de Ethereum actuar temporalmente como contrato inteligente en una sola transaccion. Asi se implementan transacciones por lotes, patrocinio de gas y recuperacion social con la nueva primitiva de account abstraction.","## Lo que permite EIP-7702\n\nEIP-7702, activado con la actualizacion Pectra de Ethereum en marzo de 2025, introduce un nuevo tipo de transaccion que permite a cualquier cuenta de propiedad externa (EOA) establecer un **designador de delegacion** — un puntero a un contrato inteligente cuyo codigo el EOA adopta temporalmente durante la duracion de una transaccion. Esto significa que su direccion de billetera MetaMask existente puede ejecutar logica arbitraria de contrato inteligente sin desplegar una nueva billetera de contrato ni cambiar su direccion.\n\nEsta es la mejora de UX mas significativa en la historia de Ethereum.\n\n## EIP-7702 vs ERC-4337: cuando usar cual\n\n| Caracteristica | EIP-7702 | ERC-4337 |\n|---------------|----------|----------|\n| Nivel | Protocolo (nuevo tipo tx) | Aplicacion (contrato inteligente) |\n| Tipo de cuenta | Actualiza EOAs existentes | Requiere nueva billetera de contrato |\n| Direccion | Mantiene la direccion EOA existente | Nueva direccion (contrafactual) |\n| Persistencia | Delegacion por transaccion | Contrato inteligente permanente |\n| Bundler requerido | No (flujo tx estandar) | Si (mempool separado) |\n| Overhead de gas | ~20.000 gas para delegacion | ~42.000 gas para validacion UserOp |\n| Billeteras soportadas | MetaMask, Coinbase Wallet, Rainbow | Especializadas (Safe, ZeroDev, Biconomy) |\n| Ideal para | Actualizar usuarios existentes | Nuevos usuarios, logica compleja |\n\n### Marco de decision\n\n**Usar EIP-7702 cuando:**\n- Sus usuarios ya tienen billeteras EOA\n- Necesita transacciones por lotes o patrocinio de gas\n- Quiere complejidad de integracion minima\n\n**Usar ERC-4337 cuando:**\n- Esta construyendo una nueva billetera o incorporando nuevos usuarios\n- Necesita logica de cuenta persistente\n- Necesita funciones avanzadas como modulos, plugins o guardianes\n\n## Ejemplos de codigo\n\n### Transacciones por lotes\n\n```solidity\n\u002F\u002F SPDX-License-Identifier: MIT\npragma solidity ^0.8.25;\n\n\u002F\u002F\u002F @title BatchExecutor — Objetivo de delegacion EIP-7702 para llamadas por lotes\ncontract BatchExecutor {\n    struct Call {\n        address target;\n        uint256 value;\n        bytes data;\n    }\n    \n    function executeBatch(Call[] calldata calls) external payable {\n        for (uint256 i = 0; i \u003C calls.length; i++) {\n            (bool success, bytes memory result) = calls[i].target.call{\n                value: calls[i].value\n            }(calls[i].data);\n            \n            if (!success) {\n                assembly {\n                    revert(add(result, 32), mload(result))\n                }\n            }\n        }\n    }\n}\n```\n\nUso del lado del cliente con ethers.js v6:\n\n```typescript\nimport { ethers } from \"ethers\";\n\nconst batchTx = {\n    type: 4,\n    to: userAddress,\n    authorizationList: [{\n        chainId: 1,\n        address: BATCH_EXECUTOR_ADDRESS,\n        nonce: await provider.getTransactionCount(userAddress),\n        yParity: 0, r: \"0x...\", s: \"0x...\"\n    }],\n    data: batchExecutorInterface.encodeFunctionData(\"executeBatch\", [[\n        {\n            target: USDC_ADDRESS,\n            value: 0,\n            data: usdcInterface.encodeFunctionData(\"approve\", [\n                UNISWAP_ROUTER, ethers.parseUnits(\"1000\", 6)\n            ])\n        },\n        {\n            target: UNISWAP_ROUTER,\n            value: 0,\n            data: routerInterface.encodeFunctionData(\"exactInputSingle\", [{\n                tokenIn: USDC_ADDRESS,\n                tokenOut: WETH_ADDRESS,\n                fee: 3000,\n                recipient: userAddress,\n                amountIn: ethers.parseUnits(\"1000\", 6),\n                amountOutMinimum: 0,\n                sqrtPriceLimitX96: 0\n            }])\n        }\n    ]])\n};\n\nconst tx = await signer.sendTransaction(batchTx);\n```\n\n### Patrocinio de gas\n\n```solidity\n\u002F\u002F\u002F @title SponsoredExecutor — Patrocinio de gas via EIP-7702\ncontract SponsoredExecutor {\n    mapping(address => uint256) public nonces;\n    \n    function sponsoredExecute(\n        address user,\n        address target,\n        bytes calldata data,\n        uint256 userNonce,\n        uint256 deadline,\n        bytes calldata signature\n    ) external {\n        require(block.timestamp \u003C= deadline, \"Expired\");\n        require(nonces[user] == userNonce, \"Invalid nonce\");\n        nonces[user]++;\n        \n        bytes32 digest = _hashTypedData(user, target, data, userNonce, deadline);\n        address signer = ECDSA.recover(digest, signature);\n        require(signer == user, \"Invalid signature\");\n        \n        (bool success, bytes memory result) = target.call(data);\n        require(success, \"Call failed\");\n    }\n}\n```\n\n### Recuperacion social\n\n```solidity\n\u002F\u002F\u002F @title RecoveryModule — Recuperacion social via EIP-7702\ncontract RecoveryModule {\n    struct RecoveryConfig {\n        address[] guardians;\n        uint256 threshold;\n        uint256 delay;\n    }\n    \n    mapping(address => RecoveryConfig) public configs;\n    mapping(bytes32 => uint256) public recoveryTimestamps;\n    mapping(bytes32 => uint256) public approvalCounts;\n    mapping(bytes32 => mapping(address => bool)) public hasApproved;\n    \n    function setupRecovery(\n        address[] calldata guardians,\n        uint256 threshold,\n        uint256 delay\n    ) external {\n        require(guardians.length >= threshold, \"Invalid threshold\");\n        require(threshold >= 2, \"Min 2 guardians\");\n        configs[msg.sender] = RecoveryConfig(guardians, threshold, delay);\n    }\n    \n    function approveRecovery(\n        address account,\n        address newOwner\n    ) external {\n        RecoveryConfig memory config = configs[account];\n        require(_isGuardian(config, msg.sender), \"Not a guardian\");\n        \n        bytes32 recoveryId = keccak256(abi.encode(account, newOwner));\n        require(!hasApproved[recoveryId][msg.sender], \"Already approved\");\n        \n        hasApproved[recoveryId][msg.sender] = true;\n        approvalCounts[recoveryId]++;\n        \n        if (approvalCounts[recoveryId] >= config.threshold) {\n            recoveryTimestamps[recoveryId] = block.timestamp + config.delay;\n        }\n    }\n    \n    function executeRecovery(\n        address account,\n        address newOwner\n    ) external {\n        bytes32 recoveryId = keccak256(abi.encode(account, newOwner));\n        uint256 timestamp = recoveryTimestamps[recoveryId];\n        require(timestamp > 0 && block.timestamp >= timestamp, \"Not ready\");\n    }\n}\n```\n\n## Estado de integracion de billeteras\n\n### MetaMask\n\nMetaMask anadio soporte EIP-7702 en la version 12.4 (septiembre 2025).\n\n### Coinbase Wallet\n\nCoinbase Wallet es el adoptante mas agresivo, integrando EIP-7702 en su funcion \"Smart Wallet\" (lanzada en noviembre 2025):\n- **Auto-batching** — la billetera agrupa automaticamente secuencias approve+swap\n- **Patrocinio de gas** — Coinbase patrocina gas para transacciones menores de $1\n- **DeFi con un clic** — objetivos de delegacion preconstruidos para operaciones DeFi comunes\n\n### Rainbow, Rabby y otros\n\nRainbow anadio soporte en enero 2026. Rabby soporta transacciones type-4 pero sin UI de visualizacion por lotes.\n\n## Guia de migracion\n\n### Paso 1: Desplegar objetivos de delegacion\n\n### Paso 2: Actualizar su frontend\n\n```typescript\nasync function supportsEIP7702(provider: ethers.Provider): Promise\u003Cboolean> {\n    try {\n        const capabilities = await provider.send(\n            \"wallet_getCapabilities\", []\n        );\n        return capabilities?.atomicBatch?.supported === true;\n    } catch {\n        return false;\n    }\n}\n```\n\n### Paso 3: Implementar degradacion elegante\n\n```typescript\nasync function executeSwap(tokenIn, tokenOut, amount) {\n    if (await supportsEIP7702(provider)) {\n        return executeBatchSwap(tokenIn, tokenOut, amount);\n    } else {\n        await approve(tokenIn, ROUTER, amount);\n        return swap(tokenIn, tokenOut, amount);\n    }\n}\n```\n\n## Consideraciones de seguridad\n\n### Verificacion del objetivo de delegacion\n\nEl contrato objetivo de delegacion tiene **control total** sobre los activos del EOA durante la transaccion.\n\n**Mitigacion:** Solo delegar a contratos auditados y verificados.\n\n### Proteccion contra replay\n\nLas listas de autorizacion EIP-7702 incluyen un nonce para prevenir ataques de replay.\n\n### Phishing via delegacion\n\n**Mitigacion:** Las billeteras deben mostrar claramente a que codigo delega el EOA.\n\n### Reentrancia en ejecucion por lotes\n\n```solidity\nbool private locked;\n\nmodifier noReentrant() {\n    require(!locked, \"Reentrant\");\n    locked = true;\n    _;\n    locked = false;\n}\n```\n\n### Colisiones de almacenamiento\n\nUsar EIP-7201 (almacenamiento con espacio de nombres):\n\n```solidity\nbytes32 constant STORAGE_SLOT = keccak256(\n    abi.encode(uint256(keccak256(\"batch.executor.storage\")) - 1)\n) & ~bytes32(uint256(0xff));\n```\n\n## Preguntas frecuentes\n\n### EIP-7702 cambia mi direccion de billetera?\n\nNo. Su direccion EOA permanece igual.\n\n### Puedo usar EIP-7702 en L2?\n\nSi. Todos los L2 principales (Arbitrum, Base, Optimism, zkSync) han adoptado EIP-7702.\n\n### Que pasa si el objetivo de delegacion tiene un bug?\n\nEl dano se limita a una sola transaccion. Sin embargo, dentro de esa transaccion, el objetivo tiene acceso completo a los activos del EOA.\n\n### Es EIP-7702 compatible con billeteras de hardware?\n\nSi. Ledger anadio soporte en firmware 2.3.0 (diciembre 2025).\n\n### Cuanto gas ahorra EIP-7702?\n\nPara un flujo tipico de approve+swap, EIP-7702 ahorra aproximadamente **40-50%** de gas. Para operaciones DeFi complejas de multiples pasos, el ahorro puede alcanzar el 60-70%.","\u003Ch2 id=\"lo-que-permite-eip-7702\">Lo que permite EIP-7702\u003C\u002Fh2>\n\u003Cp>EIP-7702, activado con la actualizacion Pectra de Ethereum en marzo de 2025, introduce un nuevo tipo de transaccion que permite a cualquier cuenta de propiedad externa (EOA) establecer un \u003Cstrong>designador de delegacion\u003C\u002Fstrong> — un puntero a un contrato inteligente cuyo codigo el EOA adopta temporalmente durante la duracion de una transaccion. Esto significa que su direccion de billetera MetaMask existente puede ejecutar logica arbitraria de contrato inteligente sin desplegar una nueva billetera de contrato ni cambiar su direccion.\u003C\u002Fp>\n\u003Cp>Esta es la mejora de UX mas significativa en la historia de Ethereum.\u003C\u002Fp>\n\u003Ch2 id=\"eip-7702-vs-erc-4337-cuando-usar-cual\">EIP-7702 vs ERC-4337: cuando usar cual\u003C\u002Fh2>\n\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Caracteristica\u003C\u002Fth>\u003Cth>EIP-7702\u003C\u002Fth>\u003Cth>ERC-4337\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\n\u003Ctr>\u003Ctd>Nivel\u003C\u002Ftd>\u003Ctd>Protocolo (nuevo tipo tx)\u003C\u002Ftd>\u003Ctd>Aplicacion (contrato inteligente)\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>Tipo de cuenta\u003C\u002Ftd>\u003Ctd>Actualiza EOAs existentes\u003C\u002Ftd>\u003Ctd>Requiere nueva billetera de contrato\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>Direccion\u003C\u002Ftd>\u003Ctd>Mantiene la direccion EOA existente\u003C\u002Ftd>\u003Ctd>Nueva direccion (contrafactual)\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>Persistencia\u003C\u002Ftd>\u003Ctd>Delegacion por transaccion\u003C\u002Ftd>\u003Ctd>Contrato inteligente permanente\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>Bundler requerido\u003C\u002Ftd>\u003Ctd>No (flujo tx estandar)\u003C\u002Ftd>\u003Ctd>Si (mempool separado)\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>Overhead de gas\u003C\u002Ftd>\u003Ctd>~20.000 gas para delegacion\u003C\u002Ftd>\u003Ctd>~42.000 gas para validacion UserOp\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>Billeteras soportadas\u003C\u002Ftd>\u003Ctd>MetaMask, Coinbase Wallet, Rainbow\u003C\u002Ftd>\u003Ctd>Especializadas (Safe, ZeroDev, Biconomy)\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>Ideal para\u003C\u002Ftd>\u003Ctd>Actualizar usuarios existentes\u003C\u002Ftd>\u003Ctd>Nuevos usuarios, logica compleja\u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Ch3>Marco de decision\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>Usar EIP-7702 cuando:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Sus usuarios ya tienen billeteras EOA\u003C\u002Fli>\n\u003Cli>Necesita transacciones por lotes o patrocinio de gas\u003C\u002Fli>\n\u003Cli>Quiere complejidad de integracion minima\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Usar ERC-4337 cuando:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Esta construyendo una nueva billetera o incorporando nuevos usuarios\u003C\u002Fli>\n\u003Cli>Necesita logica de cuenta persistente\u003C\u002Fli>\n\u003Cli>Necesita funciones avanzadas como modulos, plugins o guardianes\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"ejemplos-de-codigo\">Ejemplos de codigo\u003C\u002Fh2>\n\u003Ch3>Transacciones por lotes\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-solidity\">\u002F\u002F SPDX-License-Identifier: MIT\npragma solidity ^0.8.25;\n\n\u002F\u002F\u002F @title BatchExecutor — Objetivo de delegacion EIP-7702 para llamadas por lotes\ncontract BatchExecutor {\n    struct Call {\n        address target;\n        uint256 value;\n        bytes data;\n    }\n    \n    function executeBatch(Call[] calldata calls) external payable {\n        for (uint256 i = 0; i &lt; calls.length; i++) {\n            (bool success, bytes memory result) = calls[i].target.call{\n                value: calls[i].value\n            }(calls[i].data);\n            \n            if (!success) {\n                assembly {\n                    revert(add(result, 32), mload(result))\n                }\n            }\n        }\n    }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Uso del lado del cliente con ethers.js v6:\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-typescript\">import { ethers } from \"ethers\";\n\nconst batchTx = {\n    type: 4,\n    to: userAddress,\n    authorizationList: [{\n        chainId: 1,\n        address: BATCH_EXECUTOR_ADDRESS,\n        nonce: await provider.getTransactionCount(userAddress),\n        yParity: 0, r: \"0x...\", s: \"0x...\"\n    }],\n    data: batchExecutorInterface.encodeFunctionData(\"executeBatch\", [[\n        {\n            target: USDC_ADDRESS,\n            value: 0,\n            data: usdcInterface.encodeFunctionData(\"approve\", [\n                UNISWAP_ROUTER, ethers.parseUnits(\"1000\", 6)\n            ])\n        },\n        {\n            target: UNISWAP_ROUTER,\n            value: 0,\n            data: routerInterface.encodeFunctionData(\"exactInputSingle\", [{\n                tokenIn: USDC_ADDRESS,\n                tokenOut: WETH_ADDRESS,\n                fee: 3000,\n                recipient: userAddress,\n                amountIn: ethers.parseUnits(\"1000\", 6),\n                amountOutMinimum: 0,\n                sqrtPriceLimitX96: 0\n            }])\n        }\n    ]])\n};\n\nconst tx = await signer.sendTransaction(batchTx);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>Patrocinio de gas\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-solidity\">\u002F\u002F\u002F @title SponsoredExecutor — Patrocinio de gas via EIP-7702\ncontract SponsoredExecutor {\n    mapping(address =&gt; uint256) public nonces;\n    \n    function sponsoredExecute(\n        address user,\n        address target,\n        bytes calldata data,\n        uint256 userNonce,\n        uint256 deadline,\n        bytes calldata signature\n    ) external {\n        require(block.timestamp &lt;= deadline, \"Expired\");\n        require(nonces[user] == userNonce, \"Invalid nonce\");\n        nonces[user]++;\n        \n        bytes32 digest = _hashTypedData(user, target, data, userNonce, deadline);\n        address signer = ECDSA.recover(digest, signature);\n        require(signer == user, \"Invalid signature\");\n        \n        (bool success, bytes memory result) = target.call(data);\n        require(success, \"Call failed\");\n    }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>Recuperacion social\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-solidity\">\u002F\u002F\u002F @title RecoveryModule — Recuperacion social via EIP-7702\ncontract RecoveryModule {\n    struct RecoveryConfig {\n        address[] guardians;\n        uint256 threshold;\n        uint256 delay;\n    }\n    \n    mapping(address =&gt; RecoveryConfig) public configs;\n    mapping(bytes32 =&gt; uint256) public recoveryTimestamps;\n    mapping(bytes32 =&gt; uint256) public approvalCounts;\n    mapping(bytes32 =&gt; mapping(address =&gt; bool)) public hasApproved;\n    \n    function setupRecovery(\n        address[] calldata guardians,\n        uint256 threshold,\n        uint256 delay\n    ) external {\n        require(guardians.length &gt;= threshold, \"Invalid threshold\");\n        require(threshold &gt;= 2, \"Min 2 guardians\");\n        configs[msg.sender] = RecoveryConfig(guardians, threshold, delay);\n    }\n    \n    function approveRecovery(\n        address account,\n        address newOwner\n    ) external {\n        RecoveryConfig memory config = configs[account];\n        require(_isGuardian(config, msg.sender), \"Not a guardian\");\n        \n        bytes32 recoveryId = keccak256(abi.encode(account, newOwner));\n        require(!hasApproved[recoveryId][msg.sender], \"Already approved\");\n        \n        hasApproved[recoveryId][msg.sender] = true;\n        approvalCounts[recoveryId]++;\n        \n        if (approvalCounts[recoveryId] &gt;= config.threshold) {\n            recoveryTimestamps[recoveryId] = block.timestamp + config.delay;\n        }\n    }\n    \n    function executeRecovery(\n        address account,\n        address newOwner\n    ) external {\n        bytes32 recoveryId = keccak256(abi.encode(account, newOwner));\n        uint256 timestamp = recoveryTimestamps[recoveryId];\n        require(timestamp &gt; 0 &amp;&amp; block.timestamp &gt;= timestamp, \"Not ready\");\n    }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2 id=\"estado-de-integracion-de-billeteras\">Estado de integracion de billeteras\u003C\u002Fh2>\n\u003Ch3>MetaMask\u003C\u002Fh3>\n\u003Cp>MetaMask anadio soporte EIP-7702 en la version 12.4 (septiembre 2025).\u003C\u002Fp>\n\u003Ch3>Coinbase Wallet\u003C\u002Fh3>\n\u003Cp>Coinbase Wallet es el adoptante mas agresivo, integrando EIP-7702 en su funcion “Smart Wallet” (lanzada en noviembre 2025):\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Auto-batching\u003C\u002Fstrong> — la billetera agrupa automaticamente secuencias approve+swap\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Patrocinio de gas\u003C\u002Fstrong> — Coinbase patrocina gas para transacciones menores de $1\u003C\u002Fli>\n\u003Cli>\u003Cstrong>DeFi con un clic\u003C\u002Fstrong> — objetivos de delegacion preconstruidos para operaciones DeFi comunes\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Rainbow, Rabby y otros\u003C\u002Fh3>\n\u003Cp>Rainbow anadio soporte en enero 2026. Rabby soporta transacciones type-4 pero sin UI de visualizacion por lotes.\u003C\u002Fp>\n\u003Ch2 id=\"guia-de-migracion\">Guia de migracion\u003C\u002Fh2>\n\u003Ch3>Paso 1: Desplegar objetivos de delegacion\u003C\u002Fh3>\n\u003Ch3>Paso 2: Actualizar su frontend\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-typescript\">async function supportsEIP7702(provider: ethers.Provider): Promise&lt;boolean&gt; {\n    try {\n        const capabilities = await provider.send(\n            \"wallet_getCapabilities\", []\n        );\n        return capabilities?.atomicBatch?.supported === true;\n    } catch {\n        return false;\n    }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>Paso 3: Implementar degradacion elegante\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-typescript\">async function executeSwap(tokenIn, tokenOut, amount) {\n    if (await supportsEIP7702(provider)) {\n        return executeBatchSwap(tokenIn, tokenOut, amount);\n    } else {\n        await approve(tokenIn, ROUTER, amount);\n        return swap(tokenIn, tokenOut, amount);\n    }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2 id=\"consideraciones-de-seguridad\">Consideraciones de seguridad\u003C\u002Fh2>\n\u003Ch3>Verificacion del objetivo de delegacion\u003C\u002Fh3>\n\u003Cp>El contrato objetivo de delegacion tiene \u003Cstrong>control total\u003C\u002Fstrong> sobre los activos del EOA durante la transaccion.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Mitigacion:\u003C\u002Fstrong> Solo delegar a contratos auditados y verificados.\u003C\u002Fp>\n\u003Ch3>Proteccion contra replay\u003C\u002Fh3>\n\u003Cp>Las listas de autorizacion EIP-7702 incluyen un nonce para prevenir ataques de replay.\u003C\u002Fp>\n\u003Ch3>Phishing via delegacion\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>Mitigacion:\u003C\u002Fstrong> Las billeteras deben mostrar claramente a que codigo delega el EOA.\u003C\u002Fp>\n\u003Ch3>Reentrancia en ejecucion por lotes\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-solidity\">bool private locked;\n\nmodifier noReentrant() {\n    require(!locked, \"Reentrant\");\n    locked = true;\n    _;\n    locked = false;\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>Colisiones de almacenamiento\u003C\u002Fh3>\n\u003Cp>Usar EIP-7201 (almacenamiento con espacio de nombres):\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-solidity\">bytes32 constant STORAGE_SLOT = keccak256(\n    abi.encode(uint256(keccak256(\"batch.executor.storage\")) - 1)\n) &amp; ~bytes32(uint256(0xff));\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2 id=\"preguntas-frecuentes\">Preguntas frecuentes\u003C\u002Fh2>\n\u003Ch3 id=\"eip-7702-cambia-mi-direccion-de-billetera\">EIP-7702 cambia mi direccion de billetera?\u003C\u002Fh3>\n\u003Cp>No. Su direccion EOA permanece igual.\u003C\u002Fp>\n\u003Ch3 id=\"puedo-usar-eip-7702-en-l2\">Puedo usar EIP-7702 en L2?\u003C\u002Fh3>\n\u003Cp>Si. Todos los L2 principales (Arbitrum, Base, Optimism, zkSync) han adoptado EIP-7702.\u003C\u002Fp>\n\u003Ch3 id=\"que-pasa-si-el-objetivo-de-delegacion-tiene-un-bug\">Que pasa si el objetivo de delegacion tiene un bug?\u003C\u002Fh3>\n\u003Cp>El dano se limita a una sola transaccion. Sin embargo, dentro de esa transaccion, el objetivo tiene acceso completo a los activos del EOA.\u003C\u002Fp>\n\u003Ch3 id=\"es-eip-7702-compatible-con-billeteras-de-hardware\">Es EIP-7702 compatible con billeteras de hardware?\u003C\u002Fh3>\n\u003Cp>Si. Ledger anadio soporte en firmware 2.3.0 (diciembre 2025).\u003C\u002Fp>\n\u003Ch3 id=\"cuanto-gas-ahorra-eip-7702\">Cuanto gas ahorra EIP-7702?\u003C\u002Fh3>\n\u003Cp>Para un flujo tipico de approve+swap, EIP-7702 ahorra aproximadamente \u003Cstrong>40-50%\u003C\u002Fstrong> de gas. Para operaciones DeFi complejas de multiples pasos, el ahorro puede alcanzar el 60-70%.\u003C\u002Fp>\n","es","b0000000-0000-0000-0000-000000000001",true,"2026-03-28T10:44:43.986612Z","Aprenda a implementar transacciones por lotes EIP-7702, patrocinio de gas y recuperacion social. Ejemplos de codigo, soporte de billeteras y guia de seguridad.","EIP-7702",null,"index, follow",[21,26,30],{"id":22,"name":23,"slug":24,"created_at":25},"c0000000-0000-0000-0000-000000000013","Security","security","2026-03-28T10:44:21.513630Z",{"id":27,"name":28,"slug":29,"created_at":25},"c0000000-0000-0000-0000-000000000014","Solidity","solidity",{"id":31,"name":32,"slug":33,"created_at":25},"c0000000-0000-0000-0000-000000000009","Web3","web3","Blockchain",[36,43,49],{"id":37,"title":38,"slug":39,"excerpt":40,"locale":12,"category_name":41,"published_at":42},"d0000000-0000-0000-0000-000000000683","Por qué Bali se está convirtiendo en el hub de impact-tech del Sudeste Asiático en 2026","por-que-bali-hub-impact-tech-sudeste-asiatico-2026","Bali ocupa el puesto 16 entre los ecosistemas startup del Sudeste Asiático. Con una concentración creciente de constructores Web3, startups de AI sostenible y empresas de eco-travel tech, la isla se consolida como capital de impact-tech de la región.","Ingeniería","2026-03-28T10:44:49.926489Z",{"id":44,"title":45,"slug":46,"excerpt":47,"locale":12,"category_name":41,"published_at":48},"d0000000-0000-0000-0000-000000000682","El mosaico de protección de datos de ASEAN: checklist de cumplimiento para desarrolladores","mosaico-proteccion-datos-asean-checklist-cumplimiento-desarrolladores","Siete países de ASEAN tienen ahora leyes integrales de protección de datos, cada una con diferentes modelos de consentimiento, requisitos de localización y estructuras de sanciones. Un checklist práctico de cumplimiento para desarrolladores.","2026-03-28T10:44:49.919345Z",{"id":50,"title":51,"slug":52,"excerpt":53,"locale":12,"category_name":41,"published_at":54},"d0000000-0000-0000-0000-000000000681","La transformación digital de 29 mil millones de dólares de Indonesia: oportunidades para empresas de software","transformacion-digital-29-mil-millones-dolares-indonesia-oportunidades-empresas-software","El mercado de servicios IT de Indonesia alcanzará los 29.030 millones de dólares en 2026, frente a los 24.370 millones de 2025. La infraestructura cloud, la AI, el comercio electrónico y los centros de datos impulsan el crecimiento más rápido del Sudeste Asiático.","2026-03-28T10:44:49.897658Z",{"id":13,"name":56,"slug":57,"bio":58,"photo_url":18,"linkedin":18,"role":59,"created_at":60,"updated_at":60},"Open Soft Team","open-soft-team","The engineering team at Open Soft, building premium software solutions from Bali, Indonesia.","Engineering Team","2026-03-28T08:31:22.226811Z"]