الانتقال إلى المحتوى

نطاقات Nonce في الأصول المشفرة

دليل عملي لأرقام Nonce الخاصة بحسابات إيثريوم، وأرقام منع إعادة التشغيل على مستوى التطبيقات، ومسارات المفتاح والتسلسل في ERC-4337، وأرقام البحث في رؤوس كتل إثبات العمل.

آخر تحديث

لأغراض تعليمية فقط؛ لا يشكل ذلك نصيحة استثمارية أو توصية استثمارية. قد تؤدي الاستثمارات إلى خسائر.

الإجابة المباشرة

Nonce قيمة تستمد معناها من نطاق محدد في البروتوكول. ولا تعني دائمًا رقمًا عشوائيًا أو قيمة عامة «تستخدم مرة واحدة». في إيثريوم، يرتب رقم Nonce في حالة الحساب المملوك خارجيًا معاملات ذلك المرسل ويتحقق من صلاحيتها. ويمكن للعقد الاحتفاظ في التخزين بأرقام Nonce مستقلة خاصة بالتطبيق للتصاريح أو التعليمات الموقعة. كما يمكن للحسابات الذكية وفق ERC-4337 استخدام رقم Nonce منظم لعملية UserOperation بمسارات متوازية للمفتاح والتسلسل. أما في إثبات العمل في بيتكوين، فرقم Nonce في رأس الكتلة هو حقل بحث محدود يستخدم عند تجربة التجزئات المرشحة.

هذه القيم غير قابلة للتبادل. فرقم Nonce لحساب إيثريوم لا يحمي توقيع بيانات منظمة اعتباطيًا ما لم يتحقق التطبيق من نطاقه وحقل منع إعادة التشغيل الخاص به. ورقم Nonce لرأس كتلة PoW لا يرتب معاملات الحسابات. والرقم نفسه إذا استخدمه مرسلون أو عقود أو سلاسل أو مسارات مختلفة يصف حالات مختلفة.

آلية العمل

  1. حدد النطاق قبل قراءة الرقم: معاملة EOA، أو حالة حساب عقد، أو تخزين تطبيق، أو UserOperation وفق ERC-4337، أو رأس كتلة PoW محدد. ثبّت معرف السلسلة والتفرع وإصدار البروتوكول، والحساب أو المالك، وعقد التحقق والنطاق، وEntryPoint، أو تنسيق الرأس بحسب الحالة.
  2. اقرأ الحالة المرجعية عند وسم كتلة صريح. افصل رقم Nonce المرجعي لحساب EOA عن العدد المعلق لدى مزود الخدمة، وعن قيمة nonces(owner) في تخزين التطبيق، وعن مفتاح ERC-4337 وتسلسله، وعن عداد البحث المحلي في الرأس لدى المعدّن. اتفاق خدمات RPC مستقلة لا يغني عن التحقق من الإيصال والحالة المرجعيين.
  3. أنشئ سلسلة نسب التوقيع. سجل المرسل أو المالك، والسلسلة والنطاق، ورقم Nonce، والحمولة، والموعد النهائي، وعقد التحقق، وتجزئة المعاملة أو الرسالة، وكل عملية استبدال. في معاملات إيثريوم، تكمل قواعد نطاق السلسلة مثل EIP-155 رقم Nonce للحساب؛ ولا يوفر رقم Nonce وحده حماية كاملة من إعادة التشغيل عبر السلاسل.
  4. خصص الرقم داخل المسار الصحيح. نسق بين موقعي EOA المتزامنين كي يخصص كل تسلسل مرجعي مرة واحدة؛ واحتفظ بالفجوات وسلسلة استبدالات الرقم نفسه. وبالنسبة إلى تطبيق أو حساب ذكي، اتبع قواعد العقد الخاصة بالفحص والزيادة الذريين والمسارات بدل افتراض عداد عام واحد.
  5. أرسل وفق قواعد القبول الصحيحة. سياسات التعليق والاستبدال لدى عميل التنفيذ محلية؛ ويتحقق مجمعو ERC-4337 من كائنات UserOperation وفق قواعد EntryPoint والحساب؛ وقد يرحل توقيع EIP-712 أو تصريح داخل معاملة شخص آخر. ولا يثبت أي من مسارات القبول المحلية هذه الإدراج المرجعي.
  6. تتبع النتيجة الكاملة. ميز بين المرفوض والمعلق والموضوع في قائمة الانتظار والمستبدل والمدرج بنجاح والمدرج مع status = 0 والمزال بسبب إعادة التنظيم والنهائي. تزيد معاملة إيثريوم المدرجة رقم Nonce لحساب المرسل حتى إذا ارتد تنفيذ EVM؛ أما تحديث رقم Nonce في تخزين التطبيق داخل الاستدعاء المرتد فيتراجع.
  7. طابق السجلات قبل إعادة المحاولة. تحقق من الإيصال المرجعي وتجزئة الكتلة ورقم Nonce للمرسل وتخزين التطبيق وحدث ERC-4337 أو إيصالها والنهائية. وفي PoW تحقق من الرأس الكامل والهدف لا من رقم Nonce وحده؛ وإذا استنفد حقل Nonce المحدود، يغير المعدنون بيانات أخرى تؤثر في الرأس لإنشاء مساحة بحث جديدة.

