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

  زمان مطالعه دقیقه
میثم منصوری
 30 / 12 / 2018
  زمان مطالعه دقیقه
میثم منصوری
 30 / 12 / 2018

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

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

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

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

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

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

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

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

سختی شبکه هر 2016 بلاک تغییر می کنه، که میشه همون 2 هفته یکبار، در واقع 2016 تا بلاک که میشه 2016 تا 10 دقیقه زمان باید صرف بشه که بعد زمان تغییر سختی شبکه انجام بگیره،
اما یک نکته هست ما اینجا 10 دقیقه ثابت نیست، یعنی به طور میانگین 10 دقیقه می باشد، به هر حال برای محاسبه نیازه که 2016 رو ضربدر 10 (دقیقه) کنیم که به دقیقه بدست میاد، حالا اگه ماینرهای جوری استخراج کنند که میانگین 9 دقیقه بشه این زمان تغییر سختی تغییر میکنه و می شه 2016 ضربدر 9 (دقیقه).

وقتی سختی شبکه کمتر از 10 دقیقه باشه زمان ماین هر بلاک در 10 دقیقه و در وسعت 2016 بلاک، بیشتر از 1 میشه، بدین معنی که در هر 10 دقیقه یک رابطه 1.1 بوجود میاد که داره میگه در هر 10 دقیقه ما 1 بلاک و 1 دهم بلاک داریم، که از این طریق بدست میاد:

محاسبه سختی شبکه بیت کوین
سختی فعلی شبکه بیت کوین

20160 برابر بوده از ضرب 10 دقیقه در 2016 بلاک که در حالت ایده آل نیاز می باشد.

18144 هم برابر هست از ضرب 9 در 2016، و نسبت دوم هم که نسبت حالت 10 دقیقه به حالت 9 دقیقه هست.

بعد از روی این نسبت میان سختی جدید رو برای شبکه تعبیین می کنند که می شه رابطه زیر:

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

حالا 2 تا شرط داریم اینجا:

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

و به این صورت سختی تنظیم می شه برای 2016 بلاک آینده که دوباره تا آن زمان با تعداد ماینرهای آن سنجیده خواهد شد.

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

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

با یک مثال این قسمت رو می خوایم جلو ببریم و در ادامه اونو تو شبکه بیتکوین نشون میدیم. فرض کنیم من به شما تعدادی از اعداد بین 1 تا 100 می دم.

معادله ارز

خب شما می تونید در هر دقیقه یک عدد بین 1 تا 100 بصورت تصادفی انتخاب کنید، اینقدر این انتخاب رو می تونید انجام بدید تا به عددی که من مدنظرم هست برسید.

فرض می کنیم من عدد 50 رو در نظر گرفتم.

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

براساس اینکه شما در هر دقیقه 1 تنها قادر به یک شماره بین 1 تا 100 هستید بنابراین این مورد 2 دقیقه زمان می برد. اما این خیلی آسونه، بنابراین هدف رو به 20 تغییر می دم، حالا شما می توانید هر 5/1 امتحان کنید، یا به معنی اینکه هر 5 دقیقه یک بار بدست بیاورید.

معادله

یک نکته ای که هست شاید شما بار اول که عدد رو انتخاب می کنید خوش شانس باشید و مستقیما 20 رو انتخاب کنید، ولی در بلند مدت به همان 5 دقیقه خواهید رسید و ینی به صورت هر 5 دقیقه به این شرایط می انجامد.

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

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

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

معادله سختی شبکه بیت کوین

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

محاسبه سختی بیت کوین

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

یافتن جواب مساله بیت کوین

شبکه بیت کوین

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

یافتن پاسخ معادله بیت کوین

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

ادرس هگزا دسیمال بیت کوین

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

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

ادرس هگزا دسیمال بیت کوین

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

000000000003ba27aa200b1cecaad478d2b00432346c3f1f3986da1afd33e506

این هگزادسیمال است، ولی این درواقع همان عدد هست، اما به صورت هگزادسیمال تبدیل شده است، بنابراین ماینرها (استخراج گرها) تلاش می کنند تا به تارگت هگزادسیمال مورد نظر برسند ! شما براحتی می تونید اعداد هگزادسیمال رو به اعداد معمولی یا همون دسیمال تبدیل کنید.

هش بلاک بیت کوین

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

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

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

پارامتر سختی بیت کوین

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

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

سختی فعلی بیت کوین

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

http://chainquery.com/bitcoin-api/getdifficulty

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

https://bitcoinwisdom.com/bitcoin/difficulty

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

منبع

برگردان رضا تجری

پی نوشت: ظاهرا در مورد پیدا کردن کردن یک عدد بین 0 تا 100 می بایست به جای عدد از بازه استفاده شود تا معنای علیم دقیق حاصل شود