مقایسه هارد فورک ( hard fork ) با سافت فورک ( soft work )

در ارزهای رمزنگاری شده، فورک تغییرات زیر ساخت و قوانین کدهای یک ارز رمزنگاری‌شده است که این اتفاق می‌تواند به صورت کلی (هارد فورک) و یا جزئی (سافت‌ فورک) رخ دهد. در نوع هارد فورک، در عمل یک بلاکچین جدید ایجاد شده و بلاک‌های جدید با نودهای شبکه پیشین همخوانی ندارند ولی در نوع سافت‌ فورک، این سازگاری وجود دارد. در این مطلب ابتدا به توضیح مفهوم‌های فورک، هارد فورک و سافت‌ فورک در بحث ارزهای رمزنگاری‌ شده پرداخته شده است و سپس به مقایسه هارد فورک و سافت‌ فورک می‌پردازیم.

0 259

فورک‌ها (Forks) یا اثرات ناشی از آن‌ها یکی از مشخصه‌های اصلی در حوزه‌ی ارزهای دیجیتال می‌باشد. فورک در حقیقت چیست؟ چرا فورک‌ها  اهمیت دارند؟ هارد فورک (hard fork) و سافت‌ فورک (soft fork) چه تفاوتی با یکدیگر دارند؟  در مقایسه هارد فورک با سافت فورک با ما همراه باشید.

« فورک » اصطلاحی در برنامه‌نویسی است که به معنای به‌سازی یک کد متن باز می‌باشد. کدهای فورک‌شده معمولا شبیه کدهای معمولی هستند اما اصلاحات مهمی‌در آن‌ها صورت گرفته و به صورت « شاخه‌های چنگال » به موازات یکدیگر عمل می‌کنند. گاهی برای آزمایش کردن یک فرآیند از فورک استفاده می‌شود اما فورک‌ها در زمینه‌ی ارز رمزها اغلب برای اعمال تغییرات بنیادی استفاده می‌شوند و یا اینکه برای ایجاد دارایی جدیدی با مشخصات مشابه (اما نه یکسان) نسبت به دارایی اصلی به کار گرفته می‌شوند.

مقایسه هارد فورک با سافت فورک

همه‌ی فورک‌ها تعمدی و ارادی نیستند. با وجود کد پایه متن باز که در پهنه‌ای گسترده توزیع شده است، در برخی موارد هنگامی‌که همه‌ی گره‌ها اطلاعات یکسانی را تکثیر نمی‌کنند، فورکی به صورت تصادفی به وجود می‌آید. استخراج‌کنندگان معمولا این فورک‌ها را شناسایی و رفع می‌کنند. با این وجود بیشتر فورک‌های موجود در رمز ارزها شده ناشی از اختلاف نظر بر سر ویژگی های ذاتی ایجاد شده‌اند. یکی از مواردی که در مورد فورک‌ها باید در نظر داشت این است که آن‌ها تاریخچه‌ی مشترکی دارند و بایگانی ثبت شده‌ی تراکنش‌ها در هر یک از زنجیره‌ها (قدیمی‌و جدید) پیش از تفکیک شدن آن‌ها یکسان هستند.

هارد فورک‌ها

به طور کلی در برنامه‌نویسی دو نوع فورک: سخت (هارد فورک) و نرم (سافت‌فورک) وجود دارد.

هارد فورک تغییری در یک پروتکل است که باعث نامعتبر شدن نسخه‌های پیشین می‌شود. اگر نسخه‌های قبلی همچنان به اجرا درآیند، در نهایت پروتکل کاملا متفاوتی پیدا خواهند کرد و دیتای آن‌ها نسبت به نسخه جدید متفاوت خواهد شد. این مساله باعث سردرگمی‌شدید می‌شود و ممکن است به خطا بیانجامد.

در بیت‌کوین، گاهی برای تعریف پارامترهایی همچون اندازه بلوک، دشواری مسائل رمزنگاری‌شده‌ای که نیاز به حل دارند، محدودیت اطلاعات اضافی قابل افزودن و غیره، لازم است از هارد فورک استفاده شود. بروزرسانی و ایجاد تغییر در هر یک از این قوانین باعث می‌شود بلوک‌ها از سوی یک پروتکل جدید پذیرفته شوند اما از سوی نسخه‌های قبلی رد شوند؛ در نتیجه مشکلات بزرگی ایجاد می‌شود که حتی ممکن است وجوه از دست بروند.

برای نمونه اگر قرار است محدودیت اندازه بلوک از 1 MB به 4 MB افزایش داده شود، آنگاه یک بلوک 2 MB از سوی گره‌هایی که با نسخه جدید کار می‌کنند پذیرفته می‌شود اما از سوی گره‌هایی که با نسخه‌ی قبلی کار می‌کنند مردود اعلام می‌شود. فرض کنیم این بلوک 2 مگابایتی توسط یک گره به‌روزشده تایید می‌شود و به بلاکچین افزوده می‌شود، اگر بلوک بعدی توسط گرهی که با نسخه‌ی قبلی پروتکل کار می‌کند تایید شود آنگاه چه رخ می‌دهد؟ گره سعی می‌کند بلوک خود را به بلاکچین بیفزاید اما متوجه می‌شود که آخرین بلوک اضافه شده معتبر نیست؛ در نتیجه آن بلوک را نادیده می‌گیرد و بلوک جدید خود را به جای قبلی می‌گذارد و ناگهان دو بلاکچین خواهیم داشت؛ یکی از آن‌ها حاوی هر دو نوع بلوک قدیم و جدید است و دیگری تنها با بلوک‌های نسخه‌ی قدیمی‌کار می‌کند. اینکه کدام زنجیره سریع‌تر رشد می‌کند به گره‌هایی بستگی دارد که اعتبار بلوک‌های بعدی را تایید می‌کنند و امکان دارد در ادامه باز هم انشعاب‌هایی ایجاد شود و همچنین این امکان وجود دارد که دو یا چند زنجیره هم راستا با یکدیگر همچنان ادامه پیدا کنند.

