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