هارد فورک و سافت فورک به بیان ساده
به گزارش واحد ترجمه گذارنیوز، اگر شما هم با دنیای رمزارزها سر و کار داشته باشید و به ویژگیهای فنی توکنهای مختلف علاقهمند باشید احتمالا با واژههایی مانند هاردفورک و سافت فورک مواجه شدهاید.
-
مقدمه
زمانی که درحال استفاده از نرم افزار موبایل بانک خود هستید و با پیغام بروز رسانی جدید مواجه میشوید، بدون درنگ آنرا تایید نموده و نرمافزار خود را بروزرسانی میکنید. حتی ممکن است تلفن شما بدون اینکه متوجه شوید بصورت خودکار این برنامه را بروزرسانی کند. از نظر شما این یک فرایند ضروری است، چرا که در صورت عدم بروزرسانی این برنامه، احتمالا از دسترسی به خدمات آن محروم خواهید شد.
اما در دنیای اُپن سورس رمزارزها، اوضاع کاملا متفاوت است. برای آنکه بتوانید از بیت کوین استفاده کنید نیازی به مطالعه و بررسی تمام کدهای آن ندارید، اما به هرحال داشتن این انتخاب و وجود این امکان، مهم است. در اینجا هیچ سلسله مراتبی وجود ندارد؛ همینطور بانکی در کار نیست که بتواند بروزرسانی را ارائه نموده و ویژگیهای برنامه را به خواست خود تغییر دهد. در نتیجه پیاده سازی ویژگیهای جدید در شبکههای بلاکچینی میتواند تبدیل به یک چالش شود.
در این مقاله به چگونگی ارتقاء و بروزرسانی شبکههای مختلف، علیرغم وجود یک مرجع مرکزی میپردازیم. هارد فورک (Hard Fork) و سافت فورک (Soft Fork)، دو مکانیزمی هستند که برای این منظور مورد استفاده قرار میگیرند. واژه فورک در لغت به معنی چنگال است و معادل کلمات هارد و سافت به ترتیب، سخت و نرم است. در ادامه به بررسی عملکرد این دو فرایند و علت نامگذاری آنها میپردازیم.
-
در یک شبکه بلاکچین، تصمیم گیرنده چه کسی است؟
برای درک نحوه عملکرد فورک، ابتدا باید از درک کافی نسبت به شرکتکنندگان در فرایند تصمیمگیری یا حاکمیت شبکه برخوردار باشید.
در مورد بیت کوین، میتوان بطور کلی این شرکتکنندگان را به سه دسته تقسیم کرد: توسعهدهندگان، ماینرها و کاربرانی که با عنوان نود کامل یا فول نود (full node) شناخته میشوند. در کنار این موارد گروهی به نام لایت نود (Light node) نیز وجود دارد که بعنوان مثال به کیف پولهای روی تلفن همراه یا لپتاپ شما اطلاق میشود، اما در واقع این موارد تا آنجایی که به شبکه مربوط میشود، بعنوان تصمیم گیرنده شناخته نمیشوند.
-
توسعه دهندگان
توسعه دهندگان مسئول نوشتن و بروزرسانی کدها هستند. این کدها در معرض دید عموم قرار دارند و هر کسی میتواند در این فرایند مشارکت داشته باشد و تغییرات مد نظر خود را جهت بررسی در اختیار دیگر توسعه دهندگان قرار دهد.
-
ماینرها
ماینرها مسئول حفظ امنیت شبکه هستند. آنها وظیفه اجرای کدهای رمزارز ها را برعهده داشته و با اختصاص منابع خود به شبکه، باعث اضافه شدن بلوکهای جدید به بلاکچین میشوند. مثلا در شبکه بیت کوین ماینر ها این کار را به روش اثبات کار انجام میدهند و در ازای تلاش خود، پاداشی تحت عنوان پاداش بلوک دریافت میکنند.
-
کاربران فول نود (Full Node)
فول نودها ستون فقرات شبکههای رمزارز هستند. وظیفه آنها تأیید، دریافت و ارسال تراکنشها و بلوکها و حفظ یک نسخه کپی از بلاکچین است.
گاهی ممکن است شاهد همپوشانی این نقشها باشید. بعبارتی ممکن است شما یک توسعه دهنده و در عین حال فول نود هم باشید و یا یک ماینر باشید که به عنوان فول نود هم فعالیت میکند. حتی ممکن است هر ۳ نقش را در اختیار داشتهباشید.
در کنار همه این موارد، ممکن است هیچ یک از نقشهای فوق را در اختیار نداشته و فقط از لایت نودها یا سرویسهای متمرکز استفاده کنید.
با نگاهی به توضیحات بالا، از اهمیت وجود توسعهدهندگان و ماینرها مطلع میشوید. همانطور که گفته شد، توسعهدهندگان، کدها را ایجاد مینمایند. اگر آنها نباشند، برنامهای برای اجرا نیز وجود نخواهد داشت. علاوه بر آن امکان رفع ایرادات برنامه و یا افزودن ویژگی جدید به برنامه نیز وجود نخواهدداشت. ماینرها هم وظیفه ایجاد امنیت شبکه را برعهده دارند. در صورت عدم وجود رقابت سالم بین ماینرها، زنجیره در معرض سرقت اطلاعات و یا توقف فعالیت قرار خواهدگرفت.
در صورتی که هریک از این اعضا قصد داشته باشند به زور و اجبار، سایر کاربران شبکه را وادار به اجرای خواستههای خود بکنند، با پیامدهای خوبی مواجه نخواهند شد. به عقیده بسیاری، قدرت اصلی بر روی فول نودها متمرکز است. این مسئله تا حد زیادی به انتخاب شبکه وابسته است. به این معنی که کاربران میتوانند نرمافزاری که میخواهند اجرا کنند را انتخاب نمایند.
توسعه دهندگان هیچگاه به زور وارد خانه شما نمیشوند و به زور اسلحه شما را مجبور به دانلود نرمافزار باینری بیت کوین کور (Bitcoin Core) نمیکنند. (بیت کوین کور نرم افزار اصلی طراحی و توسعه بیت کوین است و گرههای کامل را ایجاد میکند.)
اگر ماینرها نیز بخواهند به زور سیاستها و تغییرات مدنظر خود را به کاربران تحمیل کنند و شیوه «حرف، حرف من است» را به کار بگیرند، طبیعتا کاربران نیز روش و شیوه دیگری را در پیش خواهند گرفت.
هیچکدام از این گروهها همه کاره و رئیس نیستند. آنها ارائه کننده خدمات هستند. اگر مردم تصمیم بگیرند از یک شبکه استفاده نکنند، کوین مربوط به آن شبکه ارزش خود را از دست میدهد. این افت قیمت مستقیما بر ماینرها اثر میگذارد (ارزش دلاری پاداش آنها کمتر میشود). در ادامه، توسعه دهندگان نیز از سوی کاربران نادیده گرفته خواهند شد.
دیدیم که نرمافزارها در این صنعت، اختصاصی نیستند. شما میتوانید تغییرات مد نظر خود را ایجاد کنید و در صورتی که کاربران نرمافزار شما را اجرا کنند، آنگاه میتوانید با یکدیگر ارتباط برقرار نمایید. در این صورت شما نرمافزار را فورک نموده (شاخه جدیدی تولید کردهاید) و در نتیجه این فرایند، یک شبکه جدید ایجاد میکنید.
-
فورک (Fork) چیست؟
فورک نرمافزار در نقطه ای رخ میدهد که اطلاعات نرمافزار کپی شده و اصلاحات جدیدی در آن ایجاد میشود. در این فرایند، پروژه اصلی به کار خود ادامه میدهد اما مسیرش از پروژه جدید جدا میشود و هر کدام مسیر متفاوت خود را ادامه خواهندداد. تصور کنید اعضای تیم تولید محتوای وبسایت متعلق به رمزارز مورد علاقه شما در مورد نحوه ادامه کار، دچار اختلاف نظر شدهاند. در این حالت ممکن است بخشی از این گروه، اطلاعات سایت اصلی را کپی کرده و بر روی یک دامنه جدید بارگزاری کنند. اکنون محتوای فعلی هر دو دامنه یکی است اما در آینده، این دو گروه اطلاعات متفاوتی را بر روی دامنههای خود منتشر خواهند کرد.
این پروژها در یک زمینه و با تاریخچهای مشترک ایجاد شدهاند. مانند جادهای که در امتداد خود، به دوراهی میرسد و این دو راه، برای همیشه مسیر متفاوتی را در پیش میگیرند.
توجه داشته باشید که چنین اتفاقی در پروژههای متن باز متداول است و حتی پیش از ظهور بیت کوین و اتریوم نیز رایج بوده است. اما تمایز هارد فورک و سافت فورک، مختص فضای بلاکچین است. این دو واژه علیرغم تشابه اسمی و هدف مشترکی که دارند، از تفاوتهای بسیاری برخوردارند که در ادامه به بررسی این موارد میپردازیم.
-
هارد فورک چیست؟
هارد فورک، به روز رسانیهای نرمافزاری هستند که با نسخههای پیشین همخوانی و سازگاری ندارند. معمولا این اتفاق زمانی رخ میدهد که نودها قوانین جدیدی را وضع میکنند که با قوانین نودهای قدیمی در تضاد است. نودهای جدید فقط میتوانند با کسانی که نسخه جدید را اجرا میکنند ارتباط برقرار نمایند. در نتیجه، بلاکچین تقسیم شده و دو شبکه مجزا ایجاد میشوند: یکی با قوانین قبلی و دیگری با رعایت و اجرای قوانین جدید.
بنابراین اکنون دو شبکه به طور مجزا در حال اجرا هستند. هردوی این شبکهها به انتشار تراکنشها و بلوکها ادامه میدهند اما دیگر بر روی یک بلاکچین یکسان قرار ندارند. تا زمان وقوع فورک، همه نودها بر روی یک بلاکچین یکسان قرار داشتند (اطلاعات بلاکچین که تا اینجا ثبت شده است، پس از این نیز بدون تغییر باقی میماند) اما پس از فورک، نود ها تراکنشها و بلوکهای متفاوتی خواهند داشت.
با توجه به مشترک بودن تاریخچه هر دو زنجیره، معادل عددی کوینهایی که در زنجیره قدیمی در اختیار داشتید، در زنجیره جدید نیز در کیف پول شما وجود خواهد داشت. فرض کنید در زمان وقوع فورک در بلوک شماره 600،000 شما 5 بیت کوین دارید. ممکن است شما این 5 کوین را در بلوک 600،001 زنجیره قدیمی به آدرس دیگری منتقل کنید، اما این تراکنش در بلوک 600،001 زنجیره جدید وجود نخواهد داشت. به عبارت دیگر، با فرض عدم تغییر رمزنگاری کوین مورد نظر، کلید خصوصی شما حاوی 5 کوین در زنجیره جدید خواهد بود.
نمونهای از هارد فورک در سال 2017 و در شبکه بیت کوین رخ داد و این رمزارز را به دو زنجیره مجزا تقسیم کرد. زنجیره اصلی همان بیت کوین بود و زنجیره جدید بیت کوین کَش (Bitcoin Cash یا BCH) نام گرفت. این فورک، پس از بحث و مجادله زیاد در مورد انتخاب راهکاری بهتر برای مقیاس پذیری اتفاق افتاد. طرفداران بیت کوین کش به دنبال افزایش اندازه بلوک بودند، در حالی که طرفداران بیت کوین با این تغییر مخالف بودند.
افزایش اندازه بلوک مستلزم اصلاح قوانین است. این موضوع مربوط به قبل از سافت فورک سِگویت (SegWit) بود و به همین دلیل، فقط بلوکهای کوچک تر از 1 مگابایت توسط نودها مورد پذیرش بودند. بنابراین اگر بلوکی با 2 ماگابایت حجم ساخته میشد که از لحاظ سایر ویژگیها مورد تایید بود، اما بازهم نودها این بلوک را تایید نمیکردند.
تنها نودهایی که نرمافزار خود تغییر داده بودند و میتوانستند از بلوکهایی با حجم بیشتر از 1 مگابایت پشتیبانی کنند، قادر به تایید اینگونه بلوکها بودند. البته چنین تغییری باعث میشد این نودها دیگر با نسخه قدیمی سازگار نباشند و فقط با نودهای فعال بر روی همین پروتکل ارتباط برقرار میکردند.
-
سافت فورک چیست؟
سافت فورک (Soft Fork) نوعی ارتقاء سازگار با نسخههای قبلی است. یعنی نودهای ارتقاء یافته، همچنان میتوانند با نودهایی که هنوز ارتقاء پیدا نکردهاند، ارتباط برقرار کنند. ماهیت آنچه در سافت فورک اتفاق میافتد، افزودن یک قانون و قاعده جدید است که تضاد و تناقضی با قوانین قبلی ندارد.
بعنوان مثال، کاهش اندازه بلوک، فرایندی است که توسط سافت فورک قابل اجرا است. یک بار دیگر از بیت کوین بعنوان مثال استفاده میکنیم: اگرچه برای تعیین حداکثر اندازه یا بلوک محدودیتهایی وجود دارد، اما برای تعیین حداقل اندازه یک بلوک هیچ محدودیتی وجود ندارد. به این ترتیب اگر بخواهید تنها بلوکهای کوچکتر از سایز بخصوصی را تایید کنید، فقط کافیست بلوکهای بزرگ تر را رد کنید.
در عین حال، انجام چنین کاری، باعث قطع شدن خودکار شما از شبکه نخواهد شد. شما همچنان با نودهایی که قانون مدنظر شما را اجرا نمیکنند ارتباط برقرار میکنید، اما برخی از اطلاعاتی که آنها برای شما میفرستند را فیلتر میکنید.
برای اشاره به یک نمونه واقعی خوب میتوانیم از سافت فورک سِگویت (Segregated Witness) نام ببریم که اندکی پس از تقسیم زنجیره بیت کوین به دو زنجیره مجزای بیت کوین و بیت کوین کش اتفاق افتاد. سِگویت یک بروزرسانی بود که قالب بلوک و تراکنشها را تغییر داد اما ساختار هوشمندانهای داشت. نودهای قدیمی هنوز هم میتوانستند تراکنشها و بلوکها را تایید کنند (تغییر قالب قوانین زنجیره را نقض نمیکند) اما محتوای آن را درک نمیکردند. به این معنی که خواندن برخی فیلدها و تجزیه اطلاعات جدید، تنها برای نودهای بروزرسانی شده امکان پذیر بود.
حتی با گذشت چند سال از زمان اجرای سگویت، هنوز هم بسیاری از نودها بروزرسانی نشده اند. گرچه انجام این کار مزیتهایی دارد، اما الزام و فوریتی برای انجام آن وجود ندارد، زیرا این تغییرات باعث تغییر ساختار شبکه نشدهاند.
-
هارد فورک یا سافت فورک؛ کدام بهتر است؟
اساسا هر دو مدل فورک مطرح شده، اهداف متفاوتی راا دنبال میکنند. هارد فورکهایی که بر اثر منازعات و اختلاف نظرها بوجود میآیند باعث جدایی کاربران جامعه میشوند، اما مواردی که با برنامهریزی انجام میشوند، آزادی در اصلاح نرمافزار، به شرط توافق همه اعضا را در پی خواهند داشت.
سافت فورک گزینه راحتتری بوده و بطور کلی با محدودیت بیشتری نیز همراه است. زیرا تغییرات جدید، نمیتوانند با قوانین قبلی در تضاد باشند. همچنین اگر بروزرسانی مدنظر به گونهای باشد که با نودهای جدید و قدیمی سازگاری داشته باشد، نیازی به تقسیم و چند تکه شدن زنجیره نخواهد بود.
-
سخن پایانی
هارد فورک و سافت فورک، هر دو برای موفقیت شبکههای بلاکچینی در دراز مدت، حیاتی هستند. این عوامل امکان ایجاد تغییر و بروزرسانی در سیستمهای غیرمتمرکز، علیرغم عدم حضور یک مرجع مرکزی را فراهم مینمایند.
فورکها امکان یکپارچه سازی ویژگیهای جدید را در حین توسعه برای بلاکچینها و رمزارز ها فراهم میکنند. بدون چنین مکانیزمهایی، به یک سیستم متمرکز دارای سلسله مراتب نیاز خواهیم داشت. در غیر اینصورت، در تمام طول عمر یک پروتکل، درگیر همان قوانین یکنواخت اولیه خواهیم بود.
مترجم: حسن نصیری
منبع: Binance