هارد فورک به این صورت بوده و معمولا با آشفتگی همراه است. هارد فورک‌ها ریسک زیادی هم دارند زیرا ممکن است بیت‌کوین‌های پرداخت شده در یک بلوک جدید امکان خرج شدن در یک بلوک قدیمی‌تر را داشته باشند (زیرا بازرگانان، کیف پول‌ها و کاربرانی که کد قبلی را اجرا می‌کنند، متوجه خرج شدن در کد جدیدی که از نظر آن‌ها نامعتبر است نخواهند شد).

تنها راه حل ممکن این است که یکی از انشعاب را رها کنیم و کار را با یک زنجیره ادامه دهیم. این کار باعث می‌شود برخی استخراج‌کنندگان شانس خود را از دست بدهند (خود تراکنش ها گم نمی‌شوند بلکه به مکان جدیدی انتقال پیدا می‌کنند). راه دیگر آن است که تمامی‌گره‌ها همزمان به نسخه جدیدتر بیایند؛ انجام این کار در سیستم نامتمرکزی که به شدت گسترده می‌باشد کاری بسیار سخت است؛ اگر هیچکدام از این راه‌ها عملی نباشد، بیت‌کوین منشعب می‌شود. اتفاقی که قبلا افتاده و بیت‌کوین‌کش (bitcoin cash) نمونه آن است.

سافت فورک

سافت فورک این قابلیت را دارد که همچنان با نسخه‌های قدیمی‌تر کار کند. برای نمونه اگر با اعمال قوانین سختگیرانه‌تر، یک پروتکل تغییر پیدا کند و تغییری کلی اعمال شود یا تابع جدیدی افزوده شود که به هیچ وجه روی ساختار تاثیر نمی‌گذارد، آنگاه بلوک‌های نسخه‌ی جدید توسط گره‌های نسخه‌ی قدیمی ‌پذیرفته می‌شوند. عکس این روند امکان پذیر نیست و نسخه‌ی جدید که سختگیرانه‌تر است، بلوک‌های نسخه‌ی قدیمی‌ را قبول نخواهد کرد.

در بیت‌کوین، در حالت ایده آل استخراج‌کنندگان نسخه قدیمی‌ متوجه می‌شوند که بلوک‌های آن‌ها رد شده است و در نتیجه خود را ارتقاء می‌دهند. هرچه استخراج‌کنندگان بیشتری به نسخه جدید ارتقاء پیدا کنند، زنجیره‌ی دارای بیشترین بلوک‌های جدید بلندتر می‌شود و در نتیجه کار بلوک‌های نسخه‎ی قدیمی ‌مدام سخت‌تر شده و ماینرها به فکر ارتقاء می‌افتند و به این ترتیب سیستم خود را اصلاح می‌کند. از آنجایی که بلوک‌های نسخه جدید هم از سوی گره‌های قدیمی ‌و هم از سوی گره‌های ارتقاء یافته پذیرش می‌شوند، در نهایت بلوک‌های نسخه‌ی جدید برنده خواهند شد.

برای نمونه فرض کنید، جامعه یک پول دیجیتال تصمیم بگیرد اندازه‌ی بلوک را از حداکثر محدوده‌ی 1MB  به 0.5MB کاهش دهد. گره‌های نسخه جدید بلوک‌های 1 مگابایتی را رد خواهند کرد و (در صورتی که استخراج با نسخه به‌روزرسانی شده کد صورت گیرد)، کار ساخت را روی بلوک قبلی انجام خواهند داد؛ در نتیجه یک فورک موقت ایجاد می‌شود. این یک سافت‌فورک است و تاکنون بارها اتفاق افتاده است. در اصل بیت‌کوین برای اندازه بلوک محدودیتی نداشت و ایجاد محدودیت 1MB در بیت‌کوین به واسطه‌ی یک سافت فورک صورت گرفت، چرا که قانون جدید « سخت‌تر » از قبلی بود. تابع پرداخت به هش اسکریپت (pay-to-script-hash) که بدون ایجاد تغییر در ساختار کد آن را گسترش می‌دهد نیز به شکل موفقیت‌آمیزی از طریق یک سافت فورک به سیستم اضافه شده است. این قبیل پیوست‌ها اغلب تنها نیازمند ارتقاء توسط بخش بزرگی از استخراج‌کنندگان هستند و در نتیجه به آسانی میسر می‌شوند و کمتر اختلاف و تضاد ایجاد می‌نمایند.

سافت فورک‌ها برخلاف هارد فورک‌ها فاقد ریسک خرج دوباره می‌باشند، زیرا بازرگانان و کاربرانی که با گره‌های قدیمی‌کار می‌کنند هر دو نوع بلوک نسخه‌ی قدیمی‌و جدید را می‌خوانند. برای مشاهده‌ی نمونه‌هایی از تغییرات که نیازمند سافت فورک هستند به softfork wishlist مراجعه نمایید.

شاید از این مطالب هم خوشتان بیاید.

ارسال پاسخ

آدرس ایمیل شما منتشر نخواهد شد.