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

فورک و انواع آن

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

حرف زدن از بلاکچین کسالت آور است؟

بدیهی است درک این تکنولوژی برای خیلی ها آسان نیست. همان طور که اگر کسی بگوید بلاکچین را کشف کرده، خنده دار خواهد بود. مطلب دیگری که لازم است گفته شود این است که نام بیتکوین با کلمه بلاکچین عجین شده و نمی­توان این را نادیده گرفت. در کنفرانسی شرکت داشتم و سخنزان ۴۵ دقیقه درباره بلاکچین صحبت کرد بدون اینکه حتی اشاره ای به بیتکوین داشته باشد! ممکن است شما دوستانی داشته باشید که در دوسال گذشته در این حوزه کار کرده اند و فقط بلدند درباره این موضوعات صحبت کنند تا جایی که اطرافیانشان از این وضعیت دلخور می­شوند. من یکی از این افراد هستم که صحبت هایم برای دوستانم کسل کننده بود تا اینکه بالاخره قیمت بیتکوین بالا رفت و موضوع برایشان جذاب شد.

بمباران واژه ها

اگر شما با این موضوعات تاکنون آشنایی نداشتید و تازه شروع کرده اید به خواندن درباره این مفاهیم، با بمباران واژه ها در این حوزه روبرو می­شوید: استخراج، بلاکچین، آدرس عمومی، آدرس خصوصی و … که همگی برایتان تازگی دارد و در ابتدا به قدری گیج می­شوید که با خود خواهید گفت: “آه اینها دیگر چه مزخرفاتی هستند.”

تازه داستان بدتر هم می­شود. یک کیف پول دیجیتال نصب و تراکنشی را دریافت می­کنید. متوجه شروع یک جنگ در بیتکوین می­شوید که شما را به فورک تهدید می­کنند. اول که معنی فورک را نمی­دانید فکر می­کنید منظورشان همان چنگال است. با خود می­گویید آیا باز هم این یک شوخی است؟

یکی می­گوید فورک نرم و دیگری می­گوید فورک سخت. شما هم که در تمام زندگی تان فقط با فورک (چنگال!) سخت سرو کار داشته اید با خود می­گویید آیا فورک نرم، منظور نوعی چنگال! نرم است!؟ (خنده حاضرین) و باز هم بیشتر گیج می­شوید. می­خواهم به شما کمک کنم موضوع را درک کنید.

فورک

یک فورک در واقع یک جور تغییر وضعیت در بلاکچین است که منجر به واگرایی در زنجیره بلاکچین خواهد شد طوری که یک بخش شبکه از آن پس نگاه متفاوتی نسبت به بخش دیگر و تاریخچه زنجیره خواهد داشت و در واقع همین معنی فورک یا انشعاب است. این اتفاقی است که دو تا سه بار در هفته روی می­دهد. علت اصلی این اتفاق، تاخیر انتشار یک بلاک در طول شبکه است. تصور کنید در نقطه ای از شبکه یک استخراج کننده، محاسبات جادویی ریاضی را انجام و جواب را پیدا می­کند. می­گوید جواب را پیدا کردم! آن را دریک بلاک جدید گذاشته و به شبکه می­فرستد. در طرف دیگر شبکه یک نفر دیگر با اختلاف چند ثانیه او هم جواب را پیدا کرده و همین کار را تکرار و بلاک جدید را به شبکه می­فرستد.حال اگر فرض کنیم نیمی از شبکه بلاک را ابتدا از نفر اول و نیم دیگری بلاک را ابتدا از نفر دوم دریافت کرده باشد، چه اتفاقی خواهد افتاد؟

حل اختلاف

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

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

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

آنقدر این وضعیت در طول ۱۰ دقیقه تکرار می­شود تا زمانی که ۹۵% بلاکی که دست همه است آدرس بالاسری اش معتبر باشد و در نهایت آن بلاک پذیرفته می­شود. این اتفاقی است که هر هفته ۲ یا ۳ بار رخ می­دهد.

توافق جمعی (Consensus)

پس چیزی که تاکنون گفته شد یک فورک طبیعی بود که در اثر تاخیر انتشار بلاک در شبکه رخ داده بود و با اجماع یا توافق نودها مشکل حل شده و زنجیره ادامه پیدا می­کند. اما شکل های دیگری هم از فورک وجود دارد. مثلا یک قسمت از شبکه تصمیم می­گیرد که قانون را عوض کند و با عوض شدن قانون، برای بخش دیگر شبکه سازگاری وجود نخواهد داشت. اگر ۵۱% تصمیم به این کار بگیرند یعنی ۵۱% از استخراج کنندگان و کسانی که توان محاسباتی (برای حل مسئله ریاضی) دارند به این وضعیت، حمله ۵۱ درصدی گفته می­شود چون می­توانند بدون اعتنا به ۴۹ درصد باقیمانده قوانین (کد برنامه) را تغییر بدهند.

