اگر نوشتار استخراج را مطالعه کرده باشید، میدانید که ماینرها یا استخراجکنندگان تراکنشهای اعتبارسنجی شده توسط گرهها را در یک بلوک قرار میدهند و هش (یادآوری: هش یک عدد است) آن را بارها و بارها حساب میکنند تا به عدد موردنظر شبکه برسند. این عدد باید کوچکتر از عددی ازپیش تعیینشده باشد.
این موضوع که هش بلوک باید کوچکتر از چه عددی باشد، توسط متغیر سختی تعیین میشود. بر اساس پروتکل شبکههای زنجیرهبلوکی مقدار سختی در ابتدا و برای بلوکهای نخستین بهصورت دستی تعیین میشود و در ادامه سر موعدهای مقرر بهروز میشود. برای مثال، در شبکه بیتکوین سختی، هر ۲۰۱۶ بلوک، تقریبا معادل هر دو هفته، بهروز میشود؛ اما چرا این اتفاق میافتد؟
در پروتکلهای شبکههای زنجیرهبلوکی بهمنظور هماهنگ شدن کل شبکه و بهروز شدن همه گرهها یک زمان میانگین برای فاصله مابین ثبت دو بلوک در نظر گرفته میشود. برای مثال، سختی شبکه بیتکوین طوری تنظیم میشود که بهطور متوسط هر ۱۰ دقیقه یک بلوک ثبت شود. لازم به ذکر است، فرایند استخراج از جنس آزمونوخطا و پیدا شدن بلوک موردنظر کاملا احتمالی است و تنها میتوان در بازههای بلندمدت، زمان میانگین ثبت بلوک را تنظیم کرد. برای مثال ممکن است، دو بلوک به فاصله سی ثانیه ثبت شوند؛ درحالیکه ثبت دو بلوک دیگر سی دقیقه زمان ببرد؛ اما بر پایه احتمالات میانگین میتواند در حدود ۱۰ دقیقه باشد.
همانطور که اشاره شد، سر موعدهای مقرر سختی شبکه بهروز میشود. به این معنی که پس از ثبت چند بلوک (برای مثال، ۲۰۱۶ بلوک در بیتکوین) شبکه با تغییر متغیر سختی تلاش میکند زمان میانگین مابین ثبت دو بلوک را در همان اندازه تعیینشده در پروتکل نگه دارد. با یک مثال از شبکه بیتکوین این موضوع روشن میشود.
فرض کنید، موعد بهروز شدن سختی شبکه است. گرهها به ۲۰۱۶ بلوک قبلی نگاهی میاندازند و متوجه میشوند که زمان میانگین ثبت بلوک کمتر از ۱۰ و مثلا ۹ دقیقه است که به معنی اضافه شدن ماینرهای جدید به شبکه هست. آنها در مییابند که برای اینکه ثبت بلوکها در آینده بهطور میانگین ۱۰ دقیقه طول بکشد، باید کار ماینرها را سختتر کنند. آنها با افزایش درجه سختی بهنوعی تضمین میکنند که در آینده بلوکها هر ۱۰ دقیقه ثبت شوند. برعکس این شرایط، اگر در ۲۰۱۶ بلوک قبلی زمان متوسط ثبت بلوک ۱۱ دقیقه باشد، گرهها سختی را کاهش میدهند.
کاهش و افزایش سختی چیزی بهجز کموزیاد کردن یک عدد نیست. فرض کنید میخواهید با یک کامپیوتر، یک عدد تصادفی تولید کنید. به نظر شما احتمال اینکه این عدد کوچکتر از ۱۰۰ باشد بیشتر است یا کوچکتر از ۵۰؟ قطعا احتمال اینکه کوچکتر از ۱۰۰ باشد بیشتر است. در شبکههای زنجیرهبلوکی و در طی فرایند استخراج، ماینرها بلوکها را در تابع هش قرار میدهند و خروجی که یک عدد بسیار بزرگ است را دریافت میکنند (به دلیل محاسبات بسیار پرتکرار تابع هش و برگشتناپذیر بودن آن، میتوانید خروجی را یک عدد تصادفی بدانید). این عدد اگر از یک عدد معین کوچکتر باشد، بلوک پذیرفته میشود و در غیر این صورت خیر. گرهها با متغیر سختی این عدد معین را تنظیم میکنند؛ هر چه این عدد بزرگتر باشد، احتمال یافتن عددی کوچکتر از آن بیشتر است و بالعکس.
اگر سوالی در ارتباط با موضوعات بررسیشده داشتید، در بخش کامنتها بپرسید.
منبع: ققنوس