آموزش مفاهیم پایه

هاردفورک و سافت‌فورک چیست و چگونه بر بلاکچین تأثیر دارند؟

همان‌طور که می‌دانیم، بلاکچین شبکه‌ای غیرمتمرکز و بدون نهاد مرکزی است. چنین مسئله‌ای این سؤال را با خود به همراه خواهد داشت که به‌روزرسانی و اصلاحات، در شبکه‌ای بدون نهاد مرکزی چگونه صورت می‌گیرد؟ شبکه ارزهای دیجیتال برای به‌روزرسانی امکانات خود از دو مکانیزم متفاوت استفاده می‌کنند: هارد فورک (انشعاب سخت) و سافت فورک (انشعاب نرم). در ادامه بیشتر درباره این دو انشعاب توضیح خواهیم داد. 

به‌روزرسانی در شبکه ارزهای دیجیتال

اغلب زمانی که پیام به‌روزرسانی برنامه بانکداری دیجیتال بر گوشی شما ظاهر می‌شود، سریعاً اقدام به آپدیت یا به‌روزرسانی اپلیکیشن می‌کنید. شاید حتی این اپلیکیشن‌ها به صورت خودکار به‌روزرسانی شوند؛ اما چرا؟ اگر آخرین نسخه یک نرم‌افزار را نصب نکنید، از دسترسی به خدمات بسیاری محروم خواهید ماند. 

اما در ارزهای دیجیتال منبع باز، اوضاع بسیار متفاوت است. برای استفاده از بیت کوین، نیازی به خواندن همه سطرهای کد سازنده آن نیست؛ اما داشتن انتخاب برای خواندن این کدها مهم است. همان‌طور که میدانید در این ساختار غیرمتمرکز هیچ سلسله مراتبی وجود ندارد. هیچ بانک یا نهاد برتری برای به‌روزرسانی‌ها و اعمال تغییرات وجود ندارد. درنتیجه، پیاده‌سازی ویژگی‌های جدید در شبکه‌های بلاکچین می‌تواند به یک چالش بزرگ تبدیل شود.

در این مقاله،  به این سؤال پاسخ می‌دهیم که چگونه می‌توان شبکه ارزهای دیجیتال را علیرغم عدم وجود اختیارات مرکزی، ارتقا داد.

تصمیم‌گیرنده در یک بلاکچین کیست؟

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

  • توسعه‌دهندگان
  • استخراج‌کنندگان یا ماینرها
  • کاربران فول نود

 این شرکت‌کنندگان درواقع به شبکه بیت کوین کمک می‌کنند. البته دسته دیگری هم وجود دارد که به  Light nodes معروف‌اند. این دسته شامل  کیف پول‌های موبایل، لپ‌تاپ و … شده و به‌طور گسترده‌ای مورداستفاده  قرار می‌گیرند، اما درواقع به‌عنوان شرکت‌کننده در نظر گرفته نمی‌شوند.

توسعه‌دهندگان

توسعه‌دهندگان مسئول ایجاد و به‌روزرسانی کدها هستند. برای یک ارز دیجیتالی معمولی، هرکسی می‌تواند در این روند سهیم باشد. این کدها به صورت عمومی در دسترس است، بنابراین افراد می‌توانند تغییراتی را در کد ایجاد کرده و موارد تغییریافته را برای بررسی توسعه‌دهندگان دیگر به اشتراک بگذارند.

استخراج‌کنندگان یا ماینرها

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

کاربران فول نود

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

این دسته‌بندی‌ها اغلب همپوشانی دارند. به‌عنوان‌مثال یک توسعه‌دهنده می‌تواند یک کاربر فول نود باشد و یا یک ماینر یک فول نود نیز باشد. حتی ممکن است دارای هر سه نقش باشید یا اصلاً هیچ‌کدام از این نقش‌ها را ایفا نکنید.

 درواقع، بسیاری از آنچه ما به‌عنوان کاربران رمزارزها می‌شناسیم هیچ‌یک از این نقش‌ها را بر عهده ندارند. در عوض، آن‌ها ترجیح می‌دهند از Light nodes یا خدمات متمرکز استفاده کنند.

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

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

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