انواع شاخه ها (فورک)

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

(بلوک های جدا شده و یا یتیم بلوک های معتبری هستند که دیگر قسمتی از زنجیره اصلی نیستند)

در مثالی که در ادامه خواهیم آورد، دو مجموعه قوانین وجود دارد؛ قوانین قرمز و قوانین زرد. در این مثال ها قوانین قرمز قوانین اصلی هستند که به اجرا درآمده اند و قوانین زرد قوانین اصلاح شده هستند. همچنین قوانین نارنجی ترکیبی از هردوی آنها است. (فرض بر این است که هر دو مجموعه قانون نسبت به معتبر بودن بلاک ها اتفاق نظر دارند)

هارد فورک ناسازگار

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

هارد فورک زمانی اتفاق می افتد که برخی از استخراج کنندگان تصمیم به استخراج طبق مجموعه قوانین جدید می گیرند و برخی دیگر طبق همان مجموعه قوانین قدیمی ادامه می دهند. هر بلاکی که بر اساس قوانین جدید ساخته شود، طی قوانین قدیمی معتبر نیست و برعکس. انشعاب Ethereum و Etherem Classic نمونه ای از این انشعاب ها است. در این مورد زنجیره ها برای همیشه تقسیم شده باقی خواهند ماند و هیچ شانسی برای همگرا شدن آنها وجود ندارد و این موضوع که در هر زنجیره چه میزان استخراج انجام شده باشد اهمیتی ندارد.

هارد فورک نیمه سازگار

هارد فورک نیمه سازگار  (Semi-Compatible Hard Forks) زمانی اتفاق می افتد که مجموعه قوانین تقسیم شود (در نتیجه قوانینی مشترک بین دو زنجیره به وجود می آید)، اما همچنان بلاک هایی وجود خواهند داشت که تنها روی یکی از زنجیره ها معتبر هستند.

در این موارد استخراج کنندگان می توانند از انشعاب زنجیره از این طریق که فقط بلوک هایی با قانون نارنجی را استخراج کنند جلوگیری کنند. هرچند زمانی که استخراج کننده ای یک بلاک زرد یا قرمز را استخراج کند، زنجیره دچار انشعاب می شود. امکان همگرا شدن زنجیره ها در صورتی که استخراج کنندگان در نهایت یک زنجیره ی انحصارا نارنجی را بسازند وجود دارد و این کار را از همان زمانی انجام دهند که کاربران، قوانین زرد را (که از کل کار هر دو زنجیره ی دیگر جلو زده است) پذیرفته اند. اگر این کار را انجام دهند، هر دوی زنجیره های قرمز/نارنجی و زرد/نارنجی توسط مشتریان (clients) زرد یا قرمز یتیم خواهند شد و آنها تنها یک زنجیره واحد را خواهند دید. تا جایی که از آن اطلاع داریم شاخه ای از این مدل وجود ندارد. بهترین شرط (bet)برای استخراج کنندگان در این حالت (بسته به ویژگی ها) به طور معمول این خواهد بود که تنها بلاک های نارنجی را استخراج کنند و با این کار از انشعاب زنجیره جلوگیری کنند. با انجام این کار استخراج کنندگان به طور موثر یک فورک نیمه سازگار (Semi-compatible fork) را به یک سافت فورک تبدیل می کنند.

هارد فورک سازگار

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

زمانی که قوانین گسترش پیدا می کند، به محض اینکه یک استخراج کننده بلاکی را با قوانین زرد استخراج کند، زنجیره منشعب می شود. این مدل از انشعاب تا زمانی که زنجیره زرد شامل کار بیشتری نسبت به زنجیره نارنجی شود منشعب باقی خواهد ماند. خطری که در این مدل از انشعاب وجود دارد این است که اگر زنجیره نارنجی شامل کار بیشتری شود، زنجیره زرد یتیم خواهد شد. کاربران زنجیره زرد نه تنها باید مطمئن باشند که قریب به اتفاق قدرت هش از ابتدا در این زنجیره بوده، بلکه همچنان تا ابد نیز در این زنجیره خواهد بود. نمونه هایی از این مدل شاخه (فورک) Bitcoin XT، Bitcoin Classic و Bitcoin Unlimited هستند.

