سمیرا ابراهیم پور | 2017.03.14

توضیحی در رابطه با version bits

سیستم version bits BIP9 راهی برای معرفی تغییرات قانون سازگار با عقبگرد (backward) برای قوانین اجماع بیت کوین است که با نام سافت فورک (شاخه نرم) شناخته می شود.

version bits به استخراج کنندگان اجازه می دهد تا نسبت به اینکه می توانند سافت فورک را تایید کنند علامت بدهند. همچنین اجازه پیشنهاد 29 شاخه (فورک) همزمان با هم را می دهد.

version bits نیازی به فعال سازی ندارد؛ استخراج کنندگان می توانند با تنظیم کردن بیت هایی در هدرِ بلاک آمادگی خود را برای یک سافت فورک اعلام کنند.

سافت فورک ها یک زمان شروع (start time) و یک زمان پایان (timeout) دارند که طرح پیشنهادی در این مدت فعال خواهد بود. اگر طی این مدت نتواند تاییدیه لازم را دریافت کند و فعال شود، طرح پیشنهادی سافت فورک شکست خواهد خورد.

سافت فورک ها طی Version bits از یک جریان کاری عبور می کند:

تعریف شده -> شروع شده -> قفل شده -> فعال

و یا تعریف شده-> شرع شده-> شکست

پس از تعریف شدن طرح، اگر میانگین زمانی که گذشته است (MTP) بیشتر یا مساوی با زمان شروع (starttime) باشد و از زمان پایان (timeout) کمتر باشد (یعنی هنوز به زمان پایان نرسیده باشد)، در نتیجه به مرحله بعد یعنی شروع می رود؛ اما اگر MTP بیشتر از زمان پایان باشد (یعنی وقتش تمام شده باشد) به حالت شکست (failed) می رود.

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

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

شبکه بیت کوین بعد از هر 2016 بلاک (حدود 2هفته) دیفیکالتی (سختی) استخراج را دوباره هدف گذاری می کند. در این زمان version bits به پنجره 2016 بلاک قبلی نگاه می کند تا ببیند چند بلاک برای سافت فورک داده شده سیگنال (علامت) داده اند.  اگر 95درصد از بلاک ها آمادگی خود را برای سافت فورک اعلام کرده باشند، حالت گردش کار از STARTED به LOCKED_IN تغییر پیدا می کند.

پس از LOCKED_IN، قوانین پس از اینکه یک بارِ دیگر سختی شبکه دوباره هدفگذاری شود فعال می شوند. (مثلا سری بعدی 2016 بلاک). به نرم افزارهای نودها نیز هشدار داده می شود که یک ارتقا در حال انتظار است.

بلاک ها دارای محلی 32بیتی برای “version” (ورژن یا مدل) هستند. اگر سه بیت اول 001 باشد، 29 بیت بعدی سافت فورک احتمالی را مشخص می کند.

زمانی که هیچ سافت فورکی علامت دهی نمی شود، استخراج کنندگان باید قسمت version bits بلاک را با 0x20000000 پر کنند.

جهت علامت دهی یا سیگنال دادن جهت آمادگی برای سافت فورک، استخراج کنندگان باید ورژن بیتِ مخصوص طرح مورد نظر خود را همراه با 0x20000000 در قسمت version bits قرار دهند. این کار را باید پس از زمان شروع سافت فورک انجام دهند.

همچنین زمانی که سافت فورکی فعال شود و یا شکست بخورد نیز بیت ها باید تغییر کنند.

مثال زیر را در نظر بگیرید که alice از بیت 0 استفاده می کند که باید بیت های مربوطه را با 0x1 و در ادامه آن 0x20000000 پر کند.

ISM یا IsSuperMajority() روشی قدیمی برای سافت فورک است که در آن قوانین جدید زمانی فعال می شوند که 950 بلاک از 1000 بلاکی که برای ورژن جدیدِ بلاک سیگنال می دهند استخراج شوند.

ISM

سافت فورکِ ISM پس از فعال شدن باعث یتیم شدن تمام بلاک ها با ورژن قدیمی می شود. برای مثال اگر در حال حاضر ورژن 4 وجود دارد و سافت فورک بعدی ورژن 5 را معرفی می کند، پس از فعال شدن، نودها تمام بلاک های ورژن 4 را رد خواهند کرد.

زمانی که سافت فورکِ version bits فعال می شود، نودها شروع به به اجرا درآوردن اجباری قوانین می کنند و یک بلاکی که سیگنال نداده است را یتیم نمی کنند. مگر اینکه قوانین جدید را نقض کند.

ISM مداوما به 1000 بلاک قبلی نگاه می کند؛ اما version bits هر بار که سختی شبکه هدف گذاری مجدد می شود به 2016 بلاک قبلی نگاه می کند.

سافت فورک های ISM تاریخ انقضا ندارند، اما سافت فورک های version bits تنها در مدت زمان بین زمان شروع و زمان پایان می توانند فعال باشند.

سافت فورک version bits تا زمانی که 95درصد از استخراج کنندگان اعلام آمادگی نکنند فعال نمی شود. زمانی که سافت فورک به مرحله LOCKED_IN می رسد، جایی که اکثریت استخراج کنندگان آماده ی تغییر هستند، سایر استخراج کنندگان باقی مانده، باید قبل از هدف گذاری بعدی سختی شبکه ارتقا پیدا کنند. (چیزی حدود دو هفته)

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



دیدگاه هایی که در این مقاله ارائه شده اند، متعلق به نویسنده می باشند و لزوماً مربوط به Coiniran نمی باشد و نباید به آن نسبت داده شود.



Source & bitcoincore

Images via pixabay