آشنایی با فورک و فورک بیت کوین + مقایسه هارد فورک با سافت فورک
فهرست مطالب
مقایسه هارد فورک (Hard fork) با سافت فورک (Soft fork)
فورکها و یا به نوعی رفتار آنها به عنوان یک پدیده و ویژگی اساسی در حوزه ارزهای دیجیتال شناخته میشوند. حال این سوال پیش میآید که دقیقاً منظور از فورک چه میباشد؟ چرا این پدیده در دنیای ارزهای دیجیتال، تا به این حد مهم است؟ هارد فورک معروف بیت کوین چیست؟ و این که چه تفاوتی بین یک هارد فورک (Hard fork) و یک سافت فورک (Soft fork) وجود دارد؟
اینها سوالاتی هستند که قصد داریم، در این مقاله جوابهایی را برای آنها بدست آوریم. تا پایان این مقاله با ما همراه باشید.
فورک (Fork) چیست؟
اگر از جنبه برنامهنویسی به پدیده فورک نگاه کنیم، باید گفت که یک فورک به صورت پروسس اعمال تغییرات در کدهای مربوط به ارزهای دیجیتال میباشد. در این راستا در نظر داشته باشید؛ کدی که در پی پدیده فورک به وجود آمده، در کنار داشتن تغییراتی اساسی، تقریباً مشابه کد اصلی میباشد. در این حالت، هر دوی این کدها میتوانند به صورت همزمان وجود داشته و اجرا شوند.
در حالت کلی از فورکها برای تست کردن یک پروسس خاص استفاده میشود؛ ولی در دنیای ارزهای دیجیتال از فورکها برای اعمال تغییرات اساسی و پایهای، در یک ارز دیجیتال و یا تولید نوع جدیدی از یک ارز با ساختاری تقریباً مشابه با خود آن، استفاده میشود.
البته همه فورکها با انگیزه قبلی صورت نمیگیرند. برخی از این موارد هم هستند که ممکن است به صورت تصادفی و در اثر ضعف ارتباطی موجود بین نودها در موقع فرستادن اطلاعات بلاکچین به وجود آیند. در برخی موارد این نوع از فورکها نیز مورد قبول قرار میگیرند ولی در کل اکثر فورکهای صورت گرفته در مورد ارزهای دیجیتال، به دلیل برخی اختلاف نظرهای به وجود آمده در جامعه مربوط به آن ارز به وجود میآیند.
نکته قابل توجه در مورد فورکها، این است که ارزهایی که دچار فورک میشوند؛ با ورژن قبلی خود دارای تاریخچهی بلاکچین مشترکی میباشند. بدین صورت که رکوردهای مربوط به تراکنشهای صورت گرفته در هر زنجیرهای، قبل از پدیده فورک، عین هم میباشند.
هارد فورک (Hard fork) یا فورک سخت
در حالت کلی، با دو حالت از پدیده فورک رو به رو هستیم: هارد فورک و سافت فورک
پدیده هارد فورک، به صورت پروسه، اعمال تغییری در پروتکل ارز دیجیتال است. به طوری که بر اساس این هارد فورک صورت گرفته، ورژنهای قبلی اصلاً مورد قبول نمیباشند. در این شرایط، اگر ورژنهای قبلی به فعالیت خود ادامه دهند، با یک پروتکلی متفاوت و نیز دادههایی متفاوت با ورژن جدید، کار خود را ادامه خواهند داد. این وضعیت، ممکن است منجر به آشفتگی در شبکه و نیز بروز خطاهای احتمالی گردد.
در مورد پدیده هارد فورک بیت کوین ، قطعاً با اعمال تغییراتی در پارامترهایی اساسی، نظیر: سایز بلاک، سختی شبکه و برخی جزئیات اطلاعاتی انجام خواهد گرفت. در این حالت، با کوچکترین تغییر صورت گرفته در یکی از این پارامترها، دیگر بلاکها فقط توسط پروتکل جدید مورد قبول قرار خواهند گرفت و توسط ورژنهای قبلی قابل قبول نخواهند بود. این موضوع بیتردید باعث بروز برخی مسائل جدی در شبکه شده و حتی ممکن است باعث از بین رفتن دارائیهای دیجیتالی گردد.
این موضوع را با ذکر مثالی، توضیح دهیم.
فرض کنید که در اثر یک هارد فورک صورت گرفته، سایز بلاک از 1 مگابایت به 4 مگابایت افزایش یافته و تغییر کرده است. در چنین شرایطی، یک بلاک جدید تولید شدهی 2 مگابایتی، توسط نودهای تابع ورژن جدید مورد قبول قرار خواهد گرفت ولی این بلاک از طرف نودهای تابع ورژن قدیمی رد خواهد شد.
حال تصور کنید که همین بلاک 2 مگابایتی توسط یک نود بروزرسانی شده و تابع ورژن جدید، مورد قبول قرار گرفته و در بلاکچین افزوده میشود. در چنین حالتی، اگر بلاک بعدی توسط یک نود بروزرسانی نشده و تابع ورژن قدیمی تأیید شود، چه اتفاقی خواهد افتاد؟
بیتردید این نود سعی خواهد کرد تا بلاک جدید را در بلاکچین اضافه کند. اما در موقع افزودن بلاک جدید، به این موضوع پی خواهد برد که آخرین بلاک افزوده شده در بلاکچین، از نظر خود معتبر نمیباشد. بدین ترتیب این نود با حضور آخرین بلاک مخالفت کرده و بلاک جدید تولید شده را به انتهای بلاک یکی به آخر مانده، اضافه میکند.
در چنین حالتی، به یکباره با دو نوع بلاکچین رو به رو خواهیم بود. یک نوع بلاکچین که شامل بلاکهای هم ورژن قدیم و هم ورژن جدید است؛ و یک نوع بلاکچین دیگر که تنها شامل بلاکهای ورژن قدیم میباشد. اینچنین زنجیرهای در روند رشد و گسترش خود، تماماً متکی بر فعالیت و نوع ورژن نودها میباشد که حتی ممکن است در نهایت شاهد تقسیم شبکه شویم. به طوری که دو یا چند زنجیره قادر خواهند بود تا به صورت موازی رشد کرده و گسترش داشته باشند.
مسئله مصرف دوباره دارائی دیجیتال در هارد فورک
در حالت کلی با اعمال پدیده هارد فورک با شرایط بسیار بینظمی در درون شبکه رو به رو خواهیم بود. البته در کنار این بینظمی، همچنین ممکن است با ریسک مصرف دوباره دارائی دیجیتال نیز رو به رو شویم. مثلاً ممکن است که بیتکوینهای مصرف شده در یک بلاک جدید، بعداً دوباره در یک بلاک ورژن قدیمی مورد استفاده قرار گیرند (چون سرمایهگذاران، کیف پول ها و کاربران از ورژن قبلی استفاده میکنند، متوجه مصرف بیتکوین در ورژن جدید نخواهند شد و از این رو احتمال پدیده مصرف دوباره ارز دیجیتال وجود دارد).
تنها راه حل برای جلوگیری از پدیده مصرف دوباره ارز دیجیتال، این است که یکی از ورژنها به نفع دیگری کنار برود. این کار باعث ضررهایی برای ماینرها خواهد شد (البته تراکنشها به خودی خود از بین نخواهند رفت، بلکه دوباره تخصیص داده خواهند شد). راه حل دیگر، این است که همه نودهای موجود در شبکه در زمان مشابه به ورژن جدید تغییر کنند؛ که در این حالت نیز امکان دستیابی به یک سیستم غیرمتمرکز و توزیع شده بسیار سخت خواهد بود.
نمونهی معروف از هارد فورک صورت گرفته، مربوط به هارد فورک بیت کوین است که در اثر آن، ارز دیجیتال بیت کوین کش به وجود آمد.
سافت فورک (Soft fork)
بر خلاف هارد فورک، یک سافت فورک همواره قادر است تا به راحتی در کنار ورژنهای قبلی به فعالیت خود ادامه دهد.
به عنوان مثال، اگر یک تغییر در پروتکلی صورت گیرد که باعث سختتر شدن قوانین آن شود، این موضوع تنها با اعمال تغییراتی در ظاهر و نیز استفاده از توابعی که به ساختار اصلی آسیب نرسانند، انجام میگیرد. بدین معنی که در نهایت یک سافت فورک، بلاکهای ورژن جدید، توسط نودهای ورژن قبلی نیز مورد قبول قرار خواهند گرفت.
البته در این حالت، همچنان نودهای ورژن جدید، بلاکهای ورژن قدیمی را رد خواهند کرد.
مثلاً در هارد فورک بیت کوین ، ماینرهای ورژن قدیمی اساساً متوجه خواهند شد که بلاکهای آنها مورد قبول قرار نمیگیرند؛ از این رو نیاز دارند که خود را بروزرسانی نمایند. در نتیجه با بروزرسانی هر چه بیشتر ماینرها، زنجیره حاوی بلاکهای جدید طولانیتر خواهد شد.
حال در این وضعیت، بلاکهای ورژن قدیمی، منزویتر خواهند شد که این موضوع باعث ترغیب هر چه بیشتر ماینرها برای اعمال بروزرسانی خواهد شد و در نهایت سیستم خواهد توانست که به تدریج خود را اصلاح نماید. در نهایت نیز از آن جایی که بلاکهای ورژن جدید هم توسط نودهای آپدیت شده و هم نودهای قدیمی مورد قبول است، باعث میشود تا این دسته از بلاکها نسبت به بلاکهای قبلی غالب شده و موفق به کسب پیروزی در برابر رقیب خود شوند.
برای درک بهتر این موضوع، به مثال زیر توجه نمایید
مثلاً فرض کنید که جامعه یک ارز دیجیتال تصمیم گرفتند که سایز بلاک را از 1 مگابایت به اندازه 0.5 مگابایت کاهش دهند. در چنین شرایطی، نودهای ورژن جدید، بلاکهایی با اندازه 1 مگابایت را رد خواهند کرد؛ و بلاکهای جدید خود را بر روی موارد قابل قبول خود (بلاکهایی با اندازه 0.5 مگابایت) اضافه خواهند نمود؛ که این موضوع در نهایت منجر به یک فورک موقت خواهد شد.
این شرایط دقیقاً یک سافت فورک را نشان میدهد که تا به حال چندین بار اتفاق افتاده است. در نظر داشته باشید که در زمانهای اول، برای بیتکوین هیچ نوع محدودیتی در مورد سایز بلاکها تعریف نشده بود که در نهایت در اثر سافت فورک بیت کوین ، محدوده سایز بلاک برابر با 1 مگابایت تعیین شد. در این حالت، قانون جدید وضع شده، محکمتر و محدودتر از قبلی بوده است.
علاوه بر این در سافت فورک بیت کوین ، تابع “pay-to-script-hash” بدون اعمال هیچ نوع تغییری در ساختار اصلی، به کد بیتکوین افزوده شد. توجه داشته باشید که در حالت کلی، این نوع از اصلاحیهها، با توافق اکثریت جامعه ارز دیجیتال اعمال شده و از این رو بسیار عملیتر بوده و آثار مخرب کمتری دارند.
همچنین باید گفت که سافت فورکها با مشکل مصرف دوباره دارائیهای دیجیتال روبهرو نیستند. چرا که سرمایهگذاران و کاربرانی که از نودهای ورژن قدیمی استفاده میکنند، قادر به خواندن بلاکهای مربوط به هر دو ورژن هستند و از این رو متوجه مصرف قبلی آن دارائی خواهند بود.
دیدگاه خود را ثبت کنید