للتجريد الحسابي على Ethereum عنوانان أساسيان يجدر حفظهما. يقع EntryPoint v0.6 على العنوان 0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789. أما EntryPoint v0.7، الذي نُشر في أوائل 2024، فيقع على العنوان 0x0000000071727De22E5E9d8BAf0edAc6f37da032. تمر كل معاملة ERC-4337 على الشبكة الرئيسية وArbitrum وOptimism وBase وPolygon ومعظم شبكات EVM الأخرى عبر أحد هذين العقدين المفردين. إذا فهمت وظيفة هذين العقدين والأدوار الخمسة الأخرى المحيطة بهما، فستفهم ERC-4337.
هذا هو الجزء 2 من سلسلتنا عن الحسابات الذكية. تناول الجزء 1 أسباب كون الحسابات المملوكة خارجيًا (EOAs) خيارًا افتراضيًا سيئًا. أما هنا، فسنتعمق في التفاصيل: الأدوار الستة، وبنية UserOperation، وما يحدث فعليًا عند مبادلة رمز من محفظة ذكية، والتغييرات بين v0.6 وv0.7، والجهات الراعية للرسوم، ومجمعات المعاملات البديلة العامة مقابل مشغّلي التجميع الخاصين، والتكاليف الإضافية المتوقعة.
الأدوار الستة في مخطط واحد
تقسم ERC-4337 ما ينفذه EOA في خطوة واحدة إلى ستة أطراف تعمل معًا. ولم يتطلب أي منها انقسامًا صلبًا في Ethereum؛ فالنظام بأكمله يتألف من عقود وبنية تحتية خارج السلسلة.
- المرسِل (الحساب الذكي): محفظة عقدية تحتفظ بأصولك وتنفّذ
validateUserOp. وهيmsg.senderمن منظور أي تطبيق لامركزي تتفاعل معه. ومن أمثلتها: Safe وKernel وBiconomy Nexus وCoinbase Smart Wallet وLight Account من Alchemy. - UserOperation: بنية شبه معاملة (وليست معاملة Ethereum حقيقية) تصف ما يريد المرسِل فعله. يوقّع المستخدمون على UserOps، لا على المعاملات.
- مُجمِّع المعاملات (Bundler): عقدة خارج السلسلة تجمع UserOps من مجمع معاملات، وتحاكي تنفيذها، وتضمّنها في استدعاء
handleOpsواحد، وتدفع رسوم الغاز على L1. ويكسب مُجمِّعو المعاملات الفرق بين ما يعوّضهم به المرسِل (أو الجهة الراعية للرسوم) وما يدفعونه للمُدقِّق. - EntryPoint: عقد مفرد موثوق يمر على الحزمة، ويستدعي
validateUserOpلكل مُرسِل، وينفذ بيانات الاستدعاء، ويتولى المبالغ المستردة وحالات التراجع. يوجد عقد EntryPoint واحد بالضبط لكل إصدار على كل شبكة. - الجهة الراعية للرسوم (Paymaster) (اختيارية): عقد يوافق على دفع رسوم الغاز نيابةً عن المرسِل، إما برعاية الرسوم (مجانًا للمستخدم) أو مقابل رمز ERC-20 مثل USDC.
- المُجمِّع (Aggregator) (اختياري): عقد يتحقق من صحة عدد كبير من UserOps بفحص توقيع واحد، وهو مفيد لمخططات BLS أو براهين zk. ونادرًا ما يُنشر في بيئات الإنتاج حاليًا.
ضع هذه الأدوار في ذهنك. فبقية المقال تدور حول تفاعل هذه الأطراف الستة.
بنية UserOperation
UserOperation حزمة حقول ملائمة لـ JSON-RPC تعبّر، بعد توقيعها، عن النية من دون تثبيتها على L1 بعد. ويتضمن تنسيق v0.7 المنطقي 11 حقلًا:
sender— عنوان الحساب الذكي.nonce— قيمة من 256 بت، تكون الـ192 بت العليا منها مفتاحًا (مسار nonce متوازٍ)، والـ64 بت السفلى تسلسلًا. بهذه الطريقة تدعم ERC-4337 قيم nonce المتوازية، بخلاف EOAs التي تعالج كل شيء بالتتابع.factoryوfactoryData— للنشر الأولي عبر CREATE2؛ وتكون قيمتهما null بعد النشر.callData— الاستدعاء الذي ينبغي للحساب الذكي تنفيذه بعد التحقق.callGasLimitوverificationGasLimitوpreVerificationGas— ثلاث ميزانيات منفصلة للغاز.maxFeePerGasوmaxPriorityFeePerGas— لهما دلالات EIP-1559 نفسها المطبقة على معاملة عادية.paymasterAndData(v0.6)، مقسّم إلىpaymasterوpaymasterVerificationGasLimitوpaymasterPostOpGasLimitوpaymasterData(v0.7).signature— بايتات مبهمة يفسرها الحساب الذكي وفقvalidateUserOpالخاص به.
يختار المستخدم نوع التوقيع الذي تستخدمه المحفظة. يُستخدم ECDSA على secp256k1 كثيرًا، لكن التحقق عبر P-256/passkey، والتوقيعات المتعددة، وحدود الاسترداد الاجتماعي، والموقّعون بمفاتيح الجلسات، كلها تعمل من خلال الواجهة نفسها. وهذه المرونة هي جوهر الفكرة.
من البداية إلى النهاية: ما الذي يحدث عندما يجري حساب ذكي مبادلة USDC مقابل ETH
تابع مبادلة فعلية لترى الأدوار وهي تعمل بالترتيب.
- ينقر المستخدم على «Swap» في واجهة المستخدم UI لمحفظته. تنشئ المحفظة UserOperation:
sender = 0xUserSafeوcallData = swapUSDCforETH(amount)، مستهدفةً Uniswap. - تقدير الغاز. تستدعي المحفظة
eth_estimateUserOperationGasعبر واجهة RPC لمُجمِّع المعاملات. ويحاكي المُجمِّع العملية مقابل EntryPoint، ثم يعيد حدود الغاز الثلاثة. - يوقّع المستخدم. تجزّئ المحفظة UserOp باستخدام عنوان EntryPoint ومعرّف الشبكة (ID)، ثم تطلب من المستخدم التوقيع (بمفتاح مرور أو مفتاح مادي أو غير ذلك) وتُرفق التوقيع.
- الإرسال. تُرسل UserOp الموقعة عبر
eth_sendUserOperationإلى مُجمِّع معاملات واحد أو أكثر. وتدخل مجمع المعاملات البديل، وهو شبكة P2P منفصلة عن مجمع معاملات Ethereum العادي. - محاكاة مُجمِّع المعاملات. يعيد المُجمِّع محاكاة العملية باستخدام
eth_callمقابلsimulateValidation. ويتحقق من قواعد الوصول إلى التخزين في ERC-7562: لا يجوز لـ UserOp الوصول إلا إلى تخزينها الخاص أثناء التحقق، وإلا خاطر المُجمِّع بالتعرض لهجوم إغراق. - التجميع. يضمّ المُجمِّع UserOp هذه إلى ما يصل إلى ~10 عمليات أخرى في استدعاء
handleOps([...userOps], beneficiary)واحد إلى EntryPoint. - التنفيذ على السلسلة. يمر EntryPoint على العمليات: ولكل عملية، يستدعي
validateUserOpلدى المرسِل، ويخصم المبلغ المقدم، ثم ينفذcallData. وتُنفذ مبادلة Uniswap انطلاقًا من الحساب الذكي. - رد المبلغ. يرد EntryPoint رسوم الغاز غير المستخدمة إلى المرسِل (أو الجهة الراعية للرسوم)، ويدفع إلى عنوان المستفيد الخاص بمُجمِّع المعاملات.
إذا فشلت الخطوة 5، يتخلّص مُجمِّع المعاملات من العملية، ويظهر للمستخدم رمز خطأ AAxx. وأكثر الرموز شيوعًا هي AA21 (لم يُدفع المبلغ المقدم)، وAA23 (خطأ في التوقيع)، وAA25 (قيمة nonce غير صالحة)، وAA33 (تراجعت الجهة الراعية للرسوم)، وAA40 (تجاوز حد غاز التحقق). احفظ هذا الجدول؛ فستصادف هذه الرموز.
مقارنة EntryPoint v0.6 وv0.7
أُطلق v0.6 في مارس 2023 على العنوان 0x5FF1…2789. وقد عمل، لكن شابته ثلاث مشكلات متكررة: حقل paymasterAndData واحد يخلط بين ثلاثة أبعاد للغاز، وطريقة initCode غير عملية لتجميع الحقول، ومحاسبة للغاز تحمّل المرسِلين رسومًا زائدة. عالج v0.7 هذه المشكلات الثلاث.
أبرز تغييرات v0.7 التي يجدر معرفتها:
- العنوان:
0x0000000071727De22E5E9d8BAf0edAc6f37da032(لاحظ الأصفار في بدايته؛ فهذا عنوان اختير بالتعدين للحصول على نمط مرغوب، ما يخفض تكلفة الغاز لبيانات الاستدعاء، لأن كل بايت صفري يكلف 4 وحدات غاز مقابل 16 لغير الصفري). - تقسيم حقول الجهة الراعية للرسوم: أصبحت
paymasterوpaymasterVerificationGasLimitوpaymasterPostOpGasLimitوpaymasterDataحقولًا منفصلة. وهذا يسهّل التقدير ويقلل احتمال نسيان ميزانية. - فصل المصنع: الفكرة نفسها؛ أصبح
factoryوfactoryDataحقلين منفصلين بدلًا منinitCodeمجمّع. - غرامة الغاز غير المستخدم: يتحمل المرسِلون رسومًا تعادل 10% من
callGasLimit/paymasterPostOpGasLimitغير المستخدم، ما يثني عن المبالغة الكبيرة في تقدير العمليات. - خطافات التوافق مع EIP-7702: أضاف v0.7 البنية اللازمة لتفويض EOA عادي مؤقتًا إلى تنفيذ حساب ذكي، وهو ما أصبح أساس مسار الترقية إلى EIP-7702 الذي أُطلق ضمن Pectra.
ما زال v0.6 متاحًا ويُستخدم؛ إذ لم تُطلق محافظ كثيرة وحدة متوافقة مع v0.7 إلا بعد مضي وقت طويل من 2024. وتُشغّل معظم الشبكات كلا عقدي EntryPoint بالتوازي لسنوات.
الجهات الراعية للرسوم: من يدفع رسوم الغاز
الجهة الراعية للرسوم عقد يحتفظ بحصّة من ETH لدى EntryPoint ويوافق على تغطية رسوم الغاز لعمليات UserOps المتوافقة مع سياسته. وتسود ثلاثة أنواع:
- جهة راعية للتحقق (برعاية الرسوم). يوقّع خادم خلفي موافقةً خارج السلسلة؛ وتتحقق الجهة الراعية من التوقيع على السلسلة وتدفع الرسوم. تستخدمها التطبيقات التي تريد إتاحة البدء من دون غاز — مثل Coinbase Smart Wallet وFarcaster Frames ومعظم عمليات سك NFT.
- جهة راعية لرسوم ERC-20. يدفع المستخدم بـ USDC أو USDT أو DAI؛ ثم تبدّل الجهة الراعية الرموز إلى ETH في النظام الخلفي (أو تحتفظ بمخزون من ETH). وتشغّل Pimlico وBiconomy وStackup جهات عامة من هذا النوع.
- جهة راعية للرموز مع تصريح. تستخدم تصريح EIP-2612 ليوقّع المستخدم على UserOp وموافقة الرمز بتوقيع واحد.
يُنفَّذ validatePaymasterUserOp الخاص بالجهة الراعية أثناء مرحلة التحقق في EntryPoint. إذا تراجع، فستحصل على AA33. وإذا نفدت حصته، يفرض EntryPoint عليه عقوبة، ويتحمل مُجمِّع المعاملات الخسارة؛ لذلك يحتفظ مُجمِّعو المعاملات بقوائم للجهات الراعية مصنفة حسب السمعة. وتدوّن ERC-7562 قواعد السمعة هذه كي يظل مجمع معاملات المُجمِّع مقاومًا للبريد العشوائي. وتوضح المبادئ الأساسية نفسها سبب انطباق ممارسات الموافقة على التمويل اللامركزي (DeFi) والتوقيعات المتعددة بسهولة على عالم 4337: التهديدات نفسها، لكن بغلاف جديد.
مجمّع المعاملات البديل العام مقابل مُجمِّع المعاملات الخاص
هناك طريقتان لإرسال UserOp إلى البلوكتشين.
مجمّع المعاملات البديل العام: تتبادل مجمّعات المعاملات المتوافقة مع ERC-7562 بيانات UserOps عبر شبكة libp2p. ويمكن لأي شخص يشغّل عقدة Pimlico أو Stackup أو Alchemy أو Etherspot أو Voltaire التقاط معاملتك. هذا النهج لا يتطلب إذنًا ومقاوم للرقابة، لكنه يعرّضك لمخاوف MEV نفسها الموجودة في معاملات Ethereum العادية؛ إذ يمكن لجهات البحث رؤية عمليتك قبل إدراجها.
مجمّع المعاملات الخاص: ترسل eth_sendUserOperation مباشرةً إلى نقطة RPC تابعة لمزوّد واحد. يحاكي المزوّد العملية ويجمعها ويرسلها على نحو خاص (غالبًا عبر Flashbots). هذا أسرع ويوفر الحماية من MEV، لكنه يتطلب منك الوثوق بأن مجمّع المعاملات لن يفرض رقابة على معاملتك أو يسبقها. في عام 2026، تستخدم معظم محافظ المستهلكين مجمّعات معاملات خاصة افتراضيًا.
يشبه هذا الخيار المفاضلة بين مجمّع المعاملات العام وFlashbots Protect للمعاملات العادية. إذا لم تطّلع على دورة حياة المعاملة الأساسية منذ أيام L1، فسيشرح لك ذلك المرجع ما الذي يتغير عندما يتولى مجمّع المعاملات المهمة.
المُجمِّعات والانتشار وتكلفة كل ذلك
المُجمِّعات هي عقود تتحقق من الدفعات عبر فحص توقيع واحد. وحالة الاستخدام الأساسية لها هي BLS: تجمع 50 من UserOps الموقّعة باستخدام BLS، ثم تدمج التوقيعات في فحص اقتران واحد، ما يوفر نحو 95% من الغاز المخصص للتوقيعات. كان الانتشار بطيئًا لأن إنشاء محافظ توقّع باستخدام BLS أمر صعب، ولأن توفير الغاز لا يجدي إلا عند أحجام كبيرة. وحتى منتصف عام 2026، تستخدم المُجمِّعات أقل من 1% من UserOps على الشبكة الرئيسية.
أرقام الانتشار (Q1 2026، وفق bundlebear.com): نحو 380 مليون UserOp تراكميًا عبر جميع الشبكات، وتستحوذ Base وPolygon وArbitrum على الحصة الأكبر. تبلغ حصة الشبكة الرئيسية نحو 6–8%؛ وهي الأصغر من حيث الحجم، لكنها الأكبر من حيث قيمة التحويلات. وتستحوذ Coinbase Smart Wallet وFarcaster وArgent على معظم نشاط المستخدمين الأفراد.
التكلفة الإضافية: تستهلك UserOp على v0.7 نحو 30,000–40,000 وحدة غاز إضافية مقارنةً بمعاملة EOA المكافئة، وذلك بسبب حلقة EntryPoint والتحقق وإدارة الدفعة. على الشبكة الرئيسية عند 20 gwei، لا تتجاوز تكلفة ذلك جزءًا من الدولار لكل عملية. ويضيف نشر الحساب للمرة الأولى عبر factoryData نحو 250,000 وحدة غاز أخرى. أما على شبكات L2، حيث تكون بيانات الاستدعاء هي التكلفة الأكبر، فلا تتجاوز الزيادة نسبة أحادية الرقم. تنقل UserOps المدعومة الرسوم إلى التطبيق اللامركزي، ولهذا ترى معاملات مجانية في تطبيقات المستهلكين، لا في تطبيقات التمويل اللامركزي (DeFi) المتخصصة. يشرح مرجع رسوم المعاملات كيف تُحتسب هذه الزيادة ضمن أسواق الرسوم المختلفة.
الخلاصة (TL;DR): يتكون ERC-4337 من ستة أدوار (المرسل وUserOp ومجمّع المعاملات وEntryPoint والراعي والمُجمِّع)، وبنية بيانات واحدة، وعنوانَي EntryPoint ينبغي أن تحفظهما، ونحو 30–40 ألف وحدة غاز إضافية مقابل دعم أنظمة توقيع اعتباطية ورعاية رسوم الغاز وتجميع العمليات وأرقام تسلسلية متوازية. ينتقل الجزء 3 من هذه السلسلة إلى EIP-7702، المسار الموازي ضمن Pectra الذي يتيح لحساب EOA الحالي الاستفادة من الآليات نفسها دون تغيير عنوانه.



