سختی شبکه (Difficulty) یا سختی استخراج متغیری است که هدفش ثابت نگه داشتن میانگین زمان ایجاد یک بلاک ، در شبکه است.
در ارزهای دیجیتالی که قابلیت استخراج دارند و یا به اصطلاح سازوکار آنها اثبات کار (PoW) است،باید این قابلیت را داشته باشند که وقتی تعداد ماینرها زیاد یا کم می شود انعطاف پذیر عمل کرده و سازگار شوند.
قبل از ورود به بحث اصلی باید به صورت خلاصه به مفاهیم اولیه ارزهای دیجیتال قابل استخراج اشاره ای داشته باشیم.
در واقع یکی از دلایل محبوبیت ارزهای دیجیتال ، استفاده از بلاک چین های عمومی است.
این نوع بلاک چینها شفاف بوده و هر شخصی بدون نیاز به اجازه گرفتن از مرکز یا نهادی میتواند در این شبکهها فعالیت کند و یا از آنها خارج شود.
برای مثال شما برای وارد شدن به شبکه بیت کوین، اتریوم و لایت کوین احتیاج نیست که از شخص یا گروهی اجازه بگیرید.
تنها کاری که مجبور به انجام آن هستید ، دانلود کل بلاک چین این شبکهها و اجرای یک فول نود است.
فول نود چیست؟
فول نودها دستگاههایی هستند که کل تاریخچه تراکنش های شبکه را در حافظه خود نگهداری کرده و به طور مستقیم وظیفه اعتبارسنجی تراکنشها را بر عهده دارند.
استخراج یا ماینینگ
عملیات استخراج یا همان ماینینگ هم به صورت آزادانه توسط هر شخص یا گروهی در شبکه میتواند انجام شود.
روند کار ارزهای دیجیتالی برای استخراج یا ماین ، حل کردن یک مسئله پیچیده به نام «هش» در هر بلاک است وقتی پاسخ آن را پیدا کنند تراکنش هایی که در آن بلاک قرار گرفته است، تایید می شود.
ماینرها همیشه برای پیدا کردن هش هر بلاک، با حدس و خطا جلو می روند .
هش همان مسئله ریاضی پیچیدهای که قسمت اساسی تمام ارزهای دیجیتال است، در واقع حاصل تابعی به نام تابع هش (Hash Function) .
این تابع یک طرفه در ارزهای دیجیتال ، داده یا ورودی ها که متشکل از تراکنش های افراد مختلف است را دریافت کرده و در خروجی رشته عباراتی با طول و حجم ثابت می دهد .
یکی از جالب ترین ویژگی های توابع هش این است که رسیدن به داده اولیه از طریق داشتن خروجی تقریبا غیر ممکن می باشد .
سختی استخراج چیست؟
مفاهیم کلی سختی شبکه در تمامی ارزهای دیجیتال یکسان است.
بنابراین برای توضیح سختی شبکه یکی از ارزهای دیجیتال قابل استخراج مانند بیت کوین را تصور کنید .
سختی شبکه بیت کوین هر دو هفته یک بار تغییر کرده و تا زمان پیدا شدن هر بلاک به طور میانگین ۱۰ دقیقه باقی می ماند.
اگر سختی شبکه وجود نداشته باشد ، با افزایش ورود ماینر به شبکه حدس هایی که درباره هش هر بلاک زده می شود نیز افزایش پیدا میکند.
چون تعداد حدس های زده شده افزایش یافته ، احتمال پیدا شدن هر بلاک در زمانی کمتر از ۱۰ دقیقه هم بیشتر می شود.
با این حساب عامل کنترل کننده ای در شبکه وجود نخواهد داشت تا جلوی ماینرها را از ایجاد بلاک در هر دقیقه، ثانیه و یا حتی کمتر از یک ثانیه بگیرد
و آن ها را ملزم به ایجاد بلاک در زمان حدودی ۱۰ دقیقه کند.
گفتیم که سختی شبکه بیت کوین هر دو هفته یک بار (یعنی بعد از ساخته شدن هر ۲۰۱۶ بلاک)، عوض می شود.
اگر ۱۰ دقیقه زمان برای حل هر بلاک را در نظر بگیریم ، زمان مورد نیاز برای حل این تعداد بلاک، ۲۰,۱۶۰ دقیقه خواهد بود.
اما اگر تعداد ماینرها در این مدت دو هفته ای افزایش پیدا کند و این تعداد بلاک زودتر از موعد مشخص شده و یا دیرتر حل شوند (برای مثال در ۱۸,۰۰۰ دقیقه)، در این صورت سختی شبکه باید خود را با تعداد ماینرها تطبیق دهد .
در صورتی که زمان حل شدن مجموع ۲۰۱۶ بلاک را بر مقدار ایدهآل ۱۰ دقیقه به ازای هر بلاک تقسیم کنیم ، با یک تناسب بندی راحت میتوان دریافت که سختی شبکه باید نسبت به حالت قبلی فرضاً ۲۰۱۶۰/۱۸۰۰۰ یا ۱.۱۲ برابر شود .
زمانی که نسبت به دست آمده بیشتر از ۱ باشد، ماینرها با سرعت بیشتری نسبت به حد معمول بلاکها را حل کردهاند و در صورتی که این عدد کمتر از یک باشد، قدرت استخراجکنندگان نسبت به قبل کاهش داشته است.
ماینر ها تلاش میکنند تا با تولید اعداد تصادفی ، به هش هایی کمتر از هش هدف (Target Hash) دست یابند.
با سخت تر شدن استخراج، هش هدف نیز کمتر و کمتر میشود.
البته این کار با زیاد کردن صفرهای بیشتر به ابتدای هش هدف انجام میشود.
به همین خاطر هم نسبت به بلاک های چند سال قبل ، هشِ بلاک های جدیدتر در شبکه بیت کوین، صفرهای بیشتری دارند.
مثال سختی شبکه
برای نمونه به چگونگی محاسبه هش بلاک شماره ۵۷۸۵۰۰ بیت کوین نگاهی بیاندازیم:
هش معتبری که برای بلاک به دست آمده ، در بلاک چین ذخیره میشود.
برای بدست آوردن هش هدف ، باید بیشترین هش ممکن (نقطه بالایی نمودار) را به سختی شبکه تقسیم کنیم.
سختی شبکه از سایت bitcoinwisdom گرفته شده است.
همچنین به حداکثر هش ممکن که توسط دستگاههایی با الگوریتم SHA-256 کار میکنند، در بیت کوین ویکی اشاره شده است.
نکته ای که وجود دارد این است که اعداد ارائه شده در قالب هگزادسیمال هستند و باید آنها را به مبنای ۱۰ تبدیل کرد.
هش ریت بلاک ۵۷۸,۵۰۰ را اگر در یک تبدیل گر آنلاین هگزادسیمال به مبنای ۱۰ ببریم ، مشاهده می کنیم که عدد به دست آمده کوچکتر از هش هدف خواهد بود .