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