ما هو النونس (Nonce)؟
نونس، وهو دمج لكلمتي "رقم يُستخدم مرة واحدة فقط"، هو رقم يستخدمه برنامج تعدين البيتكوين. يتم تضمينه في رأس الكتلة، ثم يتم تجزئة تلك المعلومات. إذا كان الرقم السداسي العشري الناتج يساوي أو يقل عن هدف صعوبة الشبكة، تتم إضافة كتلة المعدّن إلى سلسلة الكتل. يتم فتح كتلة أخرى، وتبدأ العملية من جديد.
النقاط الرئيسية
- النونس هو قيمة رقمية تُستخدم في عملية التجربة والخطأ لإضافة كتلة إلى سلسلة الكتل (blockchain).
- يتم زيادة الـ nonce بقيمة واحدة مع كل محاولة تُجرى.
- العثور على التركيبة الصحيحة من الـ nonce والقيم الأخرى في الكتلة يستهلك قوة حسابية كبيرة.
- النونس هو واحد من القيم القليلة التي يمكن تعديلها لتوليد الهاشات لعملية التعدين التنافسية.
فهم الـ Nonce
النونس في البيتكوين هو رقم مكون من 32 بت (أو 4 بايت) يستخدمه المعدّنون لمحاولة توليد تجزئة صالحة لإنتاج كتلة جديدة في البلوكشين الخاص بالبيتكوين. النونس هو أحد الحقول المدرجة في رأس الكتلة، والذي يتضمن أيضًا:
- إصدار البرنامج
- تجزئة الكتلة السابقة
- timestamp طابع زمني
- الهدف من مستوى الصعوبة
- الجذر ميركل
على شبكة البيتكوين، يتنافس المشاركون المعروفون باسم المعدّنين لتوليد تجزئة تكون أقل من أو تساوي تجزئة الهدف للشبكة، وذلك من خلال تغيير الـ nonce بشكل متكرر بعد كل محاولة غير ناجحة.
يشير التشفير إلى عملية تطبيق دالة تجزئة تشفيرية على المعلومات. دالة التجزئة التشفيرية هي عملية رياضية تأخذ بيانات الكتلة وتشفّرها عن طريق تحويلها إلى قيمة فريدة، وهي ناتج ذو طول ثابت من الأحرف السداسية العشرية.
هذه القيمة التجزئة تعمل كبصمة تشفيرية للكتلة، مما يضمن بقاء محتويات الكتلة دون تغيير. الـ nonce هو المتغير الوحيد في رأس الكتلة الذي يمكن لعامل التعدين تعديله. من خلال تغيير الـ nonce، يمكن لعامل التعدين تغيير تجزئة الكتلة وحساب حلول مختلفة ممكنة.
على سبيل المثال، هذا هو الفقرة السابقة بعد تمريرها عبر خوارزمية التجزئة SHA-256:
acd691b23cc47b03addf7329b0467c6190e758ee763d7d648af75b5c5ae73e3a
بإضافة قيمة صفر (الـ nonce) في نهاية الفقرة، تحصل على قيمة سداسية عشرية مختلفة:
f4be24818264fdb8d120f7fe04b8b8f8d4359bc7b1a112412fa968aab7acb782
إذا قمت بتغيير ذلك الصفر إلى واحد، ستحصل على ما يلي:
9e3f30005b29927043ecfcec9edf815493326fe2060015fd56ed3213564c7200
هذه هي الطريقة التي يُستخدم بها الـ nonce في برمجة تعدين البيتكوين. يتم زيادة قيمة الـ nonce بمقدار واحد مع كل محاولة حتى يتم الوصول إلى قيمة معينة.
أول مُعدّن يجد تجزئة صالحة تحت هدف صعوبة الشبكة يُمنح مكافأة الكتلة. يتم بث الكتلة الخاصة بهم إلى الشبكة، تُضاف إلى سلسلة الكتل، وتبدأ العملية من جديد.
إكسترا نونس (Extra Nonce) والطابع الزمني (Time Stamp)
ستجد في مستكشف الكتل أن الأرقام العشوائية (nonces) عادةً ما تصل فقط إلى المليارات. على سبيل المثال، كان الرقم العشوائي للكتلة 841,948 هو 1,614,498,317. وكانت الكتلة 841,949 تحتوي على رقم عشوائي قدره 4,218,083,700. يمكن لجهاز تعدين حديث أن يولد العديد من التجزئات أكثر من هذا في أقل من ثانية واحدة.
بالإضافة إلى ذلك، فإن الـ nonce محدود بـ 32 بت (4 بايت)، لذا يمكن أن يصل فقط إلى أكثر من 4.29 مليار بقليل. يجب أن يتم تدويره ليكون مفيدًا لأن عملية التجزئة سريعة جدًا. لذلك، تم إنشاء طريقة إضافية بعد أن بدأت أجهزة تعدين Bitcoin ASIC في اختراق سلسلة الكتل. تم إنشاء رقم آخر، يسمى الـ extra nonce، بشكل عشوائي ويستخدم في حقل بيانات coinbase. يتم إضافة هذه القيمة إلى مساحة معاملة coinbase، مما يغير جذر Merkle.
الجذر ميركل هو جزء من رأس الكتلة، لذا يتغير تجزئة رأس الكتلة. يتم التلاعب بكل من الـ extra nonce والـ nonce لمحاولة العثور على الحل. إذا لم يتم العثور على حل باستخدام أي منهما، يسمح برنامج التعدين للمنقبين بتعديل الطابع الزمني. تتيح هذه القيم الثلاث مجتمعةً للبلوكشين الحفاظ على هدفها في تعدين كتلة واحدة كل حوالي 10 دقائق.
ما معنى العبارة "for the nonce"؟
"Nonce" يجمع بين العبارة "رقم يُستخدم مرة واحدة." يُستخدم من قبل سلسلة الكتل الخاصة بالبيتكوين للمساعدة في توليد قيمة مُشفرة عند تعدين كتلة.
ما هو مفهوم الـ Nonce؟
الـ nonce، في مصطلحات البلوكشين، هو رقم يُستخدم مرة واحدة. فيما يتعلق باستخدامه على البلوكشين، هو رقم يزداد بشكل متسلسل في كل محاولة لتوليد تجزئة تلبي معايير الصعوبة الخاصة بالشبكة.
ما هو مثال على الـ Nonce؟
أفضل مثال على الـ nonce هو الـ nonce المستخدم لتعدين كتلة. الـ nonce المستخدم في الكتلة 841,954 كان 3,983,795,221. هذا لا يعني أن الأمر استغرق من المُعدّن 3.98 تريليون محاولة فقط—من المحتمل أنه تم تكراره عدة آلاف من المرات وتم استخدامه بالتزامن مع المتغير الإضافي nonce وإدخالات الطابع الزمني. كرقم 32 بت، يمكن للـ nonce أن يزيد فقط إلى ما يزيد قليلاً عن 4.29 مليار.
الخلاصة
في تعدين البيتكوين، يتنافس المعدّنون للعثور على رقم عشوائي (nonce) يفي بمعايير صعوبة الشبكة. يتم إرسال المعلومات في رأس الكتلة عبر خوارزمية تجزئة، مما ينتج عنه قيمة يجب أن تكون أقل من أو تساوي هدف صعوبة الشبكة.
في كل محاولة لتحقيق الهدف، يتم زيادة الـ nonce بمقدار واحد. إذا تجاوز الحد الأقصى لـ 32 بت، يتم إعادة تعيينه، ويتم استخدام الـ extra nonce والطابع الزمني بالتزامن معه حتى ينجح أحد المعدّنين.