يغيّر Difficulty Adjustment صعوبة العثور على كتلة تلقائيًا. عندما يجد المعدّنون الكتل بسرعة أكبر من اللازم، تجعل القواعد البحث أصعب؛ وعندما يصبح بطيئًا، تجعله أسهل. يساعد ذلك Bitcoin على الحفاظ على وتيرة تقريبية رغم التغيرات الكبيرة في القدرة الحاسوبية. وتتحقق كل عقدة تفحص القواعد كاملةً من التعديل بالطريقة نفسها، من دون مسؤول يقرر قيمته.
تخيّل انضمام أجهزة كثيرة جديدة إلى التعدين. ستجرّب مجتمعةً حسابات أكثر كل ثانية، فتجد الكتل أسرع في المتوسط إذا بقيت الصعوبة كما هي. والكتلة مجموعة من المعاملات المؤكدة، وقد يصاحب إنشاؤها إصدار بيتكوين جديد. من دون التعديل، كانت الأجهزة الأقوى ستسرّع الإصدار أيضًا. يحسب المعدّنون مرارًا قيمة تجزئة (hash)، أي بصمة عددية لترويسة الكتلة، وتنجح المحاولة عندما تكون النتيجة صغيرة بما يكفي. كلما أصبح الحد أشد، انخفض احتمال نجاح المحاولة الواحدة وزاد العمل المطلوب في المتوسط. [3]
في شبكة Bitcoin الرئيسية، التي تسمى mainnet، يُعاد حساب الصعوبة كل 2 016 كتلة. بمتوسط عشر دقائق للكتلة، يعادل ذلك نحو أسبوعين. لكنه ليس منبّهًا زمنيًا: الوصول إلى الرقم التسلسلي المطلوب للكتلة، أو ارتفاعها، هو ما يطلق التعديل. إذا أوقف كثير من المعدّنين أجهزتهم فجأة، فقد يستغرق العثور على الكتل المتبقية وقتًا أطول. تُكمل الشبكة الفترة أولًا بالصعوبة القديمة؛ ولا يوجد في mainnet خفض طارئ فوري. [1] [2]
لنفترض أن الزمن المستخدم في الحساب يساوي 10 أيام بدلًا من الزمن المستهدف، وهو 14 يومًا. ستصبح الفترة التالية أصعب: ترتفع الصعوبة تقريبًا بنسبة 14 إلى 10، أي بزيادة 40%. وإذا استغرقت الفترة المقاسة 28 يومًا، تنخفض الصعوبة إلى النصف تقريبًا. هذان مثالان مبسطان يهملان التقريب العددي ويفترضان عدم بلوغ الحد الأدنى المسموح للصعوبة. إذا بقيت القدرة الحاسوبية ثابتة بعد ذلك، يقرّب الإعداد الجديد الزمن المتوقع بين الكتل من عشر دقائق مجددًا. [1] [2]
عشر دقائق متوسط طويل الأجل، وليست مدة انتظار مضمونة. قد تصل كتلتان متقاربتين، وقد يطول انتظار كتلة أخرى كثيرًا. كذلك، ليس مؤكدًا أن تدخل معاملتك الكتلة التالية؛ فرسومها والمعاملات الأخرى المنتظرة تؤثر في ذلك. التعديل لا يتحكم في سعر BTC ولا يضمن ربح المعدّنين. ولا يغيّر كمية البيتكوين الجديد المسموح بها في الكتلة الواحدة. خفض هذه الكمية دوريًا إلى النصف، المسمى Halving، يتبع قاعدة أخرى. [2] [3]
تستخدم القواعد حدًا عدديًا يسمى target. كلما صغر target، أصبح التعدين أصعب؛ أما الرقم الذي نسميه الصعوبة فيعبّر عن العلاقة بالعكس. يُحسب target الجديد بضرب target القديم في الزمن المقاس وقسمة الناتج على الزمن المستهدف البالغ 1 209 600 ثانية. قبل الحساب، يُحصر الزمن المقاس بين ربع الزمن المستهدف وأربعة أمثاله، لتقييد حجم التعديل الواحد. ولا يجوز أن يتجاوز target أعلى قيمة مسموحة، وهي powLimit. ويُحفظ في الترويسة بصيغة nBits المضغوطة ذات الدقة المحدودة؛ لهذا كانت النسب في الأمثلة تقريبية. [1] [2]
يقارن Bitcoin Core الطابع الزمني في ترويسة آخر كتلة من الفترة المكتملة بالطابع الزمني لأول كتلة منها. وبين 2 016 كتلة يوجد 2 015 فاصلًا زمنيًا؛ وتحافظ القواعد على هذه الخاصية التاريخية. يكتب المعدّنون الطوابع الزمنية ضمن حدود قواعد الشبكة. وهي ليست قياسات دقيقة للحظة العثور على الكتلة، وليست Median Time Past، وهي قيمة زمنية أخرى تُحسب من كتل سابقة. لا تحتاج إلى هذا التفصيل لفهم هدف التعديل، لكنه مهم لإعادة الحساب بدقة. [1]
تعرض المواقع كثيرًا تقديرًا للتغير القادم في الصعوبة. ما دامت الفترة لم تنتهِ، تستمر الكتل في الوصول وقد يتغير التقدير. يمكنك التحقق من تعديل مكتمل باستخدام عقدتك: قارن طوابع الكتل عند حدود الفترة، وحوّل nBits إلى قيم target عددية، ثم أعد الحساب مع الحدود والتقريب. كل Full Node، أي عقدة تتحقق بنفسها من قواعد Bitcoin، تفحص target المطلوب عند قبول كتلة. هذا الوصف يخص mainnet؛ وقد تعمل شبكات الاختبار بقواعد مختلفة. [1] [2]
للحصول على صورة أوضح، اقرأ هذا المدخل مع Proof of Work, التعدين, Timechain / Blockchain, Block Subsidy. تشير إلى هذا المدخل أيضًا Timechain / Blockchain, Proof of Work, التعدين, Halving.