تفاوتهای مهم سافت فورک و هارد فورک
هنگامی که یک اپلیکیشن را روی گوشی خود نصب میکنید، گاهی باید برای دستیابی به امکانات بیشتر، برنامه را بهروز کنید. در برخی مواقع، این بهروزرسانی بدون اینکه متوجه شوید، توسط توسعهدهنده اپ و تنظیمات تلفن همراه بهطور خودکار انجام میشود، اما در ارزهای دیجیتالی که بهصورت منبع باز فعالیت میکنند، همهچیز بسیار متفاوت است. در ارزهای دیجیتال، هیچ مرکز یا شخص ثالثی برای بهروزرسانی کدهای بلاک چین ارز وجود ندارد؛ درنتیجه اجرای ویژگیهای جدید در شبکههای بلاک چین میتواند یک چالش باشد. در این مطلب قصد داریم به بررسی دو مفهوم اصلی هارد فورک و سافت فورک بپردازیم.
جهت درک بهتر نحوه عملکرد فورکها، مهم است ابتدا با گروههای تأثیرگذار در فرایند تصمیمگیری (حاکمیت) شبکه آشنا شوید. در شبکه بیت کوین، بهطورکلی باید بین سه زیرمجموعه از شرکتکنندگان، توسعهدهندگان، ماینرها و کاربران فول نود تمایز قائل شوید. این سه گروه به شبکه برای عملکرد صحیح و بدون مشکل کمک میکنند.
در مقابل لایت نودها (مانند کیف پولهای موبایل و …) قرار دارند که بهطور گسترده توسط کاربران شبکه استفاده میشوند، اما شرکتکننده در شبکه محسوب نمیشوند.
توسعهدهندگان شبکه
توسعهدهندگان مسئول ایجاد و بهروزرسانی کد هستند. کد ارزهای دیجیتال بهصورت عمومی در دسترس است؛ بنابراین کاربران میتوانند تغییرات را برای بررسی به سایر توسعهدهندگان ارسال کنند.
ماینرهای فعال در شبکه
ماینرها کسانی هستند که مسئولیت امنیت شبکه را به عهده دارند. همچنین مسئول اجرای کد ارز دیجیتال هستند و منابعی را برای افزودن بلاکهای جدید به بلاک چین اختصاص میدهند؛ برای مثال در شبکه بیت کوین، این کار از طریق پروتکل اثبات سهام کار یا Proof of Work انجام میشود.
کاربران فول نود
فول نودها، ستون فقرات شبکه ارزهای دیجیتال هستند. آنها بلوکها و تراکنشها را تأیید، ارسال و دریافت میکنند و یک نسخه از بلاک چین را حفظ و ذخیره میکنند. بهطورکلی یک کاربر میتواند در هر سه دسته همزمان حضور داشته باشد؛ برای مثال میتوانید یک توسعهدهنده و یک کاربر فول نود یا یک ماینر باشید یا هر سه یا هیچکدام از این سه زیرمجموعه شرکتکنندگان باشید.
درواقع بسیاری از کاربرانی که از نظر ما کاربران ارزهای دیجیتال هستند، هیچیک از این نقشها را بر عهده نمیگیرند. درعوض آنها ترجیح میدهند از لایت نودها یا خدمات متمرکز استفاده کنند؛ بنابراین بهطور خلاصه میتوان گفت توسعهدهندگان کد را ایجاد میکنند؛ بدون آنها، شما هیچ نرمافزاری برای اجرا و کسی برای رفع اشکال یا اضافهکردن ویژگیهای جدید ندارید.
ماینرها شبکه را ایمن میکنند. بدون رقابت سالم در ماینینگ، این زنجیره ممکن است تحت کنترل اشخاص خاصی دربیاید یا بهطور کامل متوقف شود. با این حال این دو گروه، همهکاره شبکه نیستند و اگر مردم تصمیم بگیرند از شبکه استفاده نکنند، ارز دیجیتال ارزش خود را از دست خواهد داد. از دست دادن ارزش تأثیر مستقیمی بر ماینرها دارد (پاداش آنها وقتی به دلار باشد ارزش کمتری دارد).
فورک به چه معناست؟
فورک در شبکه بلاک چین زمانی اتفاق میافتد که ساختار کد اولیه اصلاح شود. درواقع پروژه اصلی ادامه دارد، اما اکنون از پروژه جدید که جهت متفاوتی دارد، جدا شده است. فرض کنید تیم وبسایت محتوای ارزهای دیجیتال مورد علاقه شما درباره نحوه ادامه کار با یکدیگر اختلافنظر داشته باشند. یکی از اعضای تیم ممکن است محتوای سایت را در دامنه دیگری کپی کند، اما در آینده از محتواهای جدید و متفاوتی برای وبسایت خود استفاده میکنند.
در فورک پروژهها براساس یک بستر مشترک ایجاد میشوند و یک تاریخچه مشترک دارند. توجه داشته باشید که این اتفاقات در پروژههای متن باز زیاد رخ میدهد و مدتها قبل از ظهور بیت کوین یا اتریوم اتفاق افتاده است. با این حال، تمایز بین هارد فورک و سافت فورک تقریباً منحصر به فضای بلاک چین است.
به عبارت ساده، یک بلاک چین مانند مجموعهای از بلاکهای داده است که توسط کلیدهای رمزنگاری ایمن به هم متصل میشوند و زنجیرهای از بلوکها را تشکیل میدهند که به همان بلوک اول متصل هستند؛ بنابراین میتوان زنجیره بلاکی را مسیری مستقیم از بلاکهای متصل به یکدیگر تصور کرد. از آنجا که بلوکها از طریق قانون و ساختاری که همه بلوکها بر آن توافق دارند به هم متصل میشوند، هرگونه ارتقای سیستم مستلزم تغییر اجماع در همه بلوکهاست.
چنین اتفاقنظری بعید است که اتفاق بیفتد؛ زیرا بلوکها از طریق مجموعهای از قوانین تغییرناپذیر عملکردی به هم مرتبط هستند. در چنین شرایطی، بهجای بازنویسی هر بلوک، تغییرات در یک بلاک چین اغلب از طریق اجرای فورک انجام میشود. در واقع فورک رویدادی در بلاک چین است که نرمافزار اصلی را کپی کرده و تغییرات موردنظر را به آن اضافه میکند.
چه کسی ساختار یک فورک را تعیین میکند؟
از آنجا که بلاک چین توسط هیچ مرجع مرکزی اداره نمیشود، به عهده مشارکتکنندگان در شبکه است که در مورد راه پیش رو توافق کرده و تغییراتی را اعمال کنند که کارایی کلی را بهبود دهد. با این حال، بلاک چینها دارای زیرمجموعههای مختلفی از شرکتکنندگان هستند که از استخراجکنندگان گرفته تا کاربران فول نود و توسعهدهندگان را شامل میشود؛ بنابراین چه کسی درباره اینکه چه تغییراتی باید در شبکه اعمال شود، حرف آخر را میزند؟
از آنجا که هر زیرمجموعه بهطور متفاوتی به شبکه کمک میکند، برخی شرکتکنندگان قدرت رأی بیشتری از دیگران دارند؛ برای مثال ماینرهایی که شبکه را با اختصاص منابع محاسباتی برای اعتبارسنجی بلاک ایمن میکنند، امنیت نسخههای فورک را تعیین میکنند.
بیشتر بلاک چینهای منبع باز شرایط تداخل مسئولیتها و درنتیجه مسئولیت مشترک در فرایند تشکیل فورک را برای کاربران شبکه فراهم میکنند؛ بنابراین تمام مشارکتکنندگان بهاندازه قدرتی که دارند، در تعیین ساختار فورک تأثیرگذار هستند.
معرفی هارد فورک
هارد فورک به تغییری در پروتکل بلاک چین گفته میشود که نسخههای قدیمیتر را نامعتبر میکند. اگر نسخههای قدیمیتر به اجرای خود ادامه دهند، درنهایت با پروتکل متفاوت و با دادههای متفاوت از نسخه جدیدتر مواجه میشوند. این اتفاق میتواند به سردرگمی قابلتوجه و خطاهای احتمالی در شبکه منجر شود.
در بیت کوین، یک هارد فورک برای تغییر پارامترهای اصلی مانند اندازه بلوک، الگوریتم سختی استخراج و غیره ضروری است. تغییر در هریک از این قوانین سبب میشود بلوکها توسط پروتکل جدید پذیرفته شوند، اما نسخههای قدیمیتر آن را رد کنند که میتواند به مشکلات جدی منجر شود؛ برای مثال از دست دادن سرمایه کاربران.
مثلاً اگر محدودیت اندازه بلوک از ۱ مگابایت به ۴ مگابایت افزایش یابد، یک بلوک ۲ مگابایتی توسط نودهایی که نسخه جدید را اجرا میکنند، پذیرفته میشود، اما توسط نودهایی که نسخه قدیمیتر را اجرا میکنند، رد میشود. تصور کنیم این بلوک ۲ مگابایتی توسط یک نود بهروزشده تأیید شده و به بلاک چین اضافه شده است.
در صورتی که بلوک بعدی توسط گرهای که نسخه قدیمیتری از پروتکل را اجرا میکند تأیید شود، پروتکل سعی میکند بلوک خود را به بلاک چین اضافه کند، اما متوجه میشود آخرین بلوک معتبر نیست و آن را نادیده میگیرد. با این اتفاق شما دو بلاک چین خواهید داشت، یکی با بلوکهای نسخه قدیمیتر و جدیدتر و دیگری با بلوکهای نسخه قدیمیتر.
اینکه کدام بلاک چین سریعتر رشد میکند، به این بستگی دارد که کدام نودها بلوکهای بعدی را تأیید میکنند؛ درنتیجه این احتمال وجود دارد که دو (بیشتر) زنجیره بهطور موازی بهطور نامحدود رشد کنند. در این شرایط احتمال خطای دو بار خرجکردن وجود خواهد داشت؛ یعنی یک کاربر یک بیت کوین را دو بار در دو بلاک چین متفاوت خرج کند، اما راهحل چیست؟
راهحل این است که یک بلاک چین مسیر خود را بهطور کامل برای ادامه فعالیت از بلاک چین قبلی جدا کند؛ بنابراین با توجه به اینکه انتقال همه نودها به نسخه جدیدتر همزمان ممکن نیست، هارد فورک اتفاق میافتد. بیت کوین کش، نمونهای از یک هارد فورک بیت کوین است.
معرفی سافت فورک
سافت فورک اساساً برعکس هارد فورک است که بهموجب آن تغییرات جدید اجراشده با نسخههای قدیمیتر سازگار هستند؛ به عبارت ساده، سافت فورک، بلاک چین قدیمی را قانع میکند تا قوانین جدید را بپذیرد؛ بنابراین بلوکهای بهروزشده و بلوکهای قدیمی تراکنشها را همزمان در خود جای میدهد.
از اینرو برخلاف هارد فورک، سافت فورک با حفظ دو ساختار با مجموعه قوانین مختلف، بلاک چین قدیمی را حفظ میکند؛ برای مثال اگر یک پروتکل بهگونهای تغییر کند که قوانین را سختتر کند، یک تغییر ظاهری داشته باشد یا تابعی را اضافه کند که بههیچوجه بر ساختار بلاک چین تأثیری نداشته باشد، بلوکهای نسخه جدید توسط نودهای نسخه قدیمی پذیرفته میشوند.
در بیت کوین، ماینرهای نسخه قدیمی متوجه میشوند بلاکهای آنها رد میشود و مجبور به ارتقا میشوند. برای اجرای اصلاحات از این نوع، تنها نیاز است که بیشتر ماینرها ارتقا یابند. نیازی که برآوردهکردن آن امکانپذیر است و به مختلشدن کل شبکه نیازمند نیست. نمونهای از یک سافت فورک موفق، بهروزرسانی پروتکل بیت کوین Segregated Witness (SegWit) در سال ۲۰۱۵ است.
قبل از بهروزرسانی SegWit، پروتکل بیت کوین هم گرانتر بود. هزینه هر تراکنش نیز حدود ۳۰ دلار بود که انجام هریک به زمان زیادی نیاز داشت. SegWit پیشنهاد داد اندازه بلوک از ۱ مگابایت به ۴ مگابایت افزایش یابد. ایده پشت این افزایش فضا، جداسازی یا حذف دادههای امضاشده از دادههای تراکنش در هر بلوک در بلاک چین بود و به این ترتیب فضا را برای خروجی تراکنش بیشتر در هر بلوک آزاد میکرد. با استفاده از سافت فورک، بلاک چین قدیمی بیت کوین توانست بلاکهای جدید ۴ مگابایتی و بلاکهای ۱ مگابایتی را همزمان بپذیرد.
تفاوتهای اصلی سافت فورک و هارد فورک
سازگاری رو به عقب (Backward Compatibility)
یک تفاوت عمده بین هارد فورک و سافت فورک به «سازگاری رو به عقب» مربوط میشود. این اصطلاح به توانایی یک سیستم نرمافزاری برای استفاده از رابطها و دادههای نسخههای قبلی سیستم اشاره دارد. تغییر پروتکل نرمافزار در سافت فورک سازگاری رو به عقب دارد؛ درحالیکه نرمافزار جدید ممکن است روشی جدید اجرا شود، اما همچنان دادهها را در مدل قدیمی درک میکند.
هارد فورک بیشتر شبیه تغییر زبانی است که نرمافزار از طریق آن اجرا میشود؛ بنابراین درصورت تغییر زبان دیگر متوجه نخواهد شد که دادههای زبان قبلی چه بوده است؛ به همین دلیل هارد فورک شبکه را به دو قسمت تقسیم میکند؛ یکی قبل از فورک و دیگری بعد. از آنجا که هیچ سازگاری رو به عقب وجود ندارد، پس از فورکشدن، دو بخش شبکه دیگر هرگز نمیتوانند با هم تعامل داشته باشند.
سایز بلاک
یکی از دلایل فورک ارزهای دیجیتال مانند بیت کوین، تنظیم اندازه بلوکهای استفادهشده در بلاک چین است. این بلوکها دادههای تراکنش را نگه میدارند و هرچه دادهها در هر بلوک بیشتر باشد، تراکنش سریعتر است. اندازه بلاک یکی از دلایل اصلی ایجاد اولین هارد فورک برای بیت کوین بود، هارد فورک بیت کوین کش (BCH) در سال ۲۰۱۷. بهدلیل افزایش اندازه بلوک، یک بلوک در بلاک چین BCH میتواند تعداد بیشتری تراکنش را در مقایسه با یک بلوک در بلاک چین اصلی بیت کوین ثبت کند.
سرعت و امنیت
سرعت و امنیت یکی دیگر از دلایل ایجاد هارد فورک است. بلاک چین اتریوم به اتفاق آرا به هارد فورک بهعنوان بخشی از استراتژی معکوسکردن هکی که دهها میلیون دلار از رمزارز آن را به سرقت برد، رأی داد؛ درنتیجه بلاک چین اصلی اکنون بهعنوان Ethereum Classic و فورک آن بهعنوان Ethereum شناخته میشود.
هنگامی که یک شبکه نیازمند حل سریع مشکل است، هارد فورکها گزینه خوبی خواهند بود. اگرچه در سافت فورک نسخه قدیمی همچنان در شبکه باقی میماند، در هارد فورک بهطور کامل از شبکه جدید جدا میشود.
دیدگاهتان را بنویسید