زمانی که یک اپلیکیشن را روی گوشی خود نصب می کنید، گاهی باید برای دست یابی به امکانات بیشتر، برنامه را به روز کنید. در برخی مواقع، این به روزرسانی بدون اینکه متوجه شوید، توسط توسعه دهنده اپ و تنظیمات تلفن همراه به طور خودکار انجام می شود، اما در ارزهای دیجیتالی که به صورت منبع باز فعالیت می کنند، همه چیز بسیار متفاوت است. در ارزهای دیجیتال، هیچ مرکز یا شخص ثالثی برای به روزرسانی کدهای بلاک چین ارز وجود ندارد؛ درنتیجه اجرای ویژگی های جدید در شبکه های بلاک چین می تواند یک چالش باشد. در این مطلب قصد داریم به بررسی دو مفهوم اصلی هارد فورک و سافت فورک در زمینه به روزرسانی بلاک چین ها، از جمله بلاک چین بیت کوین بپردازیم.
چه کسی در شبکه بلاک چین تصمیم می گیرد؟
برای درک نحوه عملکرد فورک ها، مهم است ابتدا با گروه های تأثیرگذار در فرایند تصمیم گیری (حاکمیت) شبکه آشنا شوید. در شبکه بیت کوین، به طورکلی باید بین سه زیرمجموعه از شرکت کنندگان، توسعه دهندگان، ماینرها و کاربران فول نود تمایز قائل شوید. این سه گروه به شبکه برای عملکرد صحیح و بدون مشکل کمک می کنند.
در مقابل لایت نودها (مانند کیف پول های موبایل و …) قرار دارند که به طور گسترده توسط کاربران شبکه استفاده می شوند، اما شرکت کننده در شبکه محسوب نمی شوند.
توسعه دهندگان شبکه
توسعه دهندگان مسئول ایجاد و به روزرسانی کد هستند. کد ارزهای دیجیتال به صورت عمومی در دسترس است؛ بنابراین کاربران می توانند تغییرات را برای بررسی به سایر توسعه دهندگان ارسال کنند.
ماینرهای فعال در شبکه
ماینرها کسانی هستند که مسئولیت امنیت شبکه را به عهده دارند. همچنین مسئول اجرای کد ارز دیجیتال هستند و منابعی را برای افزودن بلاک های جدید به بلاک چین اختصاص می دهند؛ برای مثال در شبکه بیت کوین، این کار از طریق پروتکل اثبات سهام کار یا Proof of Work انجام می شود.
کاربران فول نود
فول نودها، ستون فقرات شبکه ارزهای دیجیتال هستند. آن ها بلوک ها و تراکنش ها را تأیید، ارسال و دریافت می کنند و یک نسخه از بلاک چین را حفظ و ذخیره می کنند. به طورکلی یک کاربر می تواند در هر سه دسته هم زمان حضور داشته باشد؛ برای مثال می توانید یک توسعه دهنده و یک کاربر فول نود یا یک ماینر باشید یا هر سه یا هیچ کدام از این سه زیرمجموعه شرکت کنندگان باشید.
درواقع بسیاری از کاربرانی که از نظر ما کاربران ارزهای دیجیتال هستند، هیچ یک از این نقش ها را بر عهده نمی گیرند. درعوض آن ها ترجیح می دهند از لایت نودها یا خدمات متمرکز استفاده کنند؛ بنابراین به طور خلاصه می توان گفت توسعه دهندگان کد را ایجاد می کنند؛ بدون آن ها، شما هیچ نرم افزاری برای اجرا و کسی برای رفع اشکال یا اضافه کردن ویژگی های جدید ندارید.
ماینرها شبکه را ایمن می کنند. بدون رقابت سالم در ماینینگ، این زنجیره ممکن است تحت کنترل اشخاص خاصی دربیاید یا به طور کامل متوقف شود. با این حال این دو گروه، همه کاره شبکه نیستند و اگر مردم تصمیم بگیرند از شبکه استفاده نکنند، ارز دیجیتال ارزش خود را از دست خواهد داد. از دست دادن ارزش تأثیر مستقیمی بر ماینرها دارد (پاداش آن ها وقتی به دلار باشد ارزش کمتری دارد).
فورک چیست؟
فورک در شبکه بلاک چین زمانی اتفاق می افتد که ساختار کد اولیه اصلاح شود. درواقع پروژه اصلی ادامه دارد، اما اکنون از پروژه جدید که جهت متفاوتی دارد، جدا شده است. فرض کنید تیم وب سایت محتوای ارزهای دیجیتال مورد علاقه شما درباره نحوه ادامه کار با یکدیگر اختلاف نظر داشته باشند. یکی از اعضای تیم ممکن است محتوای سایت را در دامنه دیگری کپی کند، اما در آینده از محتواهای جدید و متفاوتی برای وب سایت خود استفاده می کنند.
در فورک پروژه ها براساس یک بستر مشترک ایجاد می شوند و یک تاریخچه مشترک دارند. توجه داشته باشید که این اتفاقات در پروژه های متن باز زیاد رخ می دهد و مدت ها قبل از ظهور بیت کوین یا اتریوم اتفاق افتاده است. با این حال، تمایز بین هارد فورک و سافت فورک تقریباً منحصر به فضای بلاک چین است.
به عبارت ساده، یک بلاک چین مانند مجموعه ای از بلاک های داده است که توسط کلیدهای رمزنگاری ایمن به هم متصل می شوند و زنجیره ای از بلوک ها را تشکیل می دهند که به همان بلوک اول متصل هستند؛ بنابراین می توان زنجیره بلاکی را مسیری مستقیم از بلاک های متصل به یکدیگر تصور کرد. از آنجا که بلوک ها از طریق قانون و ساختاری که همه بلوک ها بر آن توافق دارند به هم متصل می شوند، هرگونه ارتقای سیستم مستلزم تغییر اجماع در همه بلوک هاست.
چنین اتفاق نظری بعید است که اتفاق بیفتد؛ زیرا بلوک ها از طریق مجموعه ای از قوانین تغییرناپذیر عملکردی به هم مرتبط هستند. در چنین شرایطی، به جای بازنویسی هر بلوک، تغییرات در یک بلاک چین اغلب از طریق اجرای فورک انجام می شود. فورک رویدادی در بلاک چین است که نرم افزار اصلی را کپی کرده و تغییرات موردنظر را به آن اضافه می کند.
چه کسی ساختار یک فورک را تعیین می کند؟
از آنجا که بلاک چین توسط هیچ مرجع مرکزی اداره نمی شود، به عهده مشارکت کنندگان در شبکه است که در مورد راه پیش رو توافق کرده و تغییراتی را اعمال کنند که کارایی کلی را بهبود دهد. با این حال، بلاک چین ها دارای زیرمجموعه های مختلفی از شرکت کنندگان هستند که از استخراج کنندگان گرفته تا کاربران فول نود و توسعه دهندگان را شامل می شود؛ بنابراین چه کسی درباره اینکه چه تغییراتی باید در شبکه اعمال شود، حرف آخر را می زند؟
از آنجا که هر زیرمجموعه به طور متفاوتی به شبکه کمک می کند، برخی شرکت کنندگان قدرت رأی بیشتری از دیگران دارند؛ برای مثال ماینرهایی که شبکه را با اختصاص منابع محاسباتی برای اعتبارسنجی بلاک ایمن می کنند، امنیت نسخه های فورک را تعیین می کنند.
بیشتر بلاک چین های منبع باز شرایط تداخل مسئولیت ها و درنتیجه مسئولیت مشترک در فرایند تشکیل فورک را برای کاربران شبکه فراهم می کنند؛ بنابراین تمام مشارکت کنندگان به اندازه قدرتی که دارند، در تعیین ساختار فورک تأثیرگذار هستند.
هارد فورک چیست؟
هارد فورک به تغییری در پروتکل بلاک چین گفته می شود که نسخه های قدیمی تر را نامعتبر می کند. اگر نسخه های قدیمی تر به اجرای خود ادامه دهند، درنهایت با پروتکل متفاوت و با داده های متفاوت از نسخه جدیدتر مواجه می شوند. این اتفاق می تواند به سردرگمی قابل توجه و خطاهای احتمالی در شبکه منجر شود.
در بیت کوین، یک هارد فورک برای تغییر پارامترهای اصلی مانند اندازه بلوک، الگوریتم سختی استخراج و غیره ضروری است. تغییر در هریک از این قوانین سبب می شود بلوک ها توسط پروتکل جدید پذیرفته شوند، اما نسخه های قدیمی تر آن را رد کنند که می تواند به مشکلات جدی منجر شود؛ برای مثال از دست دادن سرمایه کاربران.
مثلاً اگر محدودیت اندازه بلوک از 1 مگابایت به 4 مگابایت افزایش یابد، یک بلوک 2 مگابایتی توسط نودهایی که نسخه جدید را اجرا می کنند، پذیرفته می شود، اما توسط نودهایی که نسخه قدیمی تر را اجرا می کنند، رد می شود. تصور کنیم این بلوک 2 مگابایتی توسط یک نود به روزشده تأیید شده و به بلاک چین اضافه شده است.
اگر بلوک بعدی توسط گره ای که نسخه قدیمی تری از پروتکل را اجرا می کند تأیید شود، پروتکل سعی می کند بلوک خود را به بلاک چین اضافه کند، اما متوجه می شود آخرین بلوک معتبر نیست و آن را نادیده می گیرد. با این اتفاق شما دو بلاک چین خواهید داشت، یکی با بلوک های نسخه قدیمی تر و جدیدتر و دیگری با بلوک های نسخه قدیمی تر.
اینکه کدام بلاک چین سریع تر رشد می کند، به این بستگی دارد که کدام نودها بلوک های بعدی را تأیید می کنند؛ درنتیجه این احتمال وجود دارد که دو (بیشتر) زنجیره به طور موازی به طور نامحدود رشد کنند. در این شرایط احتمال خطای دو بار خرج کردن وجود خواهد داشت؛ یعنی یک کاربر یک بیت کوین را دو بار در دو بلاک چین متفاوت خرج کند، اما راه حل چیست؟
راه حل این است که یک بلاک چین مسیر خود را به طور کامل برای ادامه فعالیت از بلاک چین قبلی جدا کند؛ بنابراین با توجه به اینکه انتقال همه نودها به نسخه جدیدتر هم زمان ممکن نیست، هارد فورک اتفاق می افتد. بیت کوین کش، نمونه ای از یک هارد فورک بیت کوین است.
سافت فورک چیست؟
سافت فورک اساساً برعکس هارد فورک است که به موجب آن تغییرات جدید اجراشده با نسخه های قدیمی تر سازگار هستند؛ به عبارت ساده، سافت فورک، بلاک چین قدیمی را قانع می کند تا قوانین جدید را بپذیرد؛ بنابراین بلوک های به روزشده و بلوک های قدیمی تراکنش ها را هم زمان در خود جای می دهد.
از این رو برخلاف هارد فورک، سافت فورک با حفظ دو ساختار با مجموعه قوانین مختلف، بلاک چین قدیمی را حفظ می کند؛ برای مثال اگر یک پروتکل به گونه ای تغییر کند که قوانین را سخت تر کند، یک تغییر ظاهری داشته باشد یا تابعی را اضافه کند که به هیچ وجه بر ساختار بلاک چین تأثیری نداشته باشد، بلوک های نسخه جدید توسط نودهای نسخه قدیمی پذیرفته می شوند.
در بیت کوین، ماینرهای نسخه قدیمی متوجه می شوند بلاک های آن ها رد می شود و مجبور به ارتقا می شوند. برای اجرای اصلاحات از این نوع، تنها نیاز است که بیشتر ماینرها ارتقا یابند. نیازی که برآورده کردن آن امکان پذیر است و به مختل شدن کل شبکه نیازمند نیست. نمونه ای از یک سافت فورک موفق، به روزرسانی پروتکل بیت کوین Segregated Witness (SegWit) در سال 2015 است.
قبل از به روزرسانی SegWit، پروتکل بیت کوین هم گران تر بود. هزینه هر تراکنش نیز حدود 30 دلار بود که انجام هریک به زمان زیادی نیاز داشت. SegWit پیشنهاد داد اندازه بلوک از 1 مگابایت به 4 مگابایت افزایش یابد. ایده پشت این افزایش فضا، جداسازی یا حذف داده های امضاشده از داده های تراکنش در هر بلوک در بلاک چین بود و به این ترتیب فضا را برای خروجی تراکنش بیشتر در هر بلوک آزاد می کرد. با استفاده از سافت فورک، بلاک چین قدیمی بیت کوین توانست بلاک های جدید 4 مگابایتی و بلاک های 1 مگابایتی را هم زمان بپذیرد.
تفاوت های اصلی سافت فورک و هارد فورک
1- سازگاری رو به عقب (Backward Compatibility)
یک تفاوت عمده بین هارد فورک و سافت فورک به «سازگاری رو به عقب» مربوط می شود. این اصطلاح به توانایی یک سیستم نرم افزاری برای استفاده از رابط ها و داده های نسخه های قبلی سیستم اشاره دارد. تغییر پروتکل نرم افزار در سافت فورک سازگاری رو به عقب دارد؛ درحالی که نرم افزار جدید ممکن است روشی جدید اجرا شود، اما همچنان داده ها را در مدل قدیمی درک می کند.
هارد فورک بیشتر شبیه تغییر زبانی است که نرم افزار از طریق آن اجرا می شود؛ بنابراین درصورت تغییر زبان دیگر متوجه نخواهد شد که داده های زبان قبلی چه بوده است؛ به همین دلیل هارد فورک شبکه را به دو قسمت تقسیم می کند؛ یکی قبل از فورک و دیگری بعد. از آنجا که هیچ سازگاری رو به عقب وجود ندارد، پس از فورک شدن، دو بخش شبکه دیگر هرگز نمی توانند با هم تعامل داشته باشند.
2- سایز بلاک
یکی از دلایل فورک ارزهای دیجیتال مانند بیت کوین، تنظیم اندازه بلوک های استفاده شده در بلاک چین است. این بلوک ها داده های تراکنش را نگه می دارند و هرچه داده ها در هر بلوک بیشتر باشد، تراکنش سریع تر است. اندازه بلاک یکی از دلایل اصلی ایجاد اولین هارد فورک برای بیت کوین بود، هارد فورک بیت کوین کش (BCH) در سال 2017. به دلیل افزایش اندازه بلوک، یک بلوک در بلاک چین BCH می تواند تعداد بیشتری تراکنش را در مقایسه با یک بلوک در بلاک چین اصلی بیت کوین ثبت کند.
3- سرعت و امنیت
سرعت و امنیت یکی دیگر از دلایل ایجاد هارد فورک است. بلاک چین اتریوم به اتفاق آرا به هارد فورک به عنوان بخشی از استراتژی معکوس کردن هکی که ده ها میلیون دلار از رمزارز آن را به سرقت برد، رأی داد؛ درنتیجه بلاک چین اصلی اکنون به عنوان Ethereum Classic و فورک آن به عنوان Ethereum شناخته می شود.
هنگامی که یک شبکه نیازمند حل سریع مشکل است، هارد فورک ها گزینه خوبی خواهند بود. اگرچه در سافت فورک نسخه قدیمی همچنان در شبکه باقی می ماند، در هارد فورک به طور کامل از شبکه جدید جدا می شود.
متداول ترین فورک های بیت کوین
بیت کوین بیش از یک بار فورک شده است. علاوه بر بیت کوین کش، برخی دیگر از فورک های بیت کوین عبارت هستند از:
- لایت کوین: لایت کوین (LTC) برای فراهم کردن شرایط انجام تراکنش های سریع تر با استفاده از الگوریتم Scrypt به جای الگوریتم SHA-256 بیت کوین ایجاد شد. تراکنش ها در شبکه لایت کوین با سرعت بیشتر و هزینه کمتر انجام می شوند.
- Vertcoin: از الگوریتم اجماع متفاوتی برای استخراج استفاده می کند. هدف VTC این بود که در برابر ASIC مقاوم باشد؛ به این معنا که استخراج ارزها توسط افرادی که به منابع بیشتری برای خرید سخت افزار بهتر و گران قیمت ASIC دسترسی داشتند، تصاحب نشود.
- BSV: یک هارد فورک از شبکه بیت کوین کش است که توسط کریگ رایت راه اندازی شد؛ فردی که ادعا می کند ساتوشی ناکاموتو، خالق بیت کوین است.
- بیت کوین گلد: این فورک از الگوریتم استخراج اثبات کار مقاوم در برابر ASIC استفاده می کند تا ارزی ایجاد کند که هرکسی می تواند در خانه بدون نیاز به سخت افزار تخصصی گران قیمت آن را استخراج کند.
بسیاری از این ارزهای رمز پایه که از بیت کوین فورک شده اند، خود دچار فورک شده اند؛ برای مثال لایت کوین هارد فورک مخصوص به خود به نام لایت کوین کش را دارد، اما با وجود تمام قابلیت های جدیدی که این فورک ها ارائه کرده اند، بیت کوین هنوز هم ارز دیجیتال غالب در جهان امروز است و براساس گزارش Coinmarketcap.com، ارزش بازار آن تا 16 ژوئن 2021 به 734,951,021,330 دلار رسیده است، اما این آمار به معنای عملکردی نامناسب فورک های بیت کوین نیست؛ ارزش بازار بیت کوین کش و لایت کوین به ترتیب 11,339,133,478 دلار و 11,303,929,705 دلار است.
هارد فورک یا سافت فورک، کدام یک بهتر است؟
هریک از این دو فورک، با هدف مختلفی اجرا می شوند. در هارد فورک، شبکه و جامعه آن به طور کامل از شبکه قبلی جدا می شود، اما در سافت فورک، اتفاق ها به شکل ملایم تری رخ می دهد، اما در حالت کلی، تغییراتی که در ساختار شبکه ایجاد می شود، نمی تواند با قوانین قبلی و قدیمی در تضاد باشد؛ بنابراین اگر به روزرسانی به گونه ای باشد که با شبکه قبلی همچنان سازگار باشد؛ نگرانی درباره تقسیم شدن شبکه وجود نخواهد داشت؛ پس نمی توان گفت کدام یک بهتر است.
سخن پایانی
هارد فورک ها و سافت فورک ها برای موفقیت طولانی مدت شبکه های بلاک چین بسیار مهم هستند. این دو به ما اجازه می دهند تا با وجود نبود یک مرجع مرکزی، تغییرات و ارتقا را در سیستم های غیرمتمرکز ایجاد کنیم. فورک ها این امکان را برای بلاک چین و ارزهای دیجیتال فراهم می کنند تا ویژگی های جدید را در حین توسعه به شکلی یکپارچه اعمال کنند؛ بنابراین بدون این سیستم ها، ما به یک سیستم متمرکز برای ایجاد تغییرات در شبکه بلاک چین نیاز داشتیم که با هدف اصلی این فناوری در تناقض است.