زمانی که یک اپلیکیشن را روی گوشی خود نصب میکنید، گاهی باید برای دستیابی به امکانات بیشتر، برنامه را بهروز کنید. در برخی مواقع، این بهروزرسانی بدون اینکه متوجه شوید، توسط توسعهدهنده اپ و تنظیمات تلفن همراه بهطور خودکار انجام میشود، اما در ارزهای دیجیتالی که بهصورت منبع باز فعالیت میکنند، همهچیز بسیار متفاوت است. در ارزهای دیجیتال، هیچ مرکز یا شخص ثالثی برای بهروزرسانی کدهای بلاک چین ارز وجود ندارد؛ درنتیجه اجرای ویژگیهای جدید در شبکههای بلاک چین میتواند یک چالش باشد. در این مطلب قصد داریم به بررسی دو مفهوم اصلی هارد فورک و سافت فورک در زمینه بهروزرسانی بلاک چینها، از جمله بلاک چین بیت کوین بپردازیم.
چه کسی در شبکه بلاک چین تصمیم میگیرد؟
برای درک نحوه عملکرد فورکها، مهم است ابتدا با گروههای تأثیرگذار در فرایند تصمیمگیری (حاکمیت) شبکه آشنا شوید. در شبکه بیت کوین، بهطورکلی باید بین سه زیرمجموعه از شرکتکنندگان، توسعهدهندگان، ماینرها و کاربران فول نود تمایز قائل شوید. این سه گروه به شبکه برای عملکرد صحیح و بدون مشکل کمک میکنند.
در مقابل لایت نودها (مانند کیف پولهای موبایل و …) قرار دارند که بهطور گسترده توسط کاربران شبکه استفاده میشوند، اما شرکتکننده در شبکه محسوب نمیشوند.
توسعهدهندگان شبکه
توسعهدهندگان مسئول ایجاد و بهروزرسانی کد هستند. کد ارزهای دیجیتال بهصورت عمومی در دسترس است؛ بنابراین کاربران میتوانند تغییرات را برای بررسی به سایر توسعهدهندگان ارسال کنند.
ماینرهای فعال در شبکه
ماینرها کسانی هستند که مسئولیت امنیت شبکه را به عهده دارند. همچنین مسئول اجرای کد ارز دیجیتال هستند و منابعی را برای افزودن بلاکهای جدید به بلاک چین اختصاص میدهند؛ برای مثال در شبکه بیت کوین، این کار از طریق پروتکل اثبات سهام کار یا 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 دلار است.
هارد فورک یا سافت فورک، کدامیک بهتر است؟
هریک از این دو فورک، با هدف مختلفی اجرا میشوند. در هارد فورک، شبکه و جامعه آن بهطور کامل از شبکه قبلی جدا میشود، اما در سافت فورک، اتفاقها بهشکل ملایمتری رخ میدهد، اما در حالت کلی، تغییراتی که در ساختار شبکه ایجاد میشود، نمیتواند با قوانین قبلی و قدیمی در تضاد باشد؛ بنابراین اگر بهروزرسانی بهگونهای باشد که با شبکه قبلی همچنان سازگار باشد؛ نگرانی درباره تقسیمشدن شبکه وجود نخواهد داشت؛ پس نمیتوان گفت کدامیک بهتر است.
سخن پایانی
هارد فورکها و سافت فورکها برای موفقیت طولانیمدت شبکههای بلاک چین بسیار مهم هستند. این دو به ما اجازه میدهند تا با وجود نبود یک مرجع مرکزی، تغییرات و ارتقا را در سیستمهای غیرمتمرکز ایجاد کنیم. فورکها این امکان را برای بلاک چین و ارزهای دیجیتال فراهم میکنند تا ویژگیهای جدید را در حین توسعه بهشکلی یکپارچه اعمال کنند؛ بنابراین بدون این سیستمها، ما به یک سیستم متمرکز برای ایجاد تغییرات در شبکه بلاک چین نیاز داشتیم که با هدف اصلی این فناوری در تناقض است.











































