بیت کوین خبرها

توضیح سختیِ شبکه (دیفیکالتی) بیت کوین

difficulty
نوشته شده توسط kazem

فرآیند سختی شبکه و کارکرد آن در شبکه بیت کوین

یک نگاه به عکس زیر همه چیز را نشان می‌دهد که در ادامه توضیح بیشتر داده خواهد شد.

سختی شبکه مقدار زمانی‌ست که یک ماینر بتواند یک بلاک را استخراج کند و بلاک بعدی را برای فرآیند استخراج استارت بزند

برای این کار یک سختی در نظر گرفته میشه که ساخت این بلاک از یک زمانی بیشتر یا کمتر نشود، این سختی برای اینکه در همان بازه زمانی تعریف شده همیشه ثابت بماند هر ۲‌هفته یک‌بار تنظیم می‌شود، به‌طوری که ساخت یک بلاک را در بازه ثابت ۱۰ دقیقه سعی دارد که تنظیم نماید. بنابراین تا الان متوجه شدیم که یک مدت زمان بین ساخت ۲‌بلاک(در بیت‌کوین) داریم و آن مدت زمان ۱۰‌دقیقه هست که با سختی شبکه تنظیم می‌شود.

چرا سختی شبکه مهم است؟

سختی شبکه برای این مهم است که تضمین می‌کند در هر زمان که شبکه استخراج کنندگان چه زیاد شوند چه کم شوند توجیح زمانی که بین ساخت هر ۲‌بلاک باشد به میزان ۱۰ دقیقه انجام بگیرد، یعنی هرچقدر تعداد ماینرها زیاد و کم شوند سختی شبکه به تناسب آن طوری خودش را تنظیم کند که نهایتا به‌طور میانگین تولید هر بلاک ۱۰‌دقیقه زمان ببرد.
فرض کنید اگر این سختی ثابت باشد، با اضافه شدن ماینرها میزان اضافه شدن هر بلاک کمتر می‌شود.

چه زمانی سختی شبکه تغییر می‌کند؟

سختی شبکه هر ۲۰۱۶ بلاک تغییر می‌کند، که همان ۲ هفته یکبار است، در واقع ۲۰۱۶ بلاک ۲۰۱۶ تا ۱۰ دقیقه زمان باید صرف بشود که بعد از آن تغییر سختی شبکه انجام بگیرد، اما یک نکته هم وجود دارد، اینکه اینجا ۱۰ دقیقه زمانِ ثابتی نیست، یعنی به طور میانگین ۱۰ دقیقه می‌باشد
به هر حال برای محاسبه نیاز است که ۲۰۱۶ رو ضرب در ۱۰(دقیقه) کنیم، حالا اگر ماینرها به نحوی استخراج کنند که میانگین ۹ دقیقه بشود، مدت زمان تغییر سختی شبکه تغییر می‌کند و ۲۰۱۶ ضرب در ۹ (دقیقه) می‌شود.

وقتی سختی شبکه کمتر از ۱۰ دقیقه باشد زمان ماینِ هر بلاک در ۱۰ دقیقه و در وسعت ۲۰۱۶ بلاک، بیشتر از ۱ میشه، به این معنی که در هر ۱۰ دقیقه یک رابطه ۱٫۱ به وجود می‌آید که به زبان ساده می‌گوید در هر ۱۰ دقیقه ما ۱بلاک و ۱دهمِ بلاک داریم، که از این طریق بدست می‌آید:

سختی شبکه

۲۰،۱۶۰ حاصل ضربِ ۱۰ دقیقه در ۲۰۱۶ بلاک است که در حالت ایده آل نیاز می‌باشد.

سختی شبکه بیت کوین

۱۸،۱۴۴ هم حاصل ضرب ۹ در ۲۰۱۶ است، و نسبت دوم هم که نسبت حالت ۱۰ دقیقه به حالت ۹ دقیقه است.
به همین جهت این نسبت سختی جدید برای شبکه تعیین می‌شود که به صورت رابطه زیر نمایش داده شده:

difficulty