سافت فورک

سافت فورک (Soft-fotk) زمانی است که مجموعه قوانین محکم شده است و قوانین زرد کاملا توسط قوانین قرمز پوشانده می شوند. این مدل برای اجرایی شدن قوانین تنها نیاز به ارتقای اکثریت استخراج کنندگان دارد.

انشعاب زمانی می تواند اتفاق بیافتد که استخراج کننده ای یک بلاک قرمز تولید کند. کاربرانی که از مجموعه قوانین قرمز استفاده می کنند آن زنجیره را دنبال خواهند کرد و کاربرانی که از مجموعه قوانین زرد استفاده می کنند، زنجیره نارنجی را دنبال خواهند کرد. در این حالت اگر اکثریت قدرت هش شروع به اجرای قوانین نارنجی کند، زنجیره قرمز یتیم خواهد شد. این مدل از شاخه (فورک) قبلا بارها در تاریخچه بیت کوین با تغییراتی مثل BIP666،  CSV، CLTV و همچنین سافت فورک پیشنهادی سگویت اتفاق افتاده است.

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

هر دو مورد سازماندهی های مجدد بزرگ (reorganizations) و انشعاب می توانند خطراتی را برای استخراج کنندگان و کاربران داشته باشند. سازماندهی مجدد بزرگ (روند تغییر مسیری که در آن بلاک چین سازمان یافته است) می تواند باعث این بشود که تراکنش های تایید شده قبلی ناپدید شوند که این موضوع باعث از دست رفتن پول بسیاری از مردم می شود. برای مثال امکان دارد که یک سال گذشته شما برای ماشین خود 10بیت کوین پرداخت کرده باشید و سال بعد این تراکنش کاملا از دفتر کل پاک شده باشد. در نتیجه شما نه بیت کوینی دارید و نه ماشینی. این حالت از رفتار می تواند باعث از دست رفتن اعتماد مردم به دیجی ارزها بشود.  با توجه به نوع انشعاب، یک سازماندهی مجدد بزرگ تنها می تواند روی کاربران مجموعه قوانینِ بازنده تاثیرگذار باشد و کاربران مجموعه قوانین قوی تر دچار سازماندهی مجدد نمی شوند.

انشعاب یک زنجیره می تواند ریسک های مختلفی داشته باشد. ارزش Ethereum بعد از اینکه از Ethereum Classic منشعب شد دچار نوسان شد. این موضوع بازار را دچار سردرگمی کرد( که کدام یک ار آنها Ethereum است، همانی که قوانین اصلی را دارد و یا همان که قوانینی را که بنیاد متمرکز اتریوم امروزه اجرا می کند). البته مواردی وجود دارد که ممکن است انشعاب ترجیح داده شود. فرض کنید دو گروه منافع کاملا متفاوتی با یکدیگر دارند و هرکدام در زمینه خود در صورت دنبال کردن خواسته هایشان بهترین خدمات را ارائه می کنند. انشعاب در این موارد نسبت به سازش ترجبح داده می شود.

کاهش خطرها

در بسیاری از موارد ریسک یا خطر برای بسیاری از این شاخه ها می تواند توسط کاربران و استخراج کنندگان کاهش پیدا کند.

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

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

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

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

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

خاتمه

بسیاری از افراد سوظن هایی نسبت به سافت فورک دارند چرا که به کاربران اجازه انتخاب نمی دهد. ذات بیت کوین و کلیه بلاک چین هایی که بر پایه proof-of-work هستند این است که استخراج کنندگان قدرت ایجاد قوانین محدودکننده تری بیش آنچه کاربران با آن توافق کرده اند را دارند. هرچند که در واقع کاربران نیز (با استناد به هاردفورک ناسازگار) دارای قدرت هستند. در این حالت کاربران زنجیره را با معرفی کردن مجموعه قوانین جدید مجبور به تقسیم شدن می کنند. این موضوع تضمین می کند که کاربران همیشه راه فراری از مجموعه قوانین تحمیل شده توسط استخراج کنندگان را دارند. به این ترتیب اگر اقتصاد و کاربران تغییر قانون یک سافت فورک را رد کنند، همیشه توان درخواست قوانینی مطابق با خواسته هایشان را خواهند داشت. این امر ممکن است ناخوشایند باشد اما این موضوع در رابطه با هر حمله ای از طرف استخراج کنندگان به کاربران نیز صدق می کند.



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



Source & Images via medium.com , cdn-images-1