[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-eip-7702-in-der-praxis-smart-account-flows-nach-pectra-erstellen":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-000000000587","a0000000-0000-0000-0000-000000000072","EIP-7702 in der Praxis: Smart-Account-Flows nach Pectra erstellen","eip-7702-in-der-praxis-smart-account-flows-nach-pectra-erstellen","EIP-7702 ermoeglicht jedem Ethereum-EOA, innerhalb einer einzelnen Transaktion voruebergehend als Smart Contract zu agieren. So implementieren Sie Batch-Transaktionen, Gas-Sponsoring und Social Recovery mit dem neuen Account-Abstraction-Primitiv.","## Was EIP-7702 ermoeglicht\n\nEIP-7702, aktiviert mit Ethereums Pectra-Upgrade im Maerz 2025, fuehrt einen neuen Transaktionstyp ein, der jedem externen Konto (EOA) erlaubt, einen **Delegationsbezeichner** festzulegen — einen Zeiger auf einen Smart Contract, dessen Code das EOA voruebergehend fuer die Dauer einer Transaktion uebernimmt. Das bedeutet, Ihre bestehende MetaMask-Wallet-Adresse kann beliebige Smart-Contract-Logik ausfuehren, ohne eine neue Contract-Wallet zu deployen oder Ihre Adresse zu aendern.\n\nDies ist die bedeutendste UX-Verbesserung in der Geschichte von Ethereum.\n\n## EIP-7702 vs ERC-4337: Wann was verwenden\n\n| Merkmal | EIP-7702 | ERC-4337 |\n|---------|----------|----------|\n| Ebene | Protokoll (neuer Tx-Typ) | Anwendung (Smart Contract) |\n| Kontotyp | Aktualisiert bestehende EOAs | Erfordert neue Contract-Wallet |\n| Adresse | Behaelt bestehende EOA-Adresse | Neue Adresse (kontrafaktisch) |\n| Persistenz | Delegation pro Transaktion | Permanenter Smart Contract |\n| Bundler erforderlich | Nein (Standard-Tx-Flow) | Ja (separater Mempool) |\n| Gas-Overhead | ~20.000 Gas fuer Delegation | ~42.000 Gas fuer UserOp-Validierung |\n| Unterstuetzte Wallets | MetaMask, Coinbase Wallet, Rainbow | Spezialisiert (Safe, ZeroDev, Biconomy) |\n| Ideal fuer | Bestehende Benutzer upgraden | Neue Benutzer, komplexe Kontologik |\n\n### Entscheidungsrahmen\n\n**EIP-7702 verwenden, wenn:**\n- Ihre Benutzer bereits EOA-Wallets haben\n- Sie Batch-Transaktionen oder Gas-Sponsoring benoetigen\n- Sie minimale Integrationskomplexitaet wollen\n\n**ERC-4337 verwenden, wenn:**\n- Sie eine neue Wallet bauen oder neue Benutzer onboarden\n- Sie persistente Kontologik benoetigen\n- Sie erweiterte Funktionen wie Module, Plugins oder Guardians benoetigen\n\n## Code-Beispiele\n\n### Batch-Transaktionen\n\n```solidity\n\u002F\u002F SPDX-License-Identifier: MIT\npragma solidity ^0.8.25;\n\n\u002F\u002F\u002F @title BatchExecutor — EIP-7702-Delegationsziel fuer Batch-Aufrufe\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\nClientseitige Nutzung mit 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### Gas-Sponsoring\n\n```solidity\n\u002F\u002F\u002F @title SponsoredExecutor — Gas-Sponsoring ueber 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### Soziale Wiederherstellung\n\n```solidity\n\u002F\u002F\u002F @title RecoveryModule — Soziale Wiederherstellung ueber 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## Status der Wallet-Integration\n\n### MetaMask\n\nMetaMask hat EIP-7702-Support in Version 12.4 (September 2025) hinzugefuegt.\n\n### Coinbase Wallet\n\nCoinbase Wallet ist der aggressivste Adopter und hat EIP-7702 in die \"Smart Wallet\"-Funktion (November 2025) integriert:\n- **Auto-Batching** — Automatische Buendelung von Approve+Swap-Sequenzen\n- **Gas-Sponsoring** — Coinbase sponsert Gas fuer Transaktionen unter 1 $ Gebuehr\n- **Ein-Klick-DeFi** — Vorgefertigte Delegationsziele fuer gaengige DeFi-Operationen\n\n### Rainbow, Rabby und andere\n\nRainbow hat Support im Januar 2026 hinzugefuegt. Rabby unterstuetzt Type-4-Transaktionen, aber ohne Batch-Visualisierungs-UI.\n\n## Migrationsleitfaden\n\n### Schritt 1: Delegationsziele deployen\n\n### Schritt 2: Frontend aktualisieren\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### Schritt 3: Graceful Degradation implementieren\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## Sicherheitsueberlegungen\n\n### Delegationsziel-Verifizierung\n\nDer Delegationsziel-Contract hat **volle Kontrolle** ueber die Assets des EOA waehrend der Transaktion.\n\n**Gegenmassnahme:** Nur an auditierte, verifizierte Contracts delegieren.\n\n### Replay-Schutz\n\nEIP-7702-Autorisierungslisten enthalten eine Nonce gegen Replay-Angriffe.\n\n### Phishing ueber Delegation\n\n**Gegenmassnahme:** Wallets muessen klar anzeigen, an welchen Code das EOA delegiert.\n\n### Reentrancy bei Batch-Ausfuehrung\n\n```solidity\nbool private locked;\n\nmodifier noReentrant() {\n    require(!locked, \"Reentrant\");\n    locked = true;\n    _;\n    locked = false;\n}\n```\n\n### Speicher-Kollisionen\n\nEIP-7201 (Namespace-Speicher) in allen Delegationszielen verwenden:\n\n```solidity\nbytes32 constant STORAGE_SLOT = keccak256(\n    abi.encode(uint256(keccak256(\"batch.executor.storage\")) - 1)\n) & ~bytes32(uint256(0xff));\n```\n\n## Haeufig gestellte Fragen\n\n### Aendert EIP-7702 meine Wallet-Adresse?\n\nNein. Ihre EOA-Adresse bleibt gleich.\n\n### Kann ich EIP-7702 auf L2s verwenden?\n\nJa. Alle grossen L2s (Arbitrum, Base, Optimism, zkSync) haben EIP-7702 uebernommen.\n\n### Was passiert bei einem Bug im Delegationsziel?\n\nDer Schaden ist auf die einzelne Transaktion begrenzt. Aber innerhalb dieser Transaktion hat das Delegationsziel vollen Zugriff auf die EOA-Assets.\n\n### Ist EIP-7702 mit Hardware-Wallets kompatibel?\n\nJa. Ledger hat Support in Firmware 2.3.0 (Dezember 2025) hinzugefuegt.\n\n### Wie viel Gas spart EIP-7702?\n\nFuer einen typischen Approve+Swap-Flow spart EIP-7702 ca. **40-50 %** Gas. Fuer komplexe Multi-Schritt-DeFi-Operationen koennen die Einsparungen 60-70 % erreichen.","\u003Ch2 id=\"was-eip-7702-ermoeglicht\">Was EIP-7702 ermoeglicht\u003C\u002Fh2>\n\u003Cp>EIP-7702, aktiviert mit Ethereums Pectra-Upgrade im Maerz 2025, fuehrt einen neuen Transaktionstyp ein, der jedem externen Konto (EOA) erlaubt, einen \u003Cstrong>Delegationsbezeichner\u003C\u002Fstrong> festzulegen — einen Zeiger auf einen Smart Contract, dessen Code das EOA voruebergehend fuer die Dauer einer Transaktion uebernimmt. Das bedeutet, Ihre bestehende MetaMask-Wallet-Adresse kann beliebige Smart-Contract-Logik ausfuehren, ohne eine neue Contract-Wallet zu deployen oder Ihre Adresse zu aendern.\u003C\u002Fp>\n\u003Cp>Dies ist die bedeutendste UX-Verbesserung in der Geschichte von Ethereum.\u003C\u002Fp>\n\u003Ch2 id=\"eip-7702-vs-erc-4337-wann-was-verwenden\">EIP-7702 vs ERC-4337: Wann was verwenden\u003C\u002Fh2>\n\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Merkmal\u003C\u002Fth>\u003Cth>EIP-7702\u003C\u002Fth>\u003Cth>ERC-4337\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\n\u003Ctr>\u003Ctd>Ebene\u003C\u002Ftd>\u003Ctd>Protokoll (neuer Tx-Typ)\u003C\u002Ftd>\u003Ctd>Anwendung (Smart Contract)\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>Kontotyp\u003C\u002Ftd>\u003Ctd>Aktualisiert bestehende EOAs\u003C\u002Ftd>\u003Ctd>Erfordert neue Contract-Wallet\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>Adresse\u003C\u002Ftd>\u003Ctd>Behaelt bestehende EOA-Adresse\u003C\u002Ftd>\u003Ctd>Neue Adresse (kontrafaktisch)\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>Persistenz\u003C\u002Ftd>\u003Ctd>Delegation pro Transaktion\u003C\u002Ftd>\u003Ctd>Permanenter Smart Contract\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>Bundler erforderlich\u003C\u002Ftd>\u003Ctd>Nein (Standard-Tx-Flow)\u003C\u002Ftd>\u003Ctd>Ja (separater Mempool)\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>Gas-Overhead\u003C\u002Ftd>\u003Ctd>~20.000 Gas fuer Delegation\u003C\u002Ftd>\u003Ctd>~42.000 Gas fuer UserOp-Validierung\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>Unterstuetzte Wallets\u003C\u002Ftd>\u003Ctd>MetaMask, Coinbase Wallet, Rainbow\u003C\u002Ftd>\u003Ctd>Spezialisiert (Safe, ZeroDev, Biconomy)\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>Ideal fuer\u003C\u002Ftd>\u003Ctd>Bestehende Benutzer upgraden\u003C\u002Ftd>\u003Ctd>Neue Benutzer, komplexe Kontologik\u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Ch3>Entscheidungsrahmen\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>EIP-7702 verwenden, wenn:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Ihre Benutzer bereits EOA-Wallets haben\u003C\u002Fli>\n\u003Cli>Sie Batch-Transaktionen oder Gas-Sponsoring benoetigen\u003C\u002Fli>\n\u003Cli>Sie minimale Integrationskomplexitaet wollen\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>ERC-4337 verwenden, wenn:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Sie eine neue Wallet bauen oder neue Benutzer onboarden\u003C\u002Fli>\n\u003Cli>Sie persistente Kontologik benoetigen\u003C\u002Fli>\n\u003Cli>Sie erweiterte Funktionen wie Module, Plugins oder Guardians benoetigen\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"code-beispiele\">Code-Beispiele\u003C\u002Fh2>\n\u003Ch3>Batch-Transaktionen\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 — EIP-7702-Delegationsziel fuer Batch-Aufrufe\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>Clientseitige Nutzung mit 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>Gas-Sponsoring\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-solidity\">\u002F\u002F\u002F @title SponsoredExecutor — Gas-Sponsoring ueber 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>Soziale Wiederherstellung\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-solidity\">\u002F\u002F\u002F @title RecoveryModule — Soziale Wiederherstellung ueber 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=\"status-der-wallet-integration\">Status der Wallet-Integration\u003C\u002Fh2>\n\u003Ch3>MetaMask\u003C\u002Fh3>\n\u003Cp>MetaMask hat EIP-7702-Support in Version 12.4 (September 2025) hinzugefuegt.\u003C\u002Fp>\n\u003Ch3>Coinbase Wallet\u003C\u002Fh3>\n\u003Cp>Coinbase Wallet ist der aggressivste Adopter und hat EIP-7702 in die “Smart Wallet”-Funktion (November 2025) integriert:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Auto-Batching\u003C\u002Fstrong> — Automatische Buendelung von Approve+Swap-Sequenzen\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Gas-Sponsoring\u003C\u002Fstrong> — Coinbase sponsert Gas fuer Transaktionen unter 1 $ Gebuehr\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Ein-Klick-DeFi\u003C\u002Fstrong> — Vorgefertigte Delegationsziele fuer gaengige DeFi-Operationen\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Rainbow, Rabby und andere\u003C\u002Fh3>\n\u003Cp>Rainbow hat Support im Januar 2026 hinzugefuegt. Rabby unterstuetzt Type-4-Transaktionen, aber ohne Batch-Visualisierungs-UI.\u003C\u002Fp>\n\u003Ch2 id=\"migrationsleitfaden\">Migrationsleitfaden\u003C\u002Fh2>\n\u003Ch3>Schritt 1: Delegationsziele deployen\u003C\u002Fh3>\n\u003Ch3>Schritt 2: Frontend aktualisieren\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>Schritt 3: Graceful Degradation implementieren\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=\"sicherheitsueberlegungen\">Sicherheitsueberlegungen\u003C\u002Fh2>\n\u003Ch3>Delegationsziel-Verifizierung\u003C\u002Fh3>\n\u003Cp>Der Delegationsziel-Contract hat \u003Cstrong>volle Kontrolle\u003C\u002Fstrong> ueber die Assets des EOA waehrend der Transaktion.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Gegenmassnahme:\u003C\u002Fstrong> Nur an auditierte, verifizierte Contracts delegieren.\u003C\u002Fp>\n\u003Ch3>Replay-Schutz\u003C\u002Fh3>\n\u003Cp>EIP-7702-Autorisierungslisten enthalten eine Nonce gegen Replay-Angriffe.\u003C\u002Fp>\n\u003Ch3>Phishing ueber Delegation\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>Gegenmassnahme:\u003C\u002Fstrong> Wallets muessen klar anzeigen, an welchen Code das EOA delegiert.\u003C\u002Fp>\n\u003Ch3>Reentrancy bei Batch-Ausfuehrung\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>Speicher-Kollisionen\u003C\u002Fh3>\n\u003Cp>EIP-7201 (Namespace-Speicher) in allen Delegationszielen verwenden:\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=\"haeufig-gestellte-fragen\">Haeufig gestellte Fragen\u003C\u002Fh2>\n\u003Ch3 id=\"aendert-eip-7702-meine-wallet-adresse\">Aendert EIP-7702 meine Wallet-Adresse?\u003C\u002Fh3>\n\u003Cp>Nein. Ihre EOA-Adresse bleibt gleich.\u003C\u002Fp>\n\u003Ch3 id=\"kann-ich-eip-7702-auf-l2s-verwenden\">Kann ich EIP-7702 auf L2s verwenden?\u003C\u002Fh3>\n\u003Cp>Ja. Alle grossen L2s (Arbitrum, Base, Optimism, zkSync) haben EIP-7702 uebernommen.\u003C\u002Fp>\n\u003Ch3 id=\"was-passiert-bei-einem-bug-im-delegationsziel\">Was passiert bei einem Bug im Delegationsziel?\u003C\u002Fh3>\n\u003Cp>Der Schaden ist auf die einzelne Transaktion begrenzt. Aber innerhalb dieser Transaktion hat das Delegationsziel vollen Zugriff auf die EOA-Assets.\u003C\u002Fp>\n\u003Ch3 id=\"ist-eip-7702-mit-hardware-wallets-kompatibel\">Ist EIP-7702 mit Hardware-Wallets kompatibel?\u003C\u002Fh3>\n\u003Cp>Ja. Ledger hat Support in Firmware 2.3.0 (Dezember 2025) hinzugefuegt.\u003C\u002Fp>\n\u003Ch3 id=\"wie-viel-gas-spart-eip-7702\">Wie viel Gas spart EIP-7702?\u003C\u002Fh3>\n\u003Cp>Fuer einen typischen Approve+Swap-Flow spart EIP-7702 ca. \u003Cstrong>40-50 %\u003C\u002Fstrong> Gas. Fuer komplexe Multi-Schritt-DeFi-Operationen koennen die Einsparungen 60-70 % erreichen.\u003C\u002Fp>\n","de","b0000000-0000-0000-0000-000000000001",true,"2026-03-28T10:44:43.781201Z","EIP-7702 Batch-Transaktionen, Gas-Sponsoring und Social Recovery implementieren. Code-Beispiele, Wallet-Support und Sicherheitsleitfaden.","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-000000000680","Warum Bali 2026 zum Impact-Tech-Hub Südostasiens wird","warum-bali-2026-impact-tech-hub-suedostasiens","Bali rangiert auf Platz 16 unter den Startup-Ökosystemen Südostasiens. Mit einer wachsenden Konzentration von Web3-Entwicklern, AI-Nachhaltigkeits-Startups und Eco-Travel-Tech-Unternehmen formt die Insel ihre Nische als Impact-Tech-Hauptstadt der Region.","Ingenieurwesen","2026-03-28T10:44:49.720230Z",{"id":44,"title":45,"slug":46,"excerpt":47,"locale":12,"category_name":41,"published_at":48},"d0000000-0000-0000-0000-000000000679","ASEAN-Datenschutz-Flickenteppich: Compliance-Checkliste für Entwickler","asean-datenschutz-flickenteppich-compliance-checkliste-entwickler","Sieben ASEAN-Länder verfügen mittlerweile über umfassende Datenschutzgesetze mit unterschiedlichen Einwilligungsmodellen, Lokalisierungsanforderungen und Sanktionsstrukturen. Eine praktische Compliance-Checkliste für Entwickler.","2026-03-28T10:44:49.715484Z",{"id":50,"title":51,"slug":52,"excerpt":53,"locale":12,"category_name":41,"published_at":54},"d0000000-0000-0000-0000-000000000678","Indonesias 29-Milliarden-Dollar-Digitaltransformation: Chancen für Softwareunternehmen","indonesias-29-milliarden-dollar-digitaltransformation-chancen-softwareunternehmen","Indonesias IT-Dienstleistungsmarkt wird voraussichtlich 2026 29,03 Milliarden Dollar erreichen, gegenüber 24,37 Milliarden im Jahr 2025. Cloud-Infrastruktur, AI, E-Commerce und Rechenzentren treiben das schnellste Wachstum in Südostasien.","2026-03-28T10:44:49.697275Z",{"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"]