مسئله‌این است که توسعه‌دهندگان به‌هیچ‌عنوان نمی‌توانند به زور اسلحه! شما را مجبور به دانلود باینری هسته بیت کوین (Bitcoin Core)  کنند یا اگر ماینرها بخواهند تغییرات ناخواسته‌ای را اعمال کنند؛ به‌هیچ‌وجه نمی‌توانند آن را با تهدید و زور و این منطق که «کسی شما را مجبور به ماندن نکرده و می‌توانید بروید» پیش ببرند؛ اما چرا؟ چون کاربران خیلی ساده از تحمل این شرایط سرباز زده و شبکه را ترک می‌کنند.

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

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

فورک یا انشعاب چیست؟

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

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

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

علیرغم داشتن نام‌های مشابه و حتی دنبال کردن هدفی یکسان، هارد فورک (انشعاب سخت) و سافت فورک (انشعاب نرم) تفاوت چشمگیری دارند. بد نیست نگاهی به هر یک بیندازیم.

هارد فورک (انشعاب سخت) چیست؟

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

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

یک نمونه از هارد فورک، انشعاب سال 2017 بیت کوین بود که باعث به وجود آمدن دوزنجیره جداگانه شد؛  زنجیره اصلی بیت کوین  (BTC) و زنجیره جدید  بیت کوین کش (BCH). این انشعاب پس از بحث و جدال فراوان در مورد بهترین روش برای موضوع مقیاس‌پذیری (Scaling) به وجود آمد. طرفداران بیت کوین کش می‌خواستند اندازه بلوک افزایش پیدا کند، درحالی‌که طرفداران بیت کوین با این تغییر مخالف بودند. تقریباً همان شکل از اختلافی که در مثال گذشته میان اعضای تیم یک سایت به وجود آمد، این اختلاف هم نتیجه یکسانی داشت.

افزایش اندازه بلوک نیازمند اصلاح قوانین است. چون گره‌ها فقط بلوک‌های کوچک‌تر از 1 مگابایت را می‌پذیرند؛ بنابراین اگر یک بلوک با سایز متفاوت ایجاد کنید که سایزی متفاوت از 1 مگابایت دارد، گره‌های دیگر آن را رد می‌کنند.

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

سافت فورک (انشعاب نرم) چیست؟

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

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

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

یکی از نمونه‌های اجرا شده و واقعی از یک سافت فورک،  انشعاب سگویت (Segregated Witness: SegWit) بود که اندکی پس از انشعاب بیت کوین/ بیت کوین کش رخ داد. سگویت یک به‌روزرسانی بود که قالب بلوک‌ها و تراکنش‌ها را تغییر داد، اما هوشمندانه طراحی‌شده بود. گره‌های قدیمی همچنان می‌توانستند بلوک‌ها و تراکنش‌ها را تائید کنند (قالب‌بندی قوانین را نقض نمی‌کند)، اما برخی از داده‌ها را درک نمی‌کنند. برخی از فیلدها و بخش‌ها فقط در صورت تغییر گره‌ها به نرم‌افزار جدیدتر قابل خواندن هستند و به آن‌ها امکان تجزیه‌وتحلیل داده‌های اضافی را می‌دهد. حتی چند سال پس از فعال‌سازی سگویت، همه گره‌ها به‌روز نشده‌اند. انجام این کار مزایایی دارد، اما از آنجا که هیچ تغییر اساسی در  شبکه ایجاد نمی‌شود، الزامی هم برای به‌روزرسانی وجود ندارد.

هارد فورک در مقابل سافت فورک؛ کدام یک بهتر است؟

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

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

سخن پایانی

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

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

نوشته های مشابه