سافت فورک چیست و چه تفاوتی با هارد فورک دارد؟
امروزه انواع مختلفی از بیت کوین مانند بیت کوین کش (BCH) و بیت کوین اس وی (BSV) وجود دارد. احتمالاً درباره اتریوم کلاسیک نیز شنیدهاید. اگر به تازگی وارد فضای کریپتو شده باشید، نسخههای مختلف یک ارز دیجیتال میتواند بسیار گیجکننده باشد.
بسیاری از تازهواردان حوزه کریپتو از تغییرات متعدد رمزارزها پس از زمان عرضه آگاه نیستند. در واقع وضعیت فعلی این بلاک چینها با وضعیتی که در زمان انتشار داشتهاند، بسیار متفاوت است.
این تکامل یک فرآیند طبیعی است زیرا بلاک چینها بر روی نرم افزاری کار میکنند که باید با تغییر تکنولوژی در طول زمان ارتقا یابد.
فرآیند تغییر یک بلاک چین ارز دیجیتال، فورکینگ یا فورک کردن (Forking) نامیده میشود. دو نوع فورک (انشعاب) وجود دارد: سافت فورک و هارد فورک. در این مقاله از مجله نوبیتکس مبحث سافت فورک را با چند مثال به تفصیل پوشش خواهیم داد.
سافت فورک چیست؟
فرآیند ایجاد یک ارتقای جزئی یا بروزرسانی در پروتکل بلاک چین که توسط اکثر گرهها پذیرفته میشود، سافت فورک (Soft Fork) نامیده میشود.
در سافت فورک، گرههایی که تصمیم میگیرند نرم افزار خود را ارتقا ندهند، تا زمانی که از قوانین جدید پیروی کنند، همچنان میتوانند بلوکهای جدیدی را در زنجیره ارتقا یافته شناسایی و اضافه کنند. این باعث میشود که سافت فورکها سازگار با قبل (backward-compatible) باشند.
برای مثال سگویت (Segregated Witness یا Segwit) یک سافت فورک بود که در سال 2017 در شبکه بیت کوین رخ داد.
سگویت چندین بهبود برای بلاک چین بیت کوین ایجاد کرد، از جمله مشکل انعطافپذیری (چکشخواری یا malleability) تراکنشها را رفع کرد و همچنین عامل مورد استفاده برای تعیین محدودیتهای ذخیره سازی دادهها در یک بلوک را از اندازه (Size) به وزن (Weight) تغییر داد.
این تغییرات توسط اکثر گرههای شبکه پذیرفته شد و بعداً به بیت کوین کمک کرد تا شبکه لایتنینگ خود را راه اندازی کند. در بخش پایانی مقاله به بررسی چند سافت فورک خواهیم پرداخت.
تفاوت سافت فورک و هارد فورک
هارد فورک و سافت فورک از این منظر که در هر دو آنان نسخه قدیمی، هنگام تغییر کد موجود در پلتفرم ارز دیجیتال و ایجاد نسخه جدید، همچنان در شبکه باقی میماند مشابه هم هستند.
در هنگام استفاده از سافت فورک، با پذیرش بهروزرسانی توسط کاربران فقط یک بلاک چین معتبر باقی میماند. در حالی که با هارد فورک، هر دو بلاک چین قدیمی و جدید در کنار یکدیگر وجود دارند، و برای کار کردن با بلاک چین جدید نیاز است که نرم افزار به روز شود تا طبق قوانین جدید کار کند. هر دو فورک یک انشعاب در بلاک چین ایجاد میکنند، اما با هارد فورک (در صورت عدم توافق گرههای شبکه) دو بلاک چین ایجاد میشود و با سافت فورک تنها یک بلاک چین داریم. به همین دلیل است که گفته میشود سافت فورکها سازگار با قبل (backward-compatible) هستند و هارد فورکها با قبل سازگار نیستند.
از سافت فورک میتوان برای افزودن ویژگیها و عملکردهای جدیدی استفاده کرد که قوانینی را که بلاک چین باید از آن پیروی کند تغییر نمیدهد. سافت فورکها اغلب برای پیاده سازی ویژگیهای جدید در سطح برنامه نویسی استفاده میشوند.
برای درک بهتر تفاوت بین هارد فورک و سافت فورک، میتوان آن را به صورت یک آپدیت سیستم عامل در موبایل یا لپ تاپ در نظر گرفت. پس از آپدیت، تمام برنامههای موجود در دستگاه همچنان با نسخه جدید سیستم عامل کار میکنند. این مشابه سافت فورک است. در این سناریو، یک هارد فورک، تغییر کامل به یک سیستم عامل جدید خواهد بود.
درک کاربرد سافت فورک
انواع جدید تراکنشها اغلب میتوانند با استفاده از سافت فورک ایجاد شوند. فقط لازم است که شرکتکنندگان در تراکنش (مانند فرستنده و گیرنده) و نودهای شبکه نوع جدید تراکنش را بپذیرند. این کار با جلب توافق نودهای شبکه برای رد بلوکهایی که بر اساس قوانین جدید نیستند انجام میشود. این شیوهای است که P2SH یا همان Pay-to-Script-Hash به بیت کوین اضافه شد.
سافت فورک همچنین میتواند گاهی موقتاً به دلیل واگرایی در بلاک چین رخ دهد. این اتفاق غالباً زمانی رخ میدهد که ماینرهایی که از گرههای آپدیت نشده استفاده میکنند، قانون اجماع جدید را نقض میکنند.
سافت فورکها برای حفظ اجماع نیازی به ارتقای گرهها ندارند، چون همه بلوکهای دارای قوانین جدید از قوانین قدیمی نیز پیروی میکنند. سافت فورکها را نمیتوان بدون هارد فورک معکوس کرد و سافت فورک در بلاکچین تنها میتواند با هارد فورک به حالت قبلی بازگردانده شود.
زیرا قوانین و قواعد زنجیره بلاک چین با اعمال سافت فورک تغییر کرده است و از آنجا که کاربران زنجیره بلاک چین به این تغییرات پاسخ دادهاند و گرهها ارتقا یافتهاند نمیتوان بدون هارد فورک تغییرات روی بلاک چین را به قبل برگرداند. سافت فورکها تغییراتی سازگار با قبل هستند، آنها قوانین جدیدی را به بلاک چین اضافه میکنند که رفتار گرهها را به نوعی مشخص میکند. این بدان معناست که گرههای ارتقا یافته از قوانین جدید پیروی میکنند، اما گرههای ارتقا نیافته همچنان از همان قوانین قدیمی پیروی میکنند. هنگامی که یک سافت فورک فعال میشود و برخی از گرهها ارتقا مییابند، آن قوانین جدید اکنون به بخشی از قوانین اجماع تبدیل میشوند. معکوس کردن این قوانین اجماع را نقض میکند و نیاز به یک هارد فورک دارد.
به عنوان مثال، اگر یک سافت فورک یک نوع جدید تراکنش با مشخصات بیشتر معرفی کند، معکوس کردن آن فورک، باعث میشود آن تراکنشهای جدید طبق قوانین قدیمی نامعتبر شوند. بنابراین گرههای ارتقا یافته و گرههای ارتقا نیافته از قوانین متفاوتی پیروی میکنند که منجر به تقسیم زنجیره میشود.
برای این که یک سافت فورک کار کند، بیشتر نیروی ماینینگ باید در اختیار کاربرانی باشد که فورک را میپذیرند. هرچه ماینرهای بیشتری قوانین جدید را بپذیرند، شبکه پس از فورک ایمنتر است. سافت فورکها تاکنون بر روی بسیاری از بلاک چینها برای پیادهسازی عملکردهای جدید و ارتقا یافته که سازگار با قبل (backward-compatible) هستند، به کار گرفته شدهاند.
فورک چیست؟
فورک بلاک چین یک تغییر (یا ارتقا) در پروتکل نرم افزار بلاک چین است. فورکینگ عملکردهای بک اند (back-end functions) را در گرههای بلاک چین تغییر میدهد. به عبارت دیگر فورکینگ باعث تغییر نسخه بلاک چین میشود.
کلمه Fork (چنگال، انشعاب) به این اشاره دارد که بلاک چین در ادامه مسیر جدیدی را پیش میبرد که مانند ایجاد یک انشعاب در جاده اصلی بلاک چین است. در نتیجه این دو بلاک چین ایجاد شده از یکدیگر جدا هستند.
شبکههای بلاک چین تراکنشها را با مکانیسمهای اجماع مشخص شده در پروتکل تایید میکنند. عدم ارتقاء به پروتکل جدید مانع از مشارکت گره در نسخه جدید بلاک چین میشود. با این حال، گرههایی که از نسخه قدیمیتر پروتکل بلاک چین استفاده میکند، همچنان با هم سازگارند.
آیا ممکن است فورک به صورت تصادفی ایجاد شود؟
فورک ممکن است به طور تصادفی نیز اتفاق بیفتد. این اتفاق معمولا زمانی رخ میدهد که دو ماینر در زمانهای مشابه بلاکها را تولید کنند. در این اتفاق تنها یک بلاک در زنجیره اصلی پذیرفته میشود و بلاک دیگر بلاک یتیم (Orphan Block) است. بلاک یتیم یا بلاک جدا شده یک بلاک معتبر در بلاک چین است که از زنجیره اصلی جدا شده است. بلاکهای یتیم حاوی تراکنشهایی هستند که بخشی از زنجیره اصلی نیستند. تراکنشهای معتبر در بلاکهای یتیم احتمالاً در نهایت در بلوکهای دیگر گنجانده میشود.
بلاکهای یتیم میتوانند به طور موقت باعث ایجاد فورک در بلاک چین شوند. فورک دارای بلوکهای تأیید شده بیشتر، در بلاک چین پذیرفته میشود و بلاکهای زنجیره کوتاهتر کنار گذاشته میشوند. بلاکهای کنار گذاشته شده به استخر حافظه (Memory Pool) برمیگردند تا اعتبارسنجی شوند و به زنجیره جدید اضافه شود. به این شیوه فورک ایجاد شده برطرف میشود.
با این حال، اغلب فورکهای ارزهای دیجیتال به صورت عمدی و با دلیل ایجاد میشوند. این فورکها زمانی اتفاق میافتند که توسعهدهندگان عمداً کد منبع (source code) را تغییر میدهند تا ویژگیهای جدید به بلاک چین اضافه کنند، آسیبپذیریهای آن را برطرف کنند یا قوانین اساسی عملکرد شبکه را تغییر دهند. معمولاً کد فورک شده تا حدودی مشابه کد اصلی است، اما با تغییرات اساسی که کاربران شبکه را ملزم میکند تا نرم افزار خود را به جدیدترین نسخه ارتقا دهند. گاهی اوقات فورکهای مورد نظر، یک پروتکل جدید، یک دارایی دیجیتال جدید و حتی یک جامعه جدید شکل میدهند.
فواید فورک کردن
ایجاد فورک بلاکچین مزایای متعددی دارد. در ادامه به دلایلی میپردازیم که باعث میشود فورک اتفاق بیافتد.
رفع ایرادات امنیتی
با پیشرفت فناوری، ابزارهای مورد استفاده هکرها برای به خطر انداختن بلاک چینها نیز پیشرفتهتر میشوند. هکرها میتوانند کنترل ایجاد بلوکهای جدید را در دست بگیرند و ارزهای دیجیتال را استخراج کنند یا تراکنشهای جعلی برای خارج کردن وجوه ایجاد کنند. آنها همچنین میتوانند باعث بروز اتفاق دوباره خرج کردن (Double Spending) و سوء استفاده از بلاک چین شوند. توسعه دهندگان بلاک چین باید دائماً الگوریتمهای رمزنگاری و سایر الگوریتمهای امنیت سایبری را در بلاک چین ارتقا دهند تا از این هکها و حملات مخرب جلوگیری کنند.
تغییرات کارایی
بلاک چینهای کلاسیک مانند بیت کوین از گذشته در مقیاسپذیری ناکارآمد بودهاند. همچنین با تبدیل شدن ارزهای دیجیتال به جریانی پر مخاطب و پرطرفدار، شبکههای بلاک چین شلوغ شدهاند که این امر باعث کاهش سرعت تراکنشها و افزایش هزینههای تراکنش میشود. ارتقای پروتکل به توسعه دهندگان کمک میکند تا با بهبود عملکرد محاسباتی نرم افزار و شبکه بلاک چین، مشکلاتی از این قبیل را برطرف کنند.
ویژگیهای جدید
ارتقای بلاک چین به توسعه دهندگان اجازه میدهد تا ویژگیهای جدیدی را به شبکه اضافه کنند. بسیاری از بلاکچینها با تلاشهای مشترک توسعه مییابند و فورکها به انجمن آن بلاکچین کمک میکنند تا ویژگیهای درخواستی کاربران را در بلاک چین پیاده سازی کنند.
برگشتپذیری تراکنشها
در مواردی خاص، فورکها میتوانند برای بازیابی وجوه از دست رفته از تراکنشهای جعلی یا هک به کار گرفته شوند. این مسئله برای حفظ امنیت سرمایه و اعتماد کاربران به شبکه ضروری است.
چند نمونه از سافت فورکها
در این بخش از مقاله چند نمونه از سافت فورکهای بلاک چین بیت کوین و اتریوم را بررسی کردهایم.
سافت فورکهای بیت کوین
همانطور که در ابتدای این مقاله اشاره کردیم، بیت کوین تاکنون تغییرات قابل توجهی از جمله سافت فورک و هارد فورک را پشت سر گذاشته است. در اینجا برخی از نمونههای قابل توجه سافت فورکهای بیت کوین ذکر کردهایم.
ارتقای سگویت (SegWit, Segregated Witness)
این ارتقا در جولای سال 2017 رخ داد. سگویت یکی از معروفترین سافت فورکهای بلاک چین بیت کوین است. ارتقای سگویت دادههای امضا تقسیم میکند و آن را در یک حافظه کش جداگانه ذخیره میکند. گرهها میتوانند دادهها را به یک بلوک ذخیره شده در RAM کامپیوتر انتقال دهند. این کار اجازه میدهد تا تراکنشهای بیشتری در یک بلوک قرار گیرند، بدون اینکه قوانین قبلی را زیر پا بگذارند. این ارتقا همچنین یک نوع آدرس جدید (Bech32) را معرفی کرد. گرههایی که از آدرس قدیمی P2SH بیت کوین استفاده میکنند هنوز هم میتوانند با آدرسهای Bech32 بیت کوین تراکنش انجام دهند.
ارتقای تپ روت (Taproot)
ارتقای تپ روت در نوامبر سال 2021 رخ داد. تپ روت با افزودن امضاهای رمزنگاری جدید و بهبود سازگاری با شبکه لایتنینگ، عملکرد جدیدی را به بلاک چین بیت کوین اضافه کرد. ارتقای تپ روت بیت کوین به کاربران اجازه میدهد تا تراکنشهای پیچیدهتری را با سرعت بالاتر و هزینه کمتر انجام دهند. کاربران همچنین میتوانند قراردادهای هوشمند را از طریق شبکه لایتنینگ ایجاد کنند.
سافت فورکهای اتریوم
مانند بیت کوین، اتریوم نیز پس از انتشار دستخوش چندین ارتقا شده است. بسیاری از تغییرات اتریوم هارد فورک بوده است. در این بخش از مقاله نوبیتکس مگ چند سافت فورک اتریوم را بررسی خواهیم کرد که این سافت فورکها باعث افزایش کارایی و حتی قیمت اتریوم شده است.
ارتقای بیکن چین (Beacon Chain):
این ارتقا در دسامبر سال 2020 رخ داد و اولین مورد از یک سری ارتقای چندگانه است که برای تغییر مکانیسم اجماع پروتکل طراحی شده است. قبل از ادغام، اتریوم از طریق پروتکل اجماع اثبات کار (Proof-of-Work) بومی خود به ماینرها پاداش میداد. این تغییر، مکانیسم اجماع را به یک پروتکل اثبات سهام کارآمدتر تبدیل میکند. با ارتقا کاربران اتریوم میتوانند بر اساس میزان اتری که در این بلاک چین استیک یا سهامگذاری کردهاند، به تأیید تراکنش رای دهند. این ارتقا هزینه تراکنش را کمتر کرد و باعث کاهش مصرف انرژی و افزایش سرعت تراکنشها شد.
ارتقای بلاتریکس (Bellatrix) :
این ارتقا در سپتامبر سال 2022 رخ داد و نام آن از ستاره بلاتریکس که سومین ستاره درخشان در صورت فلکی شکارچی است گرفته شده است. این ارتقا مکانیزم اجماع اتریوم را به مکانیزم اجماع اثبات سهام تبدیل کرد. بلاتریکس همچنین بلاتریکس شامل بروزرسانی قوانین برای آماده سازی بلاک چین برای ارتقاهای بعدی و انتقال از آخرین بلوک اثبات کار به اولین بلوک اثبات سهام است.
جمعبندی
به طور کلی، سافت فورک روشی برای بهروزرسانی یا تغییر پروتکل بلاک چین بدون نیاز به ارتقای نرمافزار همه کاربران شبکه است. سافت فورک امکان سازگاری با قبل را فراهم میکند، به این معنی که گرههایی که نسخه قدیمی نرم افزار را اجرا میکنند همچنان میتوانند با گرههایی که نسخه به روز شده را اجرا میکنند تعامل داشته باشند.
سافت فورکها اغلب برای اجرای تغییرات جزئی در پروتکل بلاک چین، مانند رفع اشکالات عملکردی یا بهبودهای امنیتی استفاده میشوند. با این حال، آنها میتوانند برای افزودن ویژگیها یا عملکردهای جدید به شبکه بلاک چین نیز استفاده شوند. در حالی که سافت فورکها ممکن است به اندازه هارد فورکها اختلال ایجاد نکنند، اما همچنان نیاز به برنامهریزی و هماهنگی دقیق دارند تا از انتقال آسوده برای همه کاربران شبکه اطمینان حاصل شود. به جرات میتوان گفت که ما در آینده نیز شاهد فورکهای جدیدی خواهیم بود که راههای خلاقانه و پایداری برای استفاده از ارزهای دیجیتال در اختیار ما خواهند گذاشت.
سوالات متداول
1. سافت فورک چیست؟
سافت فورک نوعی به روز رسانی شبکه بلاک چین است که با نسخه قبلی نرم افزار نیز سازگار است. به این معنی است که گرههایی که نسخه قدیمی نرمافزار را اجرا میکنند، همچنان میتوانند تراکنشهای نسخه جدید بلاک چین را تایید کنند.
2. سافت فورک چگونه کار میکند؟
در سافت فورک، قوانین جدید معرفی شده در ارتقا با قوانین قدیمی سازگار است. گرههایی که نسخه قدیمی نرم افزار را اجرا میکنند، به اعتبارسنجی بلوکهای جدید ادامه میدهند، زیرا قوانین جدید زیرمجموعهای از قوانین قدیمی هستند. گرههایی که نسخه جدید را اجرا میکنند، بلوکها را با استفاده از قوانین جدید تأیید میکنند، اما همچنان بلوکهایی را که توسط گرههایی که نسخه قدیمی را اجرا میکنند، میپذیرند.
3. مزایای سافت فورک چیست؟
سافت فورکها راهی برای افزودن ویژگیها یا قوانین جدید به شبکه بلاک چین بدون نیاز به بروزرسانی همه گرهها به نسخه جدید نرم افزار است. سافت فورک دستیابی به اجماع را آسانتر میکند و احتمال تقسیم شبکه را کاهش میدهد. همچنین امکان تغییر تدریجی و پذیرش قوانین جدید را فراهم میکند.
4. نمونههای سافت فورک کدامند؟
یکی از نمونههای سافت فورک، به روز رسانی سگویت (SegWit, Segregated Witness) در بلاک چین بیت کوین است. این بهروزرسانی نحوه ذخیره دادههای تراکنش را تغییر داد، اما با نسخه قبلی نرمافزار سازگار بود. مثال دیگر سافت فورک تپ روت است که امضاهای رمزنگاری جدیدی را به شبکه اضافه کرد و سازگاری با شبکه لایتنینگ را بهبود داد.
5. آیا ریسکی در ارتباط با سافت فورک وجود دارد؟
سافت فورکها معمولاً ریسک کمتری نسبت به هارد فورکها دارند، زیرا نیازی به بهروزرسانی همه گرهها به نسخه جدید نرمافزار ندارند. اما اگر قوانین جدید معرفی شده در سافت فورک بحث برانگیز باشد، ممکن است منجر به تقسیم جامعه و ایجاد یک ارز دیجیتال جدید شود. همچنین یک سافت فورک میتواند توسط بازیگران بد برای فریب کاربران فول نود (Full Node) و ماینرها برای تأیید اعتبار بلوکهایی که قوانین بلاک چین را نقض میکنند استفاده شود.
6. تفاوت بین سافت فورک و هارد فورک چیست؟
سافت فورک یک بهروزرسانی سازگار با قبل (backward-compatible) برای شبکه بلاک چین است، در حالی که هارد فورک یک بهروزرسانی غیرسازگار با قبل (backward-incompatible) است که به همه گرهها نیاز دارد تا به نسخه جدید نرمافزار بهروزرسانی شوند تا همچنان عضو شبکه باشند. هارد فورک میتواند منجر به تقسیم شبکه و ایجاد یک ارز دیجیتال جدید شود، در حالی که در سافت فورک معمولاً این اتفاق نمیافتد.