- معنی لغوی Fork
- فورک چیه؟
- فورک به چه دلایلی اتفاق میافته؟
- Fork بهعنوان راهحلی برای اختلافات فنی
- بازگردانی مبالغ از دست رفته، از طریق Fork
- Fork شبکه بهمنظور بهروزرسانی و افزودن قابلیتهای جدید
- فورک شبکه بهمنظور تقسیم اجماع
- انواع فورک
- سافت فورک چیه؟
- هارد فورک چیه؟
- انواع هادفورک در بلاک چین
- هارد فورک برنامهریزی شده
- نمونههایی از هارد فورکهای برنامهریزی شده
فورک چیه؟ هارد فورک چیه؟ سافت فورک چیه؟ Fork به چه دلیلی رخ میده و چرا برای ما اهمیت داره؟ تأثیر Fork بر عملکرد بلاک چین چطوریه؟ و آیا باعث تغییر قیمت ارزهای دیجیتال میشه؟ اگر در فضای ارزهای دیجیتال نسبتاً تازهوارد هستین، احتمالاً گاهی با اصطلاحاتی مواجه میشین که معنای اونها در داخل و بیرون از دنیای بلاک چین، زمین تا آسمان فرق داره! یکی از این اصطلاحات Fork است که احتمالأ در دنیای فیزیکی شما را یاد چنگال (!) یا انشعابات لولهکشی ساختمان میاندازه یا حتی فورکی که در مایکروسافت کاربرد داره. مسأله وقتی بغرنجتر میشه که هاردفوک و سافت فورک رو هم به این مجموعه اصطلاحات اضافه کنیم و بخواهیم از معنی ظاهریشان نقش اونها رو در بلاک چین حدس بزنیم. اگه شما هم در درک مفهوم Fork و نقش فورکها در بلاک چین با مشکل مواجهین، با ما تا انتهای این مقاله همراه باشین.
معنی لغوی Fork
پیش از هرچیز، بهتر هست با معنی فورک در نرمافزارها آشنا بشیم. اصطلاح Fork در توسعه نرمافزارهای متنباز، برای اشاره به تقسیمشدن یک پروژه به دو یا چند نسخه دیگر به کار میره که معمولاً مسیر نسخه اصلی پروژه را قبول ندارن و آن رو طی نمیکنن. در حقیقت با کپیکردن کد منبع یک پروژه و ایجاد تغییراتی در اون، برنامهای جدید از دل برنامه قبلی بیرون میآید. در بلاک چین هم که نوعی پروتکل نرمافزاری هست، Fork به «تقسیم بلاک چین» منجر میشه؛ شرایطی که در اون بلاک چین به دو زنجیره مختلف تقسیم میشه و هرکدوم قوانین مجموع خود رو دنبال میکنن. این روش اغلب زمانی بهکار گرفته میشه که یک گروه خاص یا تیم پروژه، مایل به راهاندازی مسیر جدید یا نسخه جدیدی از نرمافزار بهصورت همزمان باشن. فورکهایی که در این مقاله شرح میدهیم، فورکهایی هستند که یا برای تغییر قوانین اجماع، یا برای اعمال قوانین جدید در همان بلاک چین بهکار میرون. بهبیان ساده، فورک، (fork) یکی از راههای بهروزسانی، اعمال تغییرات و ارتقای بلاک چین هست که باعث تغییر در کد یا پروتکل اصلی شبکه میشه. بعضی از این تغییرات با پروتکل قبلی سازگاری دارن که اصطلاحاً اونها رو سافت فورک (soft fork) یا انشعاب نرم مینامیم و برخی دیگر، باعث ایجاد تغییرات پایهای در عملکرد بلاک چین میشن بهنحوی که با پروتکل قبلی ناسازگار خواهند بود. این دسته از فورکها را هارد فورک (hard fork) مینامیم.
فورک چیه؟
همونطور که احتمالاً میدونین، اطلاعات ثبت شده در بلاک چین قابل تغییر نیستن و وقتی یک بلاک چین فعالیت خود را آغاز میکنه، تا زمانی که کاربران آن را بپذیرن، هیچ کس نمیتونه جلوی کار اون رو بگیره. در هر کدام از ارزهای دیجیتال یک سری قوانین که اصطلاحاً به آن پروتکل میگیم رو برنامهنویسان تعیین کردن و یک بلاک چین براساس همان پروتکل و قوانین تا ابد به کار خود ادامه میده. مثلاً چند مورد از قوانین اصلی شبکه بیت کوین شامل موارد زیر است:
- زمان هر بلاک ۱۰ دقیقه باشه
- هر بلاک ۱ مگابایت ظرفیت داشته باشه
- عرضه کل ۲۱ میلیون واحد باشه
اما اگر کسی با قوانین بیت کوین یا هر ارز دیجیتال دیگری مخالف باشه و بخواد نسخه دلخواه خود رو با استفاده از کد بلاک چین اولیه ایجاد کنه، چگونه این کار رو انجام میده؟ اگر در شبکه یک ارز دیجیتال، یک باگ یا رخنه امنیتی کشف بشه که داراییهای کاربران را تهدید کنه، چگونه میتونیم اون رو رفع کنیم؟ اگر برای افزایش قابلیتهای یک بلاک چین و پیشرفت اون نیاز به ایجاد تغییراتی در کد بلاک چین داشته باشیم چی؟ راهحل ساده است. بهروزرسانی یا ایجاد بلاک چین جدید که اصطلاحاً به آن فورک میگن. وقتی گروهی از برنامهنویسان از شرایط و قوانین یک ارز دیجیتال ناراضی باشن یا این که شبکه با مشکلاتی مواجه باشه که حل اون ضروری است، راهحلی به نام Fork پیش روی این افراد هست. فورکها میتونن به روشی سازگار با قبل (backward-compatible) و یا ناسازگار با قبل (backward-uncompatible) در شبکه اعمال بشن. بهطور خلاصه، واژه Fork یا انشعاب فقط یک اصطلاح برای زمانی هست که یک نرمافزار یا یک پروتکل، بهروزرسانی میشه. در حوزه ارزهای دیجیتال و بلاک چین، Fork زمانی اتفاق میافته که شبکه به دو بخش تقسیم بشه.
بهتر هست همینجا یک نکته گمراهکننده رو تشریح کنیم. مفهوم Fork در علم نرمافزار، با مفهومی که در بلاک چین مدنظر ما هست، تفاوت داره. در علم نرمافزار، هر پروژه نرمافزاری که از کد متن-باز پروژه دیگری ایجاد شده باشه، Fork محسوب میشه؛ اما در دنیای بلاک چین، اصطلاح فورک رو فقط در مورد پروژههایی به کار میبریم که تغییراتی را روی یک زنجیره اعمال کرده باشن یا اون رو به دو بخش تقسیم کرده باشن. طبق این تعریف، بلاک چین بیت کوین کش (که مستقیماً پروتکل بیت کوین رو تغییر میده) یک فورکبیت کوین محسوب میشه ولی بلاک چین لایت کوین (که جدا از بلاک چین اصلی بیت کوین ساخته شده و فقط از کد منبع بیت کوین استفاده کرده) فورکبیت کوین محسوب نمیشه.
فورک به چه دلایلی اتفاق میافته؟
فورک راهی برای اعمال بهروزرسانی یا ارتقای نرمافزاری، افزودن ویژگیهای جدید، بالا بردن قابلیتهای کنونی و ارتقای پروتکلهای امنیتی در یک جهان غیرمتمرکز است. ازآنجاکه بلاک چین شبکهای غیرمتمرکز و توزیعشده است، نمیتونیم مثل کامپیوترهای خانگی یا سرورهای یک شرکت، بهراحتی اقدام به بهروزرسانی آن کنیم. بلکه این بهروزرسانی باید در نرمافزار همه یا بخشی از بازیگران اصلی شبکه (نودها یا گرهها) نیز اعمال بشه. وقتی قوانین تغییر یافته و فعال شوند، بلاک چین به دو انشعاب یا Fork تبدیل میشه. این قوانین در یک شماره بلاک مشخص (Block height) تغییر یافته و تاریخچه زنجیره جدید (فورکشده یا بهروزرسانیشده) در آن شماره بلاک، از تاریخچه زنجیره قدیمی جدا میشه. اصلیترین سناریوهایی که به رخدادن Fork منجر میشه، شامل موارد زیر هستن:
Fork بهعنوان راهحلی برای اختلافات فنی
زمانی که توسعهدهندگان، بنیانگذاران یا حتی افراد تأثیرگذار در اکوسیستم یک بلاک چین، بر سر مسائل فنی شبکه دچار اختلاف نظر میشن، فورک کردن بلاک چین و ایجاد زنجیرهای جدید، یکی از راهحلهای احتمالی خواهد بود. بهعنوان مثال، بیت کوین کش (BCH) یکی از فورکهای بیت کوین است که در سال ۲۰۱۷ بهدلیل اختلاف نظرهای گسترده درباره مقیاسپذیری بیت کوین انجام شد. گروهی از توسعهدهندگان و ماینرهای بزرگ بیت کوین که از سرعت و کارمزد تراکنشها ناراضی بودن، با اعمال تغییرات گسترده در قوانین بیت کوین و افزایش سایز بلاک (از ۱ مگابایت به ۸ مگابایت)، بلاک چین و نسخه جدیدی از پروتکل را ارائه دادند.
همچنین در سال ۲۰۱۸ (یک سال بعد از Fork بیت کوین کش)، جامعه کاربران و توسعهدهندگان بیت کوین کش هم به دو دسته تقسیم شد و گروهی (به رهبری کریگ رایت) با پیشنهاد حذف محدودیت بلاکها و اعمال دوباره برخی از قابلیتهای فنی مدنظر ساتوشی ناکاموتو (خالق بیت کوین) که توسعهدهندگان بعدی از پروتکل بیت کوین حذف کرده بودن، Fork دیگری رو ایجاد کردن که بهدنبال آن، بلاک چین و ارز دیجیتال جدید BSV (بیت کوین ساتوشی ویژن) ایجاد شد.
بازگردانی مبالغ از دست رفته، از طریق Fork
گاهی بهدلیل وجود باگهای فنی در پروتکل بلاک چین، یا برنامههای غیرمتمرکزی که بر روی آن ایجاد شدهاند، بخش عظیمی از داراییهای کاربران، تحت تأثیر حملات هک از دست میرود. در چنین شرایطی، ممکن است توسعهدهندگان اصلی شبکه ترجیح دهند که با اعمال تغییراتی در بلاک چین، تراکنشهای کلاهبرداری را حذف کرده و سرمایهها را بازگردانند. البته چنین تصمیمی ابداً ساده نیست؛ چرا که حذف یک تراکنش یا یک بلاک از بلاک چین، کاری شبیه به دستکاری یا سانسور شبکههای متمرکز است که میتواند فلسفه وجودی بلاک چین را زیر سؤال ببرد. با این حال، این اتفاق قبلاً در سال ۲۰۱۶ برای بلاک چین اتریوم رخ داده است.
در سال ۲۰۱۶، بعد از رخدادن هک DAO و از دست رفتن میلیونها دلار از سرمایه کاربران، جامعه توسعهدهندگان و بنیانگذاران اتریوم مجبور به ارائه فورک شد تا بتواند اعتماد مردم را به دست آورد. اگرچه این Fork انتقادات زیادی را به همراه داشت، اما با پشتیبانی ویتالیک بوترین از این تصمیم، بلاخره اجرایی شد و اکثر کاربران هم به شبکه جدید مهاجرت کردند. نسخه فورکشده اتریوم (بهدلیل پشتیبانی اعضای اصلی و اکثریت کاربران) نام اتریوم (ETH) را با خود حفظ کرد و نام نسخه قدیمی شبکه، به اتریوم کلاسیک (ETC) تغییر کرد که ارز دیجیتال آن هنوز هم در بازار خریدوفروش میشود و طرفداران خاص خود را دارد.
Fork شبکه بهمنظور بهروزرسانی و افزودن قابلیتهای جدید
یک شبکه بلاک چینی در طول زمان نیازمند بهروزرسانیهای فنی است تا هم شبکه را از خطرات پیش رو حفظ کند و هم امکان ایجاد قابلیتهای جدید را فراهم کند. ازآنجاکه که این آپدیتها نیازمند تغییرات پروتکل هستند، انجام یک فورک در شبکه ضروری خواهد بود. اما چنین فورکهایی اغلب با رضایت اکثریت کاربران و توسعهدهندگان بر روی شبکه انجام میشوند و عملاً زنجیره بلاک چین بهجای دوشاخه شدن، تغییر مسیر میدهد. آپدیت سگویت (SegWit) که در سال ۲۰۱۷ بر روی شبکه بیت کوین انجام شد، یک نمونه از این فورکهاست. سگویت که کوتاهشدهی عبارت Segregated Witness است، در واقع یک طرح بهبود بیت کوین است که در راستای رفع دو مشکل عمده اجرا و پیادهسازی شد. هدف از این Fork ، در درجه اول فراهمآوردن شرایطی برای محافظت از انعطافپذیری (Malleability) تراکنشها و در گام بعدی افزایش ظرفیت بلاک (Block Capacity) در شبکه بلاک چین بیت کوین بود.
فورک شبکه بهمنظور تقسیم اجماع
در برخی از بلاک چینها، از فورکها بهمنظور تقسیم قدرت اجماع شبکه بین چندزنجیره موازی استفاده میشود. در واقع در چنین مواردی، زنجیره بلاک چین برای افزایش مقیاسپذیری و سرعت تأیید تراکنشها، به چند زنجیره موازی و هماهنگ تقسیم میشود که هرکدام، اعتبارسنجهای مخصوص به خود را دارند. این روش که قرار است در نسخه دوم اتریوم (Ethereum2.0) از آن استفاده شود، شاردینگ (sharding) نام دارد. این نوع از فورکها ، قوانین زنجیره اصلی و جامعه کاربران را تقسیم نمیکنند؛ اما از لحاظ ساختار پیادهسازی، فورک محسوب میشوند. نوع دیگری از این فورکها ، شاردینگ ناهمگون است که در بلاک چینهای نسل سوم مانند پولکادات از آن استفاده میشود. در شاردینگ ناهمگون، شبکه از ابتدا به چندین زنجیره موازی با قوانین اجماع و اعتبارسنجهای مجزا تقسیم میشود. هر کدام از این زنجیرهها یک شارد یا پاراچین نامیده میشوند که برای کاربرد خاص و اجرای یک برنامه غیرمتمرکز طراحی شدهاند. این ابتکار در حقیقت از ایجاد Fork در بلاک چین جلوگیری میکند؛ اما ساختار آن برگرفته از مفهوم Fork و انشعاب زنجیره اصلی است.
انواع فورک
در بخش قبل، دلایل ایجاد فورک در بلاک چین را مرور کرده و برای هر مورد، نمونههایی رو بررسی کردیم. فورکها را بر اساس نوع هدفی که پشت آنهاست، به دو دسته کلی تقسیم میکنیم: «تغییر قوانین پروتکل» و «تقسیم اجماع». فورکهای مربوط به تقسیم اجماع، همان پیادهسازیهای شاردینگ هستند که در بخش قبل به آنها اشاره کردیم. اما فورکهای مربوط به تغییر قوانین پروتکل، بر اساس سازگاربودن یا نبودن با زنجیره اولیه، به دو دسته کلی هارد فورک و سافت فورک طبقهبندی میشوند. در ادامه، با مفهوم سافت فورک و هارد فورک ، ویژگیها و انواع آنها آشنا خواهیم شد.
سافت فورک چیه؟
سافت فورک (soft fork) یک بهروزرسانی در نرمافزار فورک است که با نسخه قدیمی سازگاری دارد یا اصطلاحاً backwards compatible است. این یعنی همه شرکتکنندگان چه نرمافزار خود را آپدیت کرده و چه نکرده باشند، میتوانند بلاکهای جدید شبکه را دریافت کرده و اطلاعات بلاک چین را به دفترکل خود اضافه کنند. همچنین در صورتی که تغییرات ایجادشده در پروتکل به کاربران مربوط باشد، مثلاً ساختار آدرسهای شبکه را تغییر دهد، کاربران هنوز هم میتوانند به شیوه سابق از شبکه استفاده کرده و با آدرسهای قدیمی خود تراکنش ارسال کنند. نکته اینجاست که درصورت پذیرش آپدیت توسط اکثریت نودها، نودهای آپدیتنشده نمیتوانند بلاکهای خود را ایجاد و ثبت کنند. زیرا بلاک پیشنهادی آنها توسط اکثریت اعضای شبکه (نودهای آپدیتشده) رد خواهد شد.
پذیرفتن یک سافت فورک همان تداوم زنجیره اصلی است؛ یعنی بلاک چین حفظ میشود اما کدها، ویژگیها و ترمیمهای اعمال شده، باعث ارتقای آن میشوند. با اعمال سافت فورک، زنجیره جدیدی ساخته نخواهد شد؛ زیرا اکثر نودها این آپدیت را پذیرفتهاند و ازاینرو زنجیره جدید، همان زنجیره اصلی یا سنگینترین زنجیره خواهد بود. بهعنوان مثال فرض کنید با اعمال یک سافت فورک، قرار است سایز بلاکها از ۱ مگابایت به ۲ مگابایت افزایش پیدا کند. در این صورت، نودهایی که نرمافزار خود را آپدیت نکردهاند، میتوانند بلاکهای جدید را ببینند و در فرایند اعتبارسنجی شرکت کنند اما نمیتوانند بلاکهای ۱ مگابایتی خود را در شبکه به ثبت برسانند؛ چراکه اکثریت شبکه، بلاکهای ۱ مگابایتی را به رسمیت نمیشناسند. بنابراین بلاکهای ارائهشده از سوی این نودها درنهایت از زنجیره اصلی حذف خواهد شد. از این رو سافت فورک یک مکانیزم ارتقاء تدریجی را نشان میدهد که در آن، افرادی که نرمافزار خود را آپدیت نکردهاند، با محدودشدن قابلیتهایشان، انگیزهی کافی را برای اینکار را پیدا کنند.
هارد فورک چیه؟
هارد فورک (hard fork) یک بهروزرسانی در نرمافزار است که با نسخه قدیمی ناسازگار یا اصطلاحاً not backwards compatible است. در صورت انجام هارد فورک، تمامی شرکتکنندگان باید نرمافزار خود را بهروزرسانی کنند تا بتوانند در تأیید تراکنشها و ثبت بلاکها مشارکت کرده و همچنین بلاکهای ارسالشده از سوی نودهای آپدیتشده را دریافت کنند. درصورتی که عدهای از نودها و کاربران در شبکه قدیمی باقی بمانند، بلاک چین به دو انشعاب با قوانین اجماع متفاوت تقسیم شده و در زنجیره فورک شده، یک ارز دیجیتال جدید ایجاد خواهد شد. تا زمانی که کاربرانی در زنجیرهی قدیمی حضور داشته باشند، دو بلاکچین به صورت جداگانه و همزمان وجود خواهند داشت.
بیت کوین کش و اتریوم کلاسیک مشهورترین هارد فورکهایی هستند که تاکنون رخ داده و منجر به پیدایش ارزهای دیجیتال جدید BCH و ETC شدهاند. البته هاردفورکها همیشه باعث به وجود آمدن یک ارز دیجیتال جدید نمیشوند؛ بلکه در اغلب موارد، تمام جامعه برسر آن توافق میکنند. بهعنوان مثال، هارد فورکهای شلی (Shelley) و آلونزو (Alonzo) در بلاک چین کاردانو و هارد فورکهای هومستد (Homestead) و متروپلیس (Metropolis) در بلاک چین اتریوم، از جمله مواردی هستند که با برنامهریزی قبلی و با کسب اجماع همه اعضای جامعه، انجام شدند.
انواع هادفورک در بلاک چین
هارد فورکها بسته به نحوه اجرا و هدفی که پشت آنهاست، به انواع مختلفی تقسیم میشوند. در ادامه، یک مورد از انواع هاردفورکها را در بحث فورک یا Fork با هم بررسی میکنیم.
هارد فورک برنامهریزی شده
هارد فورک برنامهریزی شده (Planned Hard Forks)، یک بهروزرسانی در پروتکل است که از ابتدا در نقشه راه پروژه در نظر گرفته میشود. ازآنجاکه این بهروزرسانی در راستای ارتقای قابلیتها و ویژگیهای بلاک چین است، تمامی شرکتکنندگان به رهبری توسعهدهندگان اصلی به زنجیره جدید رفته و نرمافزار خود را آپدیت میکنند؛ چراکه این تغییرات در سطح کدنویسی پایه شبکه صورت میپذیرند. در هاردفورکهای برنامهریزی شده، زنجیره قبلی از شماره بلاک مشخصی قطع شده و زنجیره جدید شروع به کار میکند. در این فورک ، کوین جدیدی بهوجود نخواهد آمد.
نمونههایی از هارد فورکهای برنامهریزی شده
هارد فورک لندن در شبکه اتریوم:
این هارد فورک شامل پنج پیشنهاد بهبود اتریوم (EIP) بود که با هدف بهینهسازی عملکرد و ارتقای قابلیتهای بلاک چین اتریوم، در تاریخ ۴ اوت ۲۰۲۱ (۱۳ مرداد ۱۴۰۰) به وقوع پیوست. یکی از این تغییرات مهم، EIP ۱۵۵۹ نام دارد که مکانیسمی برای محدودکردن تدریجی رشد عرضه اتر ارائه میدهد که به موجب آن، با انجام هر تراکنش مقدار متغیری اتر از گردش خارج میشود. این تغییر در نهایت به کاهش کارمزد تراکنشهای اتر میانجامد.
هارد فورک آلونزو در شبکه کاردانو:
کاردانو در ۱۲ آگوست ۲۰۲۱ (۲۱ مرداد ۱۴۰۰) هارد فورک آلونزو را بر روی شبکه اصلی اجرا کرد. هاردفورک آلونزو این امکان را فراهم میکند تا قراردادهای هوشمند کاردانو با استفاده از اسکریپتهای پلوتوس روی این بلاک چین نوشته شود. تیم توسعهدهنده کاردانو، این اسکریپت را زبانی توسعهیافته برای قراردادهای هوشمند و پلتفرمی برای اجرای برنامهها با استفاده از زبان برنامهنویسی هَسکِل (Haskell) معرفی میکند.
هارد فورک بحثبرانگیز
هاردفورکهای بحثبرانگیز، معمولاً بهعلت اختلاف نظر بین اعضای شبکه اتفاق میافتد و موجب میشوند بخشی از شرکتکنندگان، زنجیرهی جدیدی که از نظر خودشان بهتر است را با تغییرات عمدهای در کد ایجاد کنند.
نمونهای از هارد فورکهای بحثبرانگیز:
اتریوم کلاسیک:
شبکه اتریوم بهمنظور خنثیکردن تأثیرات هکی که در یکی از برنامههای غیرمتمرکز آن به نام «سازمان خودمختار غیرمتمرکز» یا DAO اتفاق افتاد، در ژوئن ۲۰۱۶ دچار هارد فورک شد. ویتالیک بوترین، بنیاد اتریوم، توسعهدهندگان اصلی اتریوم و اکثریت شرکتکنندگان شبکه، با این هاردفورک موافقت کردند و تنها تعداد معدودی از مواضع خود کوتاه نیامده و نرمافزار خود را آپدیت نکردند که بلاکچین آنها به اتریوم کلاسیک (ETC) تغییر نام یافت. در حال حاضر، هدایت اتریوم کلاسیک بر عهده چارلز هاسکینسون (بنیانگذار کاردانو) است و بهدلیل هشریت پایین، تاکنون چندبار مورد حمله ۵۱ درصدی واقع شده است.
بیت کوین کش:
در سال ۲۰۱۷ و در بحبوحه افزایش نجومی کارمزدهای شبکه بیت کوین و تأخیر تراکنشها، گروهی از توسعهدهندگان بیت کوین با حمایت راجر ور (Roger Keith Ver)، تصمیم گرفتند با اجرای هارد فورکی در بلاک چین بیت کوین، سایز بلاکها را از ۱ مگابایت به ۸ مگابایت افزایش دهند. این کار باعث میشد که مقیاسپذیری شبکه افزایش یافته و مشکل کارمزدها و ترافیک شبکه تا حدی برطرف شود. این هاردفورک بلاخره در ۱ اوت سال ۲۰۱۷ پس از کشمکشی طولانی اتفاق افتاد و بلاک چین بیت کوین را به دو قسمت تقسیم کرد: بیت کوین و بیت کوین کش. این هارد فورک همچنین منجر به پیدایش ارز جدیدی به نام بیت کوین کش (BCH) شد.
امیدواریم این مقاله برای شما مفید بوده باشد.
فرم و لیست دیدگاه
هنوز دیدگاهی وجود ندارد.