فورک چیست؟ هارد فورک چیست؟ سافت فورک چیست؟ فورک به چه دلیلی رخ میدهد و چرا برایمان اهمیت دارد؟ تأثیر فورک بر عملکرد بلاک چین چگونه است و آیا باعث تغییر قیمت ارزهای دیجیتال خواهد شد؟
اگر در فضای ارزهای دیجیتال نسبتاً تازهوارد هستید، احتمالاً گاهی با اصطلاحاتی مواجه میشوید که معنای آنها در داخل و بیرون از دنیای بلاک چین، زمین تا آسمان فرق دارد! یکی از این اصطلاحات فورک است که احتمالأ در دنیای فیزیکی شما را یاد چنگال (!) یا انشعابات لولهکشی ساختمان میاندازد! مسأله وقتی بغرنجتر میشود که هاردفوک و سافت فورک را هم به این مجموعه اصطلاحات اضافه کنیم و بخواهیم از معنی ظاهریشان نقش آنها را در بلاک چین حدس بزنیم. اگر شما هم در درک مفهوم فورک و نقش فورکها در بلاک چین با مشکل مواجهید، این مقاله را تا انتها بخوانید.
پیش از هرچیز، بهتر است با معنی فورک در نرمافزارها آشنا شویم. اصطلاح فورک در توسعه نرمافزارهای متنباز، برای اشاره به تقسیمشدن یک پروژه به دو یا چند نسخه دیگر به کار میرود که معمولاً مسیر نسخه اصلی پروژه را قبول ندارند و آن را طی نمیکنند. در حقیقت با کپیکردن کد منبع یک پروژه و ایجاد تغییراتی در آن، برنامهای جدید از دل برنامه قبلی بیرون میآید. در بلاک چین هم که نوعی پروتکل نرمافزاری است، فورک به «تقسیم بلاک چین» منجر میشود؛ شرایطی که در آن بلاک چین به دو زنجیره مختلف تقسیم میشود و هرکدام قوانین اجماع مطلوب خود را دنبال میکنند.
این روش اغلب زمانی بهکار گرفته میشود که یک گروه خاص یا تیم پروژه، مایل به راهاندازی مسیر جدید یا نسخه جدیدی از نرمافزار بهصورت همزمان باشند. فورکهایی که در این مقاله شرح میدهیم، فورکهایی هستند که یا برای تغییر قوانین اجماع ، یا برای اعمال قوانین جدید در همان بلاک چین بهکار میروند.
بهبیان ساده، فورک (fork) یکی از راههای بهروزسانی، اعمال تغییرات و ارتقای بلاک چین است که باعث تغییر در کد یا پروتکل اصلی شبکه میشود. بعضی از این تغییرات با پروتکل قبلی سازگاری دارند که اصطلاحاً آنها را سافت فورک (soft fork) یا انشعاب نرم مینامیم و برخی دیگر، باعث ایجاد تغییرات پایهای در عملکرد بلاک چین میشوند بهنحوی که با پروتکل قبلی ناسازگار خواهند بود. این دسته از فورکها را هارد فورک (hard fork) مینامیم.
فورک چیست؟
همانطور که احتمالاً میدانید، اطلاعات ثبت شده در بلاک چین قابل تغییر نیستند و وقتی یک بلاک چین فعالیت خود را آغاز میکند، تا زمانی که کاربران آن را بپذیرند، هیچ کس نمیتواند جلوی کار آن را بگیرد. در هر کدام از ارزهای دیجیتال یک سری قوانین که اصطلاحاً به آن پروتکل میگوییم را برنامهنویسان تعیین کردهاند و یک بلاک چین براساس همان پروتکل و قوانین تا ابد به کار خود ادامه میدهد.
مثلاً چند مورد از قوانین اصلی شبکه بیت کوین شامل موارد زیر است:
- زمان هر بلاک ۱۰ دقیقه باشد؛
- هر بلاک ۱ مگابایت ظرفیت داشته باشد؛
- عرضه کل ۲۱ میلیون واحد باشد.
اما اگر کسی با قوانین بیت کوین یا هر ارز دیجیتال دیگری مخالف باشد و بخواهد نسخه دلخواه خود را با استفاده از کد بلاک چین اولیه ایجاد کند، چگونه این کار را انجام میدهد؟ اگر در شبکه یک ارز دیجیتال، یک باگ یا رخنه امنیتی کشف شود که داراییهای کاربران را تهدید کند، چگونه میتوان آن را رفع کرد؟ اگر برای افزایش قابلیتهای یک بلاک چین و پیشرفت آن نیاز به ایجاد تغییراتی در کد بلاک چین داشته باشیم چه؟
راهحل ساده است. بهروزرسانی یا ایجاد بلاک چین جدید که اصطلاحاً به آن فورک میگویند. وقتی گروهی از برنامهنویسان از شرایط و قوانین یک ارز دیجیتال ناراضی باشند یا اینکه شبکه با مشکلاتی مواجه باشد که حل آن ضروری است، راهحلی به نام فورک پیش روی این افراد است.
فورکها میتوانند به روشی سازگار با قبل (backward-compatible) و یا ناسازگار با قبل (backward-uncompatible) در شبکه اعمال شوند. (درباره این موضوع در ادامه صحبت میکنیم). بهطور خلاصه، واژه فورک یا انشعاب فقط یک اصطلاح برای زمانی است که یک نرمافزار یا یک پروتکل، بهروزرسانی میشود. در حوزه ارزهای دیجیتال و بلاک چین فورک زمانی اتفاق میافتد که شبکه به دو بخش تقسیم شود.
بهتر است همینجا یک نکته گمراهکننده را تشریح کنیم. مفهوم فورک در علم نرمافزار، با مفهومی که در بلاک چین مدنظر ماست، تفاوت دارد. در علم نرمافزار، هر پروژه نرمافزاری که از کد متن-باز پروژه دیگری ایجاد شده باشد، فورک محسوب میشود؛ اما در دنیای بلاک چین، اصطلاح فورک را فقط در مورد پروژههایی به کار میبریم که تغییراتی را روی یک زنجیره اعمال کرده باشند یا آن را به دو بخش تقسیم کرده باشند. طبق این تعریف، بلاک چین بیت کوین کش (که مستقیماً پروتکل بیت کوین را تغییر میدهد) یک فورک بیت کوین محسوب میشود ولی بلاک چین لایت کوین (که جدا از بلاک چین اصلی بیت کوین ساخته شده و فقط از کد منبع بیت کوین استفاده کرده) فورک بیت کوین محسوب نمیشود.
فورک به چه دلایلی اتفاق میافتد؟
فورک راهی برای اعمال بهروزرسانی یا ارتقای نرمافزاری، افزودن ویژگیهای جدید، بالا بردن قابلیتهای کنونی و ارتقای پروتکلهای امنیتی در یک جهان غیرمتمرکز است. ازآنجاکه بلاک چین شبکهای غیرمتمرکز و توزیعشده است، نمیتوانیم مثل کامپیوترهای خانگی یا سرورهای یک شرکت، بهراحتی اقدام به بهروزرسانی آن کنیم. بلکه این بهروزرسانی باید در نرمافزار همه یا بخشی از بازیگران اصلی شبکه ( نودها یا گرهها ) نیز اعمال شود.
وقتی قوانین تغییر یافته و فعال شوند، بلاک چین به دو انشعاب یا فورک تبدیل میشود. این قوانین در یک شماره بلاک مشخص (Block height) تغییر یافته و تاریخچه زنجیره جدید (فورکشده یا بهروزرسانیشده) در آن شماره بلاک، از تاریخچه زنجیره قدیمی جدا میشود.
اصلیترین سناریوهایی که به رخدادن فورک منجر میشود، شامل موارد زیر هستند:
فورک بهعنوان راهحلی برای اختلافات فنی
زمانی که توسعهدهندگان، بنیانگذاران یا حتی افراد تأثیرگذار در اکوسیستم یک بلاک چین، بر سر مسائل فنی شبکه دچار اختلاف نظر میشوند، فورک کردن بلاک چین و ایجاد زنجیرهای جدید، یکی از راهحلهای احتمالی خواهد بود.
بهعنوان مثال، بیت کوین کش (BCH) یکی از فورکهای بیت کوین است که در سال ۲۰۱۷ بهدلیل اختلاف نظرهای گسترده درباره مقیاسپذیری بیت کوین انجام شد. گروهی از توسعهدهندگان و ماینرهای بزرگ بیت کوین که از سرعت و کارمزد تراکنشها ناراضی بودند، با اعمال تغییرات گسترده در قوانین بیت کوین و افزایش سایز بلاک (از ۱ مگابایت به ۸ مگابایت)، بلاک چین و نسخه جدیدی از پروتکل را ارائه دادند.
همچنین در سال ۲۰۱۸ (یک سال بعد از فورک بیت کوین کش)، جامعه کاربران و توسعهدهندگان بیت کوین کش هم به دو دسته تقسیم شد و گروهی (به رهبری کریگ رایت ) با پیشنهاد حذف محدودیت بلاکها و اعمال دوباره برخی از قابلیتهای فنی مدنظر ساتوشی ناکاموتو (خالق بیت کوین) که توسعهدهندگان بعدی از پروتکل بیت کوین حذف کرده بودند، فورک دیگری را ایجاد کردند که بهدنبال آن، بلاک چین و ارز دیجیتال جدید BSV (بیت کوین ساتوشی ویژن) ایجاد شد.
بازگردانی مبالغ، از طریق فورک
گاهی بهدلیل وجود باگهای فنی در پروتکل بلاک چین، یا برنامههای غیرمتمرکز ی که بر روی آن ایجاد شدهاند، بخش عظیمی از داراییهای کاربران، تحت تأثیر حملات هک از دست میرود. در چنین شرایطی، ممکن است توسعهدهندگان اصلی شبکه ترجیح دهند که با اعمال تغییراتی در بلاک چین، تراکنشهای کلاهبرداری را حذف کرده و سرمایهها را بازگردانند.
البته چنین تصمیمی ابداً ساده نیست؛ چرا که حذف یک تراکنش یا یک بلاک از بلاک چین، کاری شبیه به دستکاری یا سانسور شبکههای متمرکز است که میتواند فلسفه وجودی بلاک چین را زیر سؤال ببرد. با این حال، این اتفاق قبلاً در سال ۲۰۱۶ برای بلاک چین اتریوم اتفاق افتاد.
در سال ۲۰۱۶، بعد از رخدادن هک DAO و از دست رفتن میلیونها دلار از سرمایه کاربران، جامعه توسعهدهندگان و بنیانگذاران اتریوم مجبور به ارائه فورک شد تا بتواند اعتماد مردم را به دست آورد. اگرچه این فورک انتقادات زیادی را به همراه داشت، اما با پشتیبانی ویتالیک بوترین از این تصمیم، بلاخره اجرایی شد و اکثر کاربران هم به شبکه جدید مهاجرت کردند. نسخه فورکشده اتریوم (بهدلیل پشتیبانی اعضای اصلی و اکثریت کاربران) نام اتریوم ( ETH ) را با خود حفظ کرد و نام نسخه قدیمی شبکه، به اتریوم کلاسیک ( ETC ) تغییر کرد که ارز دیجیتال آن هنوز هم در بازار خریدوفروش میشود و طرفداران خاص خود را دارد.
شبکه بهمنظور بهروزرسانی و افزودن قابلیتهای جدید
یک شبکه بلاک چینی در طول زمان نیازمند بهروزرسانیهای فنی است تا هم شبکه را از خطرات پیش رو حفظ کند و هم امکان ایجاد قابلیتهای جدید را فراهم کند. ازآنجاکه که این آپدیتها نیازمند تغییرات پروتکل هستند، انجام یک فورک در شبکه ضروری خواهد بود. اما چنین فورکهایی اغلب با رضایت اکثریت کاربران و توسعهدهندگان بر روی شبکه انجام میشوند و عملاً زنجیره بلاک چین بهجای دوشاخه شدن، تغییر مسیر میدهد.
آپدیت سگویت (SegWit) که در سال ۲۰۱۷ بر روی شبکه بیت کوین انجام شد، یک نمونه از این فورکهاست. سگویت که کوتاهشدهی عبارت Segregated Witness است، در واقع یک طرح بهبود بیت کوین است که در راستای رفع دو مشکل عمده اجرا و پیادهسازی شد. هدف از این فورک، در درجه اول فراهمآوردن شرایطی برای محافظت از انعطافپذیری (Malleability) تراکنشها و در گام بعدی افزایش ظرفیت بلاک (Block Capacity) در شبکه بلاک چین بیت کوین بود.
فورک شبکه بهمنظور تقسیم اجماع
در برخی از بلاک چین ها، از فورکها بهمنظور تقسیم قدرت اجماع شبکه بین چندزنجیره موازی استفاده میشود. در واقع در چنین مواردی، زنجیره بلاک چین برای افزایش مقیاسپذیری و سرعت تأیید تراکنشها، به چند زنجیره موازی و هماهنگ تقسیم میشود که هرکدام، اعتبارسنجهای مخصوص به خود را دارند. این روش که قرار است در نسخه دوم اتریوم (Ethereum2.0) از آن استفاده شود، شاردینگ (sharding) نام دارد. این نوع از فورکها، قوانین زنجیره اصلی و جامعه کاربران را تقسیم نمیکنند؛ اما از لحاظ ساختار پیادهسازی، فورک محسوب میشوند.