[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-eip-7702-fi-almumaarasa-alamaliyya-binaa-tadaffuqat-alhisab-aldhaki-baad-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-000000000593","a0000000-0000-0000-0000-000000000092","EIP-7702 في الممارسة العملية: بناء تدفقات الحساب الذكي بعد Pectra","eip-7702-fi-almumaarasa-alamaliyya-binaa-tadaffuqat-alhisab-aldhaki-baad-pectra","يسمح EIP-7702 لأي EOA على Ethereum بالعمل مؤقتاً كعقد ذكي في معاملة واحدة. إليك كيفية تنفيذ المعاملات المجمّعة ورعاية الغاز والاسترداد الاجتماعي باستخدام البدائية الجديدة لتجريد الحساب.","## ما يُمكّنه EIP-7702\n\nEIP-7702، المُفعّل مع ترقية Pectra لـ Ethereum في مارس 2025، يُقدم نوع معاملة جديداً يسمح لأي حساب ملكية خارجية (EOA) بتعيين **مُحدد تفويض** — مؤشر إلى عقد ذكي يتبنى EOA كوده مؤقتاً طوال مدة المعاملة. هذا يعني أن عنوان محفظة MetaMask الحالي يمكنه تنفيذ منطق عقد ذكي تعسفي دون نشر محفظة عقد جديدة أو تغيير عنوانك.\n\nهذا هو أهم تحسين لتجربة المستخدم في تاريخ Ethereum.\n\n## EIP-7702 مقابل ERC-4337: متى تستخدم أيهما\n\n| الميزة | EIP-7702 | ERC-4337 |\n|--------|----------|----------|\n| المستوى | البروتوكول (نوع tx جديد) | التطبيق (عقد ذكي) |\n| نوع الحساب | ترقية EOAs الموجودة | يتطلب محفظة عقد ذكي جديدة |\n| العنوان | يحتفظ بعنوان EOA الحالي | عنوان جديد (مضاد للواقع) |\n| الاستمرارية | تفويض لكل معاملة | عقد ذكي دائم |\n| يتطلب Bundler | لا (تدفق tx قياسي) | نعم (mempool منفصل) |\n| عبء الغاز | ~20,000 غاز للتفويض | ~42,000 غاز لتحقق UserOp |\n| المحافظ المدعومة | MetaMask, Coinbase Wallet, Rainbow | متخصصة (Safe, ZeroDev, Biconomy) |\n| الأفضل لـ | ترقية المستخدمين الحاليين | مستخدمون جدد، منطق حساب معقد |\n\n### إطار القرار\n\n**استخدم EIP-7702 عندما:**\n- لدى مستخدميك محافظ EOA بالفعل\n- تحتاج معاملات مجمّعة أو رعاية غاز\n- تريد الحد الأدنى من تعقيد التكامل\n\n**استخدم ERC-4337 عندما:**\n- تبني محفظة جديدة أو تُدمج مستخدمين جدداً\n- تحتاج منطق حساب مستمر\n- تحتاج ميزات متقدمة مثل الوحدات أو الإضافات أو الأوصياء\n\n## أمثلة على الكود\n\n### المعاملات المجمّعة\n\n```solidity\n\u002F\u002F SPDX-License-Identifier: MIT\npragma solidity ^0.8.25;\n\n\u002F\u002F\u002F @title BatchExecutor — هدف تفويض EIP-7702 للاستدعاءات المجمّعة\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\nالاستخدام من جانب العميل مع 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### رعاية الغاز\n\n```solidity\n\u002F\u002F\u002F @title SponsoredExecutor — رعاية الغاز عبر 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### الاسترداد الاجتماعي\n\n```solidity\n\u002F\u002F\u002F @title RecoveryModule — الاسترداد الاجتماعي عبر 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## حالة تكامل المحافظ\n\n### MetaMask\n\nأضافت MetaMask دعم EIP-7702 في الإصدار 12.4 (سبتمبر 2025).\n\n### Coinbase Wallet\n\nCoinbase Wallet هو المتبني الأكثر حماساً، حيث دمج EIP-7702 في ميزة \"Smart Wallet\" (أُطلقت في نوفمبر 2025):\n- **التجميع التلقائي** — المحفظة تُجمّع تلقائياً تسلسلات approve+swap\n- **رعاية الغاز** — Coinbase ترعى الغاز للمعاملات التي تقل رسومها عن $1\n- **DeFi بنقرة واحدة** — أهداف تفويض مبنية مسبقاً لعمليات DeFi الشائعة\n\n### Rainbow وRabby وغيرها\n\nأضافت Rainbow الدعم في يناير 2026. Rabby تدعم معاملات type-4 لكن بدون واجهة تصور التجميع.\n\n## دليل الترحيل\n\n### الخطوة 1: نشر أهداف التفويض\n\n### الخطوة 2: تحديث الواجهة الأمامية\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### الخطوة 3: تنفيذ التدهور الأنيق\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## اعتبارات الأمان\n\n### التحقق من هدف التفويض\n\nعقد هدف التفويض له **سيطرة كاملة** على أصول EOA أثناء المعاملة.\n\n**التخفيف:** فوّض فقط إلى عقود مُدققة ومُتحقق منها.\n\n### حماية إعادة التشغيل\n\nتتضمن قوائم التفويض EIP-7702 رقم nonce لمنع هجمات إعادة التشغيل.\n\n### التصيد عبر التفويض\n\n**التخفيف:** يجب على المحافظ عرض الكود الذي يُفوّض إليه EOA بوضوح.\n\n### إعادة الدخول في التنفيذ المجمّع\n\n```solidity\nbool private locked;\n\nmodifier noReentrant() {\n    require(!locked, \"Reentrant\");\n    locked = true;\n    _;\n    locked = false;\n}\n```\n\n### تصادم التخزين\n\nاستخدام EIP-7201 (تخزين مسمى):\n\n```solidity\nbytes32 constant STORAGE_SLOT = keccak256(\n    abi.encode(uint256(keccak256(\"batch.executor.storage\")) - 1)\n) & ~bytes32(uint256(0xff));\n```\n\n## الأسئلة الشائعة\n\n### هل يُغيّر EIP-7702 عنوان محفظتي؟\n\nلا. يبقى عنوان EOA كما هو. يمنح EIP-7702 عنوانك مؤقتاً قدرات العقد الذكي لمدة معاملة واحدة.\n\n### هل يمكنني استخدام EIP-7702 على L2؟\n\nنعم. جميع L2 الرئيسية (Arbitrum, Base, Optimism, zkSync) تبنت EIP-7702.\n\n### ماذا يحدث إذا كان هدف التفويض به خطأ؟\n\nيقتصر الضرر على معاملة واحدة. لكن ضمن تلك المعاملة، يمتلك الهدف وصولاً كاملاً لأصول EOA.\n\n### هل EIP-7702 متوافق مع محافظ الأجهزة؟\n\nنعم. أضافت Ledger الدعم في البرنامج الثابت 2.3.0 (ديسمبر 2025).\n\n### كم من الغاز يوفر EIP-7702؟\n\nلتدفق approve+swap نموذجي، يوفر EIP-7702 حوالي **40-50%** من الغاز. لعمليات DeFi المعقدة متعددة الخطوات، يمكن أن تصل الوفورات إلى 60-70%.","\u003Ch2 id=\"eip-7702\">ما يُمكّنه EIP-7702\u003C\u002Fh2>\n\u003Cp>EIP-7702، المُفعّل مع ترقية Pectra لـ Ethereum في مارس 2025، يُقدم نوع معاملة جديداً يسمح لأي حساب ملكية خارجية (EOA) بتعيين \u003Cstrong>مُحدد تفويض\u003C\u002Fstrong> — مؤشر إلى عقد ذكي يتبنى EOA كوده مؤقتاً طوال مدة المعاملة. هذا يعني أن عنوان محفظة MetaMask الحالي يمكنه تنفيذ منطق عقد ذكي تعسفي دون نشر محفظة عقد جديدة أو تغيير عنوانك.\u003C\u002Fp>\n\u003Cp>هذا هو أهم تحسين لتجربة المستخدم في تاريخ Ethereum.\u003C\u002Fp>\n\u003Ch2 id=\"eip-7702-erc-4337\">EIP-7702 مقابل ERC-4337: متى تستخدم أيهما\u003C\u002Fh2>\n\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>الميزة\u003C\u002Fth>\u003Cth>EIP-7702\u003C\u002Fth>\u003Cth>ERC-4337\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\n\u003Ctr>\u003Ctd>المستوى\u003C\u002Ftd>\u003Ctd>البروتوكول (نوع tx جديد)\u003C\u002Ftd>\u003Ctd>التطبيق (عقد ذكي)\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>نوع الحساب\u003C\u002Ftd>\u003Ctd>ترقية EOAs الموجودة\u003C\u002Ftd>\u003Ctd>يتطلب محفظة عقد ذكي جديدة\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>العنوان\u003C\u002Ftd>\u003Ctd>يحتفظ بعنوان EOA الحالي\u003C\u002Ftd>\u003Ctd>عنوان جديد (مضاد للواقع)\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>الاستمرارية\u003C\u002Ftd>\u003Ctd>تفويض لكل معاملة\u003C\u002Ftd>\u003Ctd>عقد ذكي دائم\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>يتطلب Bundler\u003C\u002Ftd>\u003Ctd>لا (تدفق tx قياسي)\u003C\u002Ftd>\u003Ctd>نعم (mempool منفصل)\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>عبء الغاز\u003C\u002Ftd>\u003Ctd>~20,000 غاز للتفويض\u003C\u002Ftd>\u003Ctd>~42,000 غاز لتحقق UserOp\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>المحافظ المدعومة\u003C\u002Ftd>\u003Ctd>MetaMask, Coinbase Wallet, Rainbow\u003C\u002Ftd>\u003Ctd>متخصصة (Safe, ZeroDev, Biconomy)\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>الأفضل لـ\u003C\u002Ftd>\u003Ctd>ترقية المستخدمين الحاليين\u003C\u002Ftd>\u003Ctd>مستخدمون جدد، منطق حساب معقد\u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Ch3>إطار القرار\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>استخدم EIP-7702 عندما:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>لدى مستخدميك محافظ EOA بالفعل\u003C\u002Fli>\n\u003Cli>تحتاج معاملات مجمّعة أو رعاية غاز\u003C\u002Fli>\n\u003Cli>تريد الحد الأدنى من تعقيد التكامل\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>استخدم ERC-4337 عندما:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>تبني محفظة جديدة أو تُدمج مستخدمين جدداً\u003C\u002Fli>\n\u003Cli>تحتاج منطق حساب مستمر\u003C\u002Fli>\n\u003Cli>تحتاج ميزات متقدمة مثل الوحدات أو الإضافات أو الأوصياء\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"\">أمثلة على الكود\u003C\u002Fh2>\n\u003Ch3>المعاملات المجمّعة\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 للاستدعاءات المجمّعة\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>الاستخدام من جانب العميل مع 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>رعاية الغاز\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-solidity\">\u002F\u002F\u002F @title SponsoredExecutor — رعاية الغاز عبر 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>الاسترداد الاجتماعي\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-solidity\">\u002F\u002F\u002F @title RecoveryModule — الاسترداد الاجتماعي عبر 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=\"\">حالة تكامل المحافظ\u003C\u002Fh2>\n\u003Ch3>MetaMask\u003C\u002Fh3>\n\u003Cp>أضافت MetaMask دعم EIP-7702 في الإصدار 12.4 (سبتمبر 2025).\u003C\u002Fp>\n\u003Ch3>Coinbase Wallet\u003C\u002Fh3>\n\u003Cp>Coinbase Wallet هو المتبني الأكثر حماساً، حيث دمج EIP-7702 في ميزة “Smart Wallet” (أُطلقت في نوفمبر 2025):\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>التجميع التلقائي\u003C\u002Fstrong> — المحفظة تُجمّع تلقائياً تسلسلات approve+swap\u003C\u002Fli>\n\u003Cli>\u003Cstrong>رعاية الغاز\u003C\u002Fstrong> — Coinbase ترعى الغاز للمعاملات التي تقل رسومها عن $1\u003C\u002Fli>\n\u003Cli>\u003Cstrong>DeFi بنقرة واحدة\u003C\u002Fstrong> — أهداف تفويض مبنية مسبقاً لعمليات DeFi الشائعة\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Rainbow وRabby وغيرها\u003C\u002Fh3>\n\u003Cp>أضافت Rainbow الدعم في يناير 2026. Rabby تدعم معاملات type-4 لكن بدون واجهة تصور التجميع.\u003C\u002Fp>\n\u003Ch2 id=\"\">دليل الترحيل\u003C\u002Fh2>\n\u003Ch3>الخطوة 1: نشر أهداف التفويض\u003C\u002Fh3>\n\u003Ch3>الخطوة 2: تحديث الواجهة الأمامية\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>الخطوة 3: تنفيذ التدهور الأنيق\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=\"\">اعتبارات الأمان\u003C\u002Fh2>\n\u003Ch3>التحقق من هدف التفويض\u003C\u002Fh3>\n\u003Cp>عقد هدف التفويض له \u003Cstrong>سيطرة كاملة\u003C\u002Fstrong> على أصول EOA أثناء المعاملة.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>التخفيف:\u003C\u002Fstrong> فوّض فقط إلى عقود مُدققة ومُتحقق منها.\u003C\u002Fp>\n\u003Ch3>حماية إعادة التشغيل\u003C\u002Fh3>\n\u003Cp>تتضمن قوائم التفويض EIP-7702 رقم nonce لمنع هجمات إعادة التشغيل.\u003C\u002Fp>\n\u003Ch3>التصيد عبر التفويض\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>التخفيف:\u003C\u002Fstrong> يجب على المحافظ عرض الكود الذي يُفوّض إليه EOA بوضوح.\u003C\u002Fp>\n\u003Ch3>إعادة الدخول في التنفيذ المجمّع\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>تصادم التخزين\u003C\u002Fh3>\n\u003Cp>استخدام EIP-7201 (تخزين مسمى):\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=\"\">الأسئلة الشائعة\u003C\u002Fh2>\n\u003Ch3 id=\"eip-7702\">هل يُغيّر EIP-7702 عنوان محفظتي؟\u003C\u002Fh3>\n\u003Cp>لا. يبقى عنوان EOA كما هو. يمنح EIP-7702 عنوانك مؤقتاً قدرات العقد الذكي لمدة معاملة واحدة.\u003C\u002Fp>\n\u003Ch3 id=\"eip-7702-l2\">هل يمكنني استخدام EIP-7702 على L2؟\u003C\u002Fh3>\n\u003Cp>نعم. جميع L2 الرئيسية (Arbitrum, Base, Optimism, zkSync) تبنت EIP-7702.\u003C\u002Fp>\n\u003Ch3 id=\"\">ماذا يحدث إذا كان هدف التفويض به خطأ؟\u003C\u002Fh3>\n\u003Cp>يقتصر الضرر على معاملة واحدة. لكن ضمن تلك المعاملة، يمتلك الهدف وصولاً كاملاً لأصول EOA.\u003C\u002Fp>\n\u003Ch3 id=\"eip-7702\">هل EIP-7702 متوافق مع محافظ الأجهزة؟\u003C\u002Fh3>\n\u003Cp>نعم. أضافت Ledger الدعم في البرنامج الثابت 2.3.0 (ديسمبر 2025).\u003C\u002Fp>\n\u003Ch3 id=\"eip-7702\">كم من الغاز يوفر EIP-7702؟\u003C\u002Fh3>\n\u003Cp>لتدفق approve+swap نموذجي، يوفر EIP-7702 حوالي \u003Cstrong>40-50%\u003C\u002Fstrong> من الغاز. لعمليات DeFi المعقدة متعددة الخطوات، يمكن أن تصل الوفورات إلى 60-70%.\u003C\u002Fp>\n","ar","b0000000-0000-0000-0000-000000000001",true,"2026-03-28T10:44:44.185251Z","تعلم كيفية تنفيذ المعاملات المجمّعة EIP-7702 ورعاية الغاز والاسترداد الاجتماعي. أمثلة كود ودعم المحافظ ودليل الأمان.","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","بلوكتشين",[36,43,49],{"id":37,"title":38,"slug":39,"excerpt":40,"locale":12,"category_name":41,"published_at":42},"d0000000-0000-0000-0000-000000000686","لماذا Bali تتحول إلى مركز تكنولوجيا التأثير في جنوب شرق آسيا 2026","limadha-bali-tatahawwal-markaz-tiknulujia-attathir-janub-sharq-asia-2026","تحتل Bali المرتبة 16 بين أنظمة الشركات الناشئة في جنوب شرق آسيا. مع تركيز متزايد لبناة Web3 وشركات AI المستدامة الناشئة وشركات تكنولوجيا السفر البيئي، تنحت الجزيرة مكانتها كعاصمة تكنولوجيا التأثير في المنطقة.","الهندسة","2026-03-28T10:44:50.120618Z",{"id":44,"title":45,"slug":46,"excerpt":47,"locale":12,"category_name":41,"published_at":48},"d0000000-0000-0000-0000-000000000685","فسيفساء حماية البيانات في ASEAN: قائمة امتثال للمطورين","fusayfisa-himayat-albayanat-asean-qaimat-imtithal-lilmutawwirin","تمتلك سبع دول في ASEAN الآن قوانين شاملة لحماية البيانات، لكل منها نماذج موافقة ومتطلبات توطين وهياكل عقوبات مختلفة. إليك قائمة امتثال عملية للمطورين الذين يبنون تطبيقات متعددة البلدان.","2026-03-28T10:44:50.114369Z",{"id":50,"title":51,"slug":52,"excerpt":53,"locale":12,"category_name":41,"published_at":54},"d0000000-0000-0000-0000-000000000684","التحول الرقمي في Indonesia بقيمة 29 مليار دولار: فرص لشركات البرمجيات","attahawwul-arraqami-indonesia-29-milyar-dular-furas-sharikat-albarmajiyat","من المتوقع أن يصل سوق خدمات تكنولوجيا المعلومات في Indonesia إلى 29.03 مليار دولار في 2026، ارتفاعاً من 24.37 مليار دولار في 2025. البنية التحتية السحابية والذكاء الاصطناعي والتجارة الإلكترونية ومراكز البيانات تقود أسرع نمو في جنوب شرق آسيا.","2026-03-28T10:44:50.092728Z",{"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"]