أمثلة محلولة

  • الارتداد المدرج يستهلك رقم Nonce لحساب EOA. رقم Nonce المرجعي للمرسل هو 12. أدرجت معاملة رقمها 12 مع status = 0 واستهلكت 50,000 وحدة غاز بسعر 30 gwei، فبلغت تكلفتها 50,000 * 30 gwei = 0.0015 ETH. تتراجع تغييرات العقد، لكن رقم Nonce المرجعي للمرسل يصبح 13. وإذا أزالت إعادة تنظيم تلك الكتلة، فقد يعود الرقم إلى 12؛ وعلى المحفظة إعادة فحص سلسلة المعاملة كاملة.
  • رقما Nonce للتطبيق والمرحل منفصلان. رقم Nonce لحساب EOA الخاص بالمالك هو 18؛ ويبلغ nonces(owner) = 7 في رمز ERC-2612؛ ورقم Nonce لحساب EOA الخاص بالمرحل هو 42. يستهلك التصريح الناجح رقم التطبيق 7 فيصبح 8، بينما يرفع الإدراج رقم المرحل إلى 43 ويبقي رقم حساب المالك عند 18. وإذا ارتد الاستدعاء كله، يظل رقم المرحل 43، لكن تحديث تخزين الرمز يعود إلى 7.
  • مسارات ERC-4337. وفق تعبير الشرح المعبأ nonce = (key << 64) | sequence، ينتج عن المفتاح 5 والتسلسل 9 القيمة 5 * 2^64 + 9 = 92,233,720,368,547,758,089، وينتج عن التسلسل 10 القيمة 92,233,720,368,547,758,090. أما المفتاح المستقل 6 والتسلسل 0 فينتجان 110,680,464,442,257,309,696. ويظل الاستخدام المتوازي خاضعًا لمنطق تحقق الحساب الذكي ومنفصلًا عن رقم معاملة EOA الخاص بالمجمع.
  • رقم البحث في PoW. يبلغ رقم Nonce في رأس بيتكوين 32 bits، ولذلك يتيح 2^32 = 4,294,967,296 قيمة رقمية مرشحة. وبمعدل افتراضي 100 TH/s يستغرق مسح هذه المساحة 4,294,967,296 / 100,000,000,000,000 = 0.00004294967296 seconds = 42.94967296 microseconds. يغير المعدنون extraNonce في معاملة coinbase أو الوقت أو مجموعة المعاملات لتغيير جذر Merkle والحصول على رؤوس جديدة؛ فهذا الحقل ليس حالة منع إعادة تشغيل للحساب.

المخاطر

  • الخلط بين نطاقات Nonce الخاصة بـ EOA والعقد والتطبيق وERC-4337 وPoW.
  • قراءة رقم Nonce من سلسلة أو تفرع أو عقد أو EntryPoint غير صحيح.
  • الاعتماد على استجابة RPC قديمة أو متعارضة أو خبيثة.
  • تخصيص موقّعين متزامنين رقم Nonce نفسه لمعاملات EOA.
  • تسبب فجوة في أرقام Nonce في حجب معاملات محلية لاحقة.
  • اعتبار رقم Nonce المعلق لدى مزود الخدمة حالة مرجعية.
  • نسيان أن الارتداد المدرج يستهلك رقم Nonce لحساب EOA والغاز.
  • عدم استعادة رقم Nonce وسلسلة المعاملات المرشحة بعد إعادة التنظيم.
  • عدم استيفاء استبدال بالرقم نفسه لسياسة رسوم العقدة المستهدفة.
  • افتراض أن الاستبدال حذف المعاملة الموقعة القديمة عالميًا.
  • ربط أرقام Nonce المتساوية بين مرسلين أو نطاقات مختلفة.
  • إغفال معرف السلسلة أو فاصل نطاق مطلوب للتوقيع.
  • عدم فحص رقم Nonce للتطبيق وزيادته ذريًا.
  • استخدام مالك أو موعد نهائي أو فاصل نطاق أو عقد رمز غير صحيح في ERC-2612.
  • إعادة تشغيل توقيع تطبيق عبر سلسلة أو عقد أو إصدار آخر.
  • تفسير رقم حالة حساب العقد على أنه عداد عام للاستدعاءات.
  • تعبئة مفتاح Nonce أو عرض التسلسل خطأ في ERC-4337.
  • الخلط بين رقم EOA للمجمع ورقم UserOperation للحساب الذكي.
  • تغيير ترقيات الوكيل أو تصادمات التخزين لسلوك رقم Nonce في التطبيق.
  • اعتبار رقم بحث PoW المحدود تفويضًا أو حالة منع إعادة تشغيل أو إثباتًا قائمًا بذاته.

مفاهيم خاطئة شائعة

  • كل حقل يسمى Nonce له المعنى نفسه ويستخدم مرة واحدة على مستوى العالم.
  • رقم Nonce الأكبر يجعل المعاملة أكثر أمانًا أو سرعة أو نهائية.
  • معاملة إيثريوم المرتدة لا تستهلك رقم Nonce لمرسلها.
  • رقم Nonce وحده يمنع كل إعادة تشغيل عبر السلاسل والعقود والرسائل المنظمة.
  • لكل حساب ذكي وفق ERC-4337 عداد خطي واحد مطابق لرقم Nonce لمعاملات EOA.

مواضيع ذات صلة

المصادر

التنقل

ابحث في الويكي...