توضیح سختیِ شبکه (دیفیکالتی) بیت کوین
نوشته شده توسط:امیر سلامی در | ۲۱ فروردین ۱۳۹۸ - ۱۶:۲۱ | ۰ دیدگاهبدون اغراق میشود گفت یکی از بهترین و هوشمندانهترین قسمتهای شبکه بیتکوین فرآیند سختی شبکه و کارکرد آن است.
یک نگاه به عکس زیر همه چیز را نشان میدهد که در ادامه توضیح بیشتر داده خواهد شد.
سختی شبکه مقدار زمانیست که یک ماینر بتواند یک بلاک را استخراج کند و بلاک بعدی را برای فرآیند استخراج استارت بزند
برای این کار یک سختی در نظر گرفته میشه که ساخت این بلاک از یک زمانی بیشتر یا کمتر نشود، این سختی برای اینکه در همان بازه زمانی تعریف شده همیشه ثابت بماند هر ۲هفته یکبار تنظیم میشود، بهطوری که ساخت یک بلاک را در بازه ثابت ۱۰ دقیقه سعی دارد که تنظیم نماید. بنابراین تا الان متوجه شدیم که یک مدت زمان بین ساخت ۲بلاک(در بیتکوین) داریم و آن مدت زمان ۱۰دقیقه هست که با سختی شبکه تنظیم میشود.
چرا سختی شبکه مهم است؟
سختی شبکه برای این مهم است که تضمین میکند در هر زمان که شبکه استخراج کنندگان چه زیاد شوند چه کم شوند توجیح زمانی که بین ساخت هر ۲بلاک باشد به میزان ۱۰ دقیقه انجام بگیرد، یعنی هرچقدر تعداد ماینرها زیاد و کم شوند سختی شبکه به تناسب آن طوری خودش را تنظیم کند که نهایتا بهطور میانگین تولید هر بلاک ۱۰دقیقه زمان ببرد.
فرض کنید اگر این سختی ثابت باشد، با اضافه شدن ماینرها میزان اضافه شدن هر بلاک کمتر میشود.
چه زمانی سختی شبکه تغییر میکند؟
سختی شبکه هر ۲۰۱۶ بلاک تغییر میکند، که همان ۲ هفته یکبار است، در واقع ۲۰۱۶ بلاک ۲۰۱۶ تا ۱۰ دقیقه زمان باید صرف بشود که بعد از آن تغییر سختی شبکه انجام بگیرد، اما یک نکته هم وجود دارد، اینکه اینجا ۱۰ دقیقه زمانِ ثابتی نیست، یعنی به طور میانگین ۱۰ دقیقه میباشد
به هر حال برای محاسبه نیاز است که ۲۰۱۶ رو ضرب در ۱۰(دقیقه) کنیم، حالا اگر ماینرها به نحوی استخراج کنند که میانگین ۹ دقیقه بشود، مدت زمان تغییر سختی شبکه تغییر میکند و ۲۰۱۶ ضرب در ۹ (دقیقه) میشود.
وقتی سختی شبکه کمتر از ۱۰ دقیقه باشد زمان ماینِ هر بلاک در ۱۰ دقیقه و در وسعت ۲۰۱۶ بلاک، بیشتر از ۱ میشه، به این معنی که در هر ۱۰ دقیقه یک رابطه ۱.۱ به وجود میآید که به زبان ساده میگوید در هر ۱۰ دقیقه ما ۱بلاک و ۱دهمِ بلاک داریم، که از این طریق بدست میآید:
۲۰،۱۶۰ حاصل ضربِ ۱۰ دقیقه در ۲۰۱۶ بلاک است که در حالت ایده آل نیاز میباشد.
۱۸،۱۴۴ هم حاصل ضرب ۹ در ۲۰۱۶ است، و نسبت دوم هم که نسبت حالت ۱۰ دقیقه به حالت ۹ دقیقه است.
به همین جهت این نسبت سختی جدید برای شبکه تعیین میشود که به صورت رابطه زیر نمایش داده شده:
حال ۲شرط داریم:
- اگر عددِ نسبت بزرگتر از ۱ باشد(به این معنی که بلاک ها سریعتر از حالت ایده آل(۱۰ دقیقه) استخراج شده اند)، پس بنابراین باید سختی شبکه زیاد شود که به سمت ۱۰ دقیقه ایده آل برسد.
- اگر عددِ نسبت کمتر از ۱ باشه(به این معنی که بلاک ها کمتر از حالت ایده آل(۱۰ دقیقه) استخراج شده اند)، بنابر این باید سختی شبکه کمتر شود تا شبکه به سمت ۱۰ دقیقه مورد نظر برسد.
و به این صورت سختی برای ۲۰۱۶ بلاک آینده که دوباره تا آن زمان با تعداد ماینرهای آن سنجیده خواهد شد تنظیم میشود.
نکته: باید در نظر داشت سختی زمانی که تنظیم میشود به گونهای هست که از یک محدوده خاص بیشتر یا کمتر نمیتواند برود(حداقل یکچهارم برابر و حداکثر ۴برابر)، و بیشتر از حداکثر و کمتر از حداقل ممکن نیست.
زمانِ بین بلاکها به چه شکل با سختی شبکه کنترل میشود؟
با یک مثال این قسمت را جلو میبریم و در ادامه در شبکه بیتکوین آن را نشان میدهیم
فرض کنیم فردی به شما تعدادی از اعداد بین ۱ تا ۱۰۰ داده میشود.
شما می توانید در هر دقیقه یک عدد بین ۱ تا ۱۰۰ به صورت تصادفی انتخاب کنید، اینقدر این انتخاب را میتوانید انجام دهید تا به عدد که آن فرد مد نظرش هست برسید.
فرض میکنیم فرد عدد ۵۰ را در نظر گرفته است.
براساس اینکه شما در هر۱ دقیقه تنها قادر به یک شماره بین ۱ تا ۱۰۰ هستید بنابراین این مورد ۲ دقیقه زمان میبرد. اما این خیلی آسان است، بنابراین هدف را به ۲۰ تغییر می دهیم، حالا شما میتوانید هر ۵/۱ امتحان کنید، به معنی اینکه هر ۵ دقیقه یک بار بدست بیاورید.
هرچه هدف کمتر باشد، رسیدن به عدد صحیح دشوارتر میشود.
نکته: شاید شما بار اول که عددی را انتخاب میکنید خوش شانس باشید و مستقیما ۲۰ را انتخاب کنید، ولی در بلند مدت به همان ۵ دقیقه خواهید رسید و یعنی به صورت هر ۵ دقیقه به عدد می رسید.
بنابراین بر اساس میزان انتخابی که شما می توانید در هر دقیقه انجام دهید، می توانید از مقدار هدف استفاده کنید برای اینکه چه میزان زمان طول بکشد تا عدد صحیح مورد نظر بدست بیاید.
معرفی سختی شبکه
در اینجا سر و کار با کامپیوتر است و کامپیوتر می تواند بجای اینکه به طور مستقیم به هدف اشاره کند آن را به تقسیماتی از محدوده ای از اعداد تبدیل کند که از درون آن اعداد جدیدی بدست بیاورد که نهایتا به جواب یا هدف مسئله برسد.
این شماره جدید همان سختی شبکه هست، که خیلی ساده میشود از آن استفاده کرد برای تغییر مقدار عدد مورد نظر و به تناسب آن طول زمان مورد نظر، تمام این فرآیند در رابطه زیر نشان داده شده است:
نمونه های مختلفی رو برای مثال در زیر میبینیم که با تغییر سختی شبکه چطور طولِ پیدا کردن هدف را سختتر میشود کرد:
هر چه سختی بالاتر باشد، هدف پایین تر است
شبکه بیتکوین
شبکه بیتکوین همانند مثال ساده که در بالا گفته شد کار می کند، به این منظور فرآیند هشینگ کاندید بلاک انجام میگیرد تا ماینرها بتوانند بهترین شانسهای خودشان را امتحان کنند تا به عدد مورد نظر برسند، در اینجا ماینرها امیدوارند که محدوده بازه ای کمتری را بتوانند انجام بدهند که سریعتر به عدد مورد نظر برسند.
و همان طور که میبینید ماینر ها قادر به تولید هزاران مقادیر درهم سازی(hash values) در دقیقه هستند، بیت کوین به طرز مضحکی از اعداد بزرگ استفاده میکند
از آنجایی که هزاران ماینر در حال تلاش برای بدست آوردن شانس خود هستند، بنابراین طوری این مقدار تغییر میکند که اطمینان حاصل شود میزان کم و زیاد شدن ماینرها به اندازه ۱۰ دقیقه(نه چند ثانیه) زمان خواهد برد، بنابراین عدد های هدف به تناسب ماینرها متغییر هستند.
با توجه به اینکه اعداد سختی شبکه بزرگ به نظر میرسد رسیدن به هدف هم مثل یک لاتاری بسیار دشوار است.
معرفی اعداد هگزادسیمال
بخاطر اعدادی که ما با آنها در این شبکه سر و کار داریم اعداد بزرگی هستند، کامپیوتر ترجیح میدهد آنها را به شکل هگزادسیمال نمایش بدهد.
به همین دلیل است که ارزشِ هش هر بلاک به این صورت نمایش داده می شود:
این هگزادسیمال است
ولی این درواقع همان عدد هست، اما به صورت هگزادسیمال تبدیل شده، بنابراین ماینرها تلاش میکنند تا به هدفِ هگزادسیمال مورد نظر برسند! شما به راحتی میتوانید اعداد هگزادسیمال را به اعداد معمولی یا همان دسیمال تبدیل کنید.
به همین دلیل معمولا دیده شده عدد مورد نظر برای بدست آوردن دارای دسته ای از اعداد و حروف باشد.
این نکته را نباید فراموش کرد که از لحاظ ارزش اعداد دسیمال با فرم هگزادسیمال یکی هستند و شما می توانید براحتی آنها را به یکدیگر تبدیل کنید.
اعداد سختی شبکه در قالب اعداد اعشاری داده می شود، در حالی که شما می بینید که هشِ مورد نظر براساس هگزادسیمال داده شده است، اما این ربطی ندارد شما می توانید هگزادسیمال را دوباره به دسیمال تبدیل کنید و ببینید که در نهایت هر ۲ فرم نوشتاری اعداد یک سختی شبکه یکسان خواهند داشت.
کجا میتوان سختیِ شبکه فعلی را پیدا کرد؟
میتوان با وارد کردن دستور getdifficulty در کنسول رفرنس کلاینت بیتکوین(فولنود) خود به این موضوع رسید. همینطور میتوان سختی شبکه را توسط فرمان getmininginfo مشاهده کرد.
با این حال اگه شما یک کلاینت از بیتکوین را ندارید، می توانید سختی شبکه را همیشه از آدرس زیر پیدا کنید:
chainquery.com/bitcoin-api/getdifficulty
و همینطور اگه علاقهمند هستید که سختی شبکه در طول زمان چگونه تغییر میکند، میتوانید از وبسایت زیر استفاده کنید که به همراه چارت هم میباشد:
bitcoinwisdom.com/bitcoin/difficulty
منبع: learnmeabitcoin.com
توضیح سختیِ شبکه (دیفیکالتی) بیت کوین
استخراجبیت کویندیفیکالتیسختی شبکهفول نودمانینگ
نظرات
ارسال نظر