حال ۲‌شرط داریم:

  • اگر عددِ نسبت بزرگتر از ۱ باشد(به این معنی که بلاک ها سریعتر از حالت ایده آل(۱۰ دقیقه) استخراج شده اند)، پس بنابراین باید سختی شبکه زیاد شود که به سمت ۱۰ دقیقه ایده آل برسد.
  • اگر عددِ نسبت کمتر از ۱ باشه(به این معنی که بلاک ها کمتر از حالت ایده آل(۱۰ دقیقه) استخراج شده اند)، بنابر این باید سختی شبکه کمتر شود تا شبکه به سمت ۱۰ دقیقه مورد نظر برسد.

و به این صورت سختی برای ۲۰۱۶ بلاک آینده که دوباره تا آن زمان با تعداد ماینرهای آن سنجیده خواهد شد تنظیم می‌شود.

نکته: باید در نظر داشت سختی زمانی که تنظیم می‌شود به گونه‌ای هست که از یک محدوده خاص بیشتر یا کمتر نمی‌تواند برود(حداقل یک‌چهارم برابر و حداکثر ۴‌برابر)، و بیشتر از حداکثر و کمتر از حداقل ممکن نیست.

زمانِ بین بلاک‌ها به چه شکل با سختی شبکه کنترل می‌شود؟

با یک مثال این قسمت را جلو می‌بریم و در ادامه در شبکه بیت‌کوین آن را نشان می‌دهیم
فرض کنیم فردی به شما تعدادی از اعداد بین ۱ تا ۱۰۰ داده می‌شود.

difficulty

شما می توانید در هر دقیقه یک عدد بین ۱ تا ۱۰۰ به صورت تصادفی انتخاب کنید، اینقدر این انتخاب را می‌‎توانید انجام دهید تا به عدد که آن فرد مد نظرش هست برسید.
فرض می‌کنیم فرد عدد ۵۰ را در نظر گرفته است.

difficulty

براساس اینکه شما در هر۱ دقیقه تنها قادر به یک شماره بین ۱ تا ۱۰۰ هستید بنابراین این مورد ۲ دقیقه زمان می‌برد. اما این خیلی آسان است، بنابراین هدف را به ۲۰ تغییر می دهیم، حالا شما می‌توانید هر ۵/۱ امتحان کنید، به معنی اینکه هر ۵ دقیقه یک بار بدست بیاورید.

range difficulty

هرچه هدف کم‌تر باشد، رسیدن به عدد صحیح دشوارتر می‌شود.

نکته: شاید شما بار اول که عددی را انتخاب می‌کنید خوش شانس باشید و مستقیما ۲۰ را انتخاب کنید، ولی در بلند مدت به همان ۵ دقیقه خواهید رسید و یعنی به صورت هر ۵ دقیقه به عدد می رسید.

بنابراین بر اساس میزان انتخابی که شما می توانید در هر دقیقه انجام دهید، می توانید از مقدار هدف استفاده کنید برای اینکه چه میزان زمان طول بکشد تا عدد صحیح مورد نظر بدست بیاید.

معرفی سختی شبکه

در اینجا سر و کار با کامپیوتر است و کامپیوتر می تواند بجای اینکه به طور مستقیم به هدف اشاره کند آن را به تقسیماتی از محدوده ای از اعداد تبدیل کند که از درون آن اعداد جدیدی بدست بیاورد که نهایتا به جواب یا هدف مسئله برسد.

difficulty-سختی شبکه

این شماره جدید همان سختی شبکه هست، که خیلی ساده می‌شود از آن استفاده کرد برای تغییر مقدار عدد مورد نظر و به تناسب آن طول زمان مورد نظر، تمام این فرآیند در رابطه زیر نشان داده شده است:

difficulty

نمونه های مختلفی رو برای مثال در زیر می‌بینیم که با تغییر سختی شبکه چطور طولِ پیدا کردن هدف را سخت‌تر می‌شود کرد:

سختی شبکه ماین

هر چه سختی بالاتر باشد، هدف پایین تر است

شبکه بیت‌کوین

