فورک (زنجیره بلوکی)



فورک چیست؟ 
فورک یا انشعاب معمولاً به‌نوعی، آپدیت یا به روزرسانی یک نرم‌افزار گفته می‌شود که می‌تواند به روشی سازگار با قبل (backward-compatible) یا ناسازگار با قبل (backward-uncompatible) باشد. (دربارهٔ این موضوع در ادامه صحبت می‌کنیم). به‌طور خلاصه، واژهٔ فورک یا انشعاب فقط یک اصطلاح برای زمانی است که یک نرم‌افزار یا یک پروتکل، آپدیت می‌شود. در حوزهٔ ارزهای دیجیتال و بلاک‌چین فورک زمانی اتفاق می‌افتد که شبکه به دو بخش تقسیم شود.

انواع فورک

سافت فورک (Soft fork) 
سافت فورک یک بروزرسانی در نرم‌افزار بوده که با نسخه‌های قدیمی سازگار (backwards compatible) است. این بدین معناست که شرکت‌کنندگانی که نرم‌افزار خود را آپدیت نکرده باشند نیز می‌توانند در اعتبارسنجی (Validation) و تأیید (Verification) تراکنش‌ها شرکت کنند. پیاده‌سازی سافت فورک به نسبت آسان‌تر بوده چرا که تنها نیاز است اکثریت شرکت‌کنندگان نرم‌افزار خود را آپدیت کنند. همهٔ شرکت‌کنندگان چه نرم‌افزار خود را آپدیت کرده و چه نکرده باشند، می‌توانند بلاک‌های نو را تشخیص دهند و فعالیت‌هایشان با شبکه سازگار است. نکتهٔ قابل تأمل این است که عملکرد شرکت‌کننده‌ای که نرم‌افزار خود را آپدیت نکرده تحت تأثیر قرار می‌گیرد. یک مثال برای سافت فورک این است که مثلاً سایز بلاک‌ها از ۱ مگابایت به ۸۰۰ کیلوبایت تغییر پیدا کرده‌است. نودهایی از شبکه که نرم‌افزار خود را آپدیت نکرده‌اند در سافت فورک می‌توانند تراکنش‌های نو را ببینند. مشکل زمانی به وجود می‌آید که ماینری که نرم‌افزار خود را آپدیت نکرده‌است، بخواهد بلاک نویی را ثبت نماید و بلاک او توسط شبکه رد می‌شود. از این رو سافت فورک یک مکانیزم ارتقاء تدریجی را نشان می‌دهد که افرادی که نرم‌افزار خود را آپدیت نکرده‌اند با محدود شدن قابلیت‌هایشان، انگیزهٔ کافی برای اینکار را پیدا کنند.

هارد فورک 
(به انگلیسی: Hard Fork) زمانی اتفاق می‌افتد یک زنجیره از بلوک‌ها از زنجیرهٔ بلوکی جدا شوند و به‌طور مستقل فعالیت کنند. برای ایجاد یک ارز دیجیتال، برنامه‌نویسان یک سری کد روی زنجیرهٔ بلوکی می‌نویسند که این کد کاملاً قابل دسترس است (متن‌باز) و همه می‌توانند آن را ببینند؛ بنابراین یک ارز مجازی با ماهیت یک کوین روی بستر یک دفتر کل توزیع شده (زنجیرهٔ بلوکی) پیاده می‌شود. اگر تغییرات یا اصلاحاتی روی کد نوشته شده اعمال شود، فورک اتفاق می‌افتد.

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

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

انواع هاردفورک

هاردفورک برنامه‌ریزی شده (Planned Hard Forks) 
هاردفورک برنامه‌ریزی شده، یک بروزرسانی در پروتکل است که از ابتدا در نقشهٔ راه (Roadmap) پروژه در نظر گرفته می‌شود. از آنجایی که این بروزرسانی در راستای قابلیت‌ها و ویژگی‌های زنجیرهٔ بلوکی می‌باشد، تمامی شرکت‌کنندگان به رهبری توسعه‌دهندگان اصلی به زنجیرهٔ نو رفته و نرم‌افزار خود را بروزرسانی می‌کنند چرا که این تغییرات در سطح کدنویسی پایهٔ شبکه صورت می‌پذیرند. در این فورک زنجیرهٔ پیشین از میان می‌رود و دلیلی نیز برای حمایت از آن وجود ندارد. در این فورک، کوین نویی به وجود نخواهد آمد.

مثال‌های این نوع هارد فورک :فورک مونرو: در ژانویهٔ ۲۰۱۷، هارد فورکی در شبکهٔ اتریوم جهت اضافه‌شدن ویژگی نویی به نام حلقهٔ معاملات محرمانه (RCT) برای بهبود حریم خصوصی و امنیت شبکه، به وقوع پیوست.

هاردفورک بحث‌برانگیز (Contentious Hard Forks) 
هاردفورک بحث‌برانگیز به علت اختلاف نظر میان اعضای شبکه اتفاق می‌افتد و موجب می‌شود بخشی از شرکت‌کنندگان، زنجیرهٔ نویی که از نظر خودشان بهتر است را با تغییرات عمده‌ای در کد ایجاد کنند.

منابع 

زنجیره‌های بلوکی