شبکه بیت‌کوین همانند مثال ساده که در بالا گفته شد کار می کند، به این منظور فرآیند هشینگ کاندید بلاک انجام می‌گیرد تا ماینرها بتوانند بهترین شانس‌های خودشان را امتحان کنند تا به عدد مورد نظر برسند، در اینجا ماینرها امیدوارند که محدوده بازه ای کمتری را بتوانند انجام بدهند که سریعتر به عدد مورد نظر برسند.

hash

و همان طور که می‌بینید ماینر ها قادر به تولید هزاران مقادیر درهم سازی(hash values) در دقیقه هستند، بیت کوین به طرز مضحکی از اعداد بزرگ استفاده می‌کند

hash values

از آنجایی که هزاران ماینر در حال تلاش برای بدست آوردن شانس خود هستند، بنابراین طوری این مقدار تغییر می‌کند که اطمینان حاصل شود میزان کم و زیاد شدن ماینرها به اندازه ۱۰ دقیقه(نه چند ثانیه) زمان خواهد برد، بنابراین عدد های هدف به تناسب ماینرها متغییر هستند.

بدون مقیاس

با توجه به اینکه اعداد سختی شبکه بزرگ به نظر می‌رسد رسیدن به هدف هم مثل یک لاتاری بسیار دشوار است.

معرفی اعداد هگزادسیمال

بخاطر اعدادی که ما با آنها در این شبکه سر و کار داریم اعداد بزرگی هستند، کامپیوتر ترجیح می‌دهد آنها را به شکل هگزادسیمال نمایش بدهد.

اعداد هگزادسیمال

به همین دلیل است که ارزشِ هش هر بلاک به این صورت نمایش داده می شود:

هشاین هگزادسیمال است

ولی این درواقع همان عدد هست، اما به صورت هگزادسیمال تبدیل شده، بنابراین ماینرها تلاش می‌کنند تا به هدفِ هگزادسیمال مورد نظر برسند! شما به راحتی می‌توانید اعداد هگزادسیمال را به اعداد معمولی یا همان دسیمال تبدیل کنید.

desimal-هگزادسیمال

به همین دلیل معمولا دیده شده عدد مورد نظر برای بدست آوردن دارای دسته ای از اعداد و حروف باشد.

این نکته را نباید فراموش کرد که از لحاظ ارزش اعداد دسیمال با فرم هگزادسیمال یکی هستند و شما می توانید براحتی آنها را به یکدیگر تبدیل کنید.

اعداد سختی شبکه در قالب اعداد اعشاری داده می شود، در حالی که شما می بینید که هشِ مورد نظر براساس هگزادسیمال داده شده است، اما این ربطی ندارد شما می توانید هگزادسیمال را دوباره به دسیمال تبدیل کنید و ببینید که در نهایت هر ۲ فرم نوشتاری اعداد یک سختی شبکه یکسان خواهند داشت.

تبدیل هگزادسیمال به دسیمال

کجا می‌توان سختیِ شبکه فعلی را پیدا کرد؟

می‌توان با وارد کردن دستور getdifficulty در کنسول رفرنس کلاینت بیت‌کوین(فول‌نود) خود به این موضوع رسید. همینطور می‌توان سختی شبکه را توسط فرمان getmininginfo مشاهده کرد.

پیدا کردن سختی شبکه

با این حال اگه شما یک کلاینت از بیت‌کوین را ندارید، می توانید سختی شبکه را همیشه از آدرس زیر پیدا کنید

[button color=”blue” link=”http://chainquery.com/bitcoin-api/getdifficulty” size=”big” align=”center”]get difficulty[/button]

و همینطور اگه علاقه‌مند هستید که سختی شبکه در طول زمان چگونه تغییر می‌کند، می‌توانید از وبسایت زیر استفاده کنید که به همراه چارت هم می‌باشد

[button color=”blue” link=”https://bitcoinwisdom.com/bitcoin/difficulty” size=”big” align=”center”]difficulty[/button]

درباره نویسنده

kazem

xan
Student of pure mathematics
Interested in the technology of the day and cyberspace

نظر بدهید