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

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

فورک چیست؟

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

  • نیاز به ایجاد تغییر به منظور بهبود عملکرد شبکه
  • عدم توافق در مورد تغییرات پیشنهادی در پروتکل شبکه
  • ریسک‌های امنیتی و کاهش آسیب‌های وارده توسط هکرها یا باگ‌ها

در پروژه‌های اُپن سورس، این اتفاق زیاد رخ می‌دهد و مدت‌ها قبل از پیدایش بیت کوین و اتریوم نیز اتفاق افتاده است. در بلاکچین، اصطلاح فورک معمولاً در دو زمینه مختلف استفاده می‌شود: یکی که به یک انشعاب تصادفی و موقت در بلاکچین به دلایل صرفاً فنی اشاره دارد و دیگری که به‌روزرسانی داوطلبانه پروتکل را توصیف می‌کند و دو نوع دارد: برنامه‌ریزی شده و مناقشه‌ای.

فورک‌های تصادفی و موقت

از دیدگاه فنی، یک فورک تصادفی یا موقت، انشعاب بلاکچین در زمانی است که دو یا چند بلوک معتبر یکسان وجود داشته باشد. در سیستم‌های بلاکچین مبتنی بر اثبات کار (PoW)، این نوع فورک زمانی اتفاق می‌افتد که دو یا چند ماینر، تقریباً همزمان، الگوریتم PoW را حل کنند. هنگامی که دو ماینر، عدد نانس (Nonce) صحیح (راه‌حل اثبات کار) را پیدا کردند، بلافاصله بلوک‌های خود را به گره‌های (Node) مجاور خود در شبکه ارسال می‌کنند. آنها نیز اولین بلوکی را که دریافت کرده‌اند، در سراسر شبکه منتشر می‌کنند.

در صورت تمایل به آشنایی بیشتر با الگوریتم اثبات کار (PoW)، مقاله «راهنمای جامع ماینینگ یا استخراج ارز دیجیتال» را مطالعه بفرمایید. به دلیل قوانین پروتکل در سیستم‌های بلاکچین توزیع شده، هر گره که یک بلوک معتبر دریافت می‌کند، باید آن را در نسخه بلاکچین خود بگنجاند و بلاکچین را به اندازه یک بلوک طولانی کند. هنگامی که فقط چند میلی ثانیه بعد، همان گره، بلوک معتبر دیگری را با همان ارتفاع بلوک (Block Height) می‌بیند، نمی‌تواند کاری بکند، جز اینکه آن را رد کند. زیرا قبلاً یک بلوک معتبر با همان ارتفاع را پیدا کرده که دارای همان بلوک والد است و به آن متصل شده است.

بلوک‌هایی که در سراسر شبکه منتشر می‌شوند در زمان‌های متفاوتی به گره‌های مختلف می‌رسند. برای مثال، فرض کنید دو گره، یکی در ایالات متحده و دیگری در چین، دو بلوک معتبر، یکی «آبی» و دیگری «قرمز» را با یک ارتفاع بلوک پیدا کنند. اگر هر دو بلوک آبی و قرمز، یک راه حل صحیح برای اثبات کار داشته باشند، معتبرند، و هر دو بلوک بر روی یک بلوک مادر ساخته می‌شوند.

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

این اتفاق به یک وضعیت موقتی منجر می‌شود که در آن، دو نسخه مختلف از بلاکچین وجود دارد؛ یکی که آخرین بلوک در زنجیره آن، بلوک قرمز است و دیگری که آخرین بلوک، بلوک آبی است. این دو در حال رقابت با یکدیگر برای تبدیل شدن به تنها بلاکچین درست با بیشترین سختی تجمعی یا نرخ هش صرف شده هستند. به عبارت دیگر، شبکه برای یک لحظه کوتاه، دو نسخه متناقض از بلاکچین را معتبر در نظر می‌گیرد.

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

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

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

وقتی مردم در مورد فورک‌ها در فضای ارزهای دیجیتال بحث می‌کنند، معمولاً به سافت فورک (Soft Fork) یا هارد فورک (Hard Fork) و به ندرت به فورک‌های فنی یا غیرارادی و تصادفی اشاره می‌کنند. این نوع فورک‌ها نسبت به فورک‌های موقت رواج کمتری دارند، اما برای کاربران ارزهای دیجیتال از اهمیت بسیار بیشتری برخوردارند. هارد فورک و سافت فورک علی‌رغم داشتن نام مشابه و در نهایت، هدف یکسان، تفاوت‌های قابل ملاحظه‌ای با یکدیگر دارند. اجازه دهید به هر یک نگاهی بیاندازیم.

سافت فورک چیست؟

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

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

softfork سافت فورکنمونه سافت فورک؛ به‌روزرسانی SegWit

معروف‌ترین نمونه سافت فورک، به‌روزرسانی Segregated Witness (SegWit) است که در 23 آگوست 2017 در شبکه بیت کوین معرفی شد. SegWit به دلیل نیاز به مقیاس‌پذیری یا افزایش ظرفیت توان عملیاتی تراکنش بیت کوین متولد شد. راه حل پیشنهادی ساده و در عین حال ظریف بود: کاهش اندازه تراکنش‌ها و به طور همزمان، افزایش حداکثر ظرفیت اندازه بلوک به منظور بهبود تعداد تراکنش‌های موجود در هر بلوک.

در ابتدا، بلوک بیت کوین با اندازه یک مگابایت طراحی شد و میانگین اندازه تراکنش، 500 بایت بود. یعنی در ابتدا، حداکثر ظرفیت هر بلوک بیت کوین تقریباً به اندازه 2000 تراکنش بود. به‌روزرسانی SegWit با افزایش محدودیت اندازه بلوک به 2 مگابایت و کاهش اندازه متوسط ​​تراکنش SegWit تا 60 درصد، توان عملیاتی بیت کوین را افزایش داد. این کار را با جدا کردن امضای (شاهد) هر تراکنش از داده‌های آن تراکنش و ارسال آن از طریق کانالی متفاوت انجام داد.

زیبایی به‌روزرسانی Segregated Witness این است که به گره‌های ارتقا نیافته اجازه می‌دهد تا بلوک‌ها و تراکنش‌های SegWit را بدون هیچ مشکلی تأیید کنند، بنابراین باعث ایجاد هارد فورک یا تقسیم دائمی بلاک چین بیت کوین نمی‌شود.

هارد فورک چیست؟

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

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

هارد فورک یا Hard forkهارد فورک‌ها را می‌توان به دو دسته کلی تقسیم کرد: هارد فورک‌های برنامه‌ریزی شده و هارد فورک‌های مناقشه‌ای یا بحث برانگیز.

هارد فورک برنامه‌ریزی شده

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

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

نمونه هارد فورک برنامه‌ریزی شده: هارد فورک مونرو (Monero)

یک نمونه جالب از هارد فورک برنامه‌ریزی شده، هارد فورک RingCT مونرو است که در ژانویه 2017 رخ داد. چون این به‌روزرسانی از نوع هاردفورک‌های مناقشه‌ای نبود، لذا منجر به شکافی در جامعه و ایجاد یک سکه جدید نشد. این پروژه به سادگی پروتکل خود را به‌روز کرد و یک ویژگی جدید برای افزایش حریم خصوصی به نام Ring Confidential Transactions یا RingCT اضافه کرد.

هارد فورک مناقشه‌ای

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

در حالی که نمونه‌های بسیار خوبی از هارد فورک‌های مناقشه‌ای در صنعت ارزهای دیجیتال وجود دارد، دو مورد از آنها خاص و جالب توجه هستند: انشعاب بین بیت کوین (BTC) و بیت کوین کش (BCH) و دیگری بین اتریوم (ETH) و اتریوم کلاسیک (ETC).

نمونه هارد فورک مناقشه‌ای؛ انشعاب میان بیت کوین و بیت کوین کش

هارد فورک بیت کوین کش (Bitcoin Cash) شناخته شده‌ترین نمونه هارد فورک مناقشه‌ای است. این انشعاب بزرگ در جامعه بیت کوین با بحث‌های طولانی در مورد بهترین راه برای افزایش مقیاس‌پذیری بیت کوین همراه بود.

بخشی از جامعه به نام “بلاکرهای بزرگ” به نفع افزایش محدودیت اندازه بلوک به اندازه 2 مگابایت، استدلال‌هایی ارائه می‌کردند. آنها معتقد بودند که این مساله، مشکلات ظرفیت توان عملیاتی تراکنش‌های بیت کوین را حل می‌کند. در مقابل، بخش دیگری از جامعه یا “بلاکرهای کوچک” به شدت با این پیشنهاد مخالفت کردند و استدلال می‌کردند که این امر به ناچار به تمرکز بیشتر در استخراج منجر می‌شود. این بحث‌ها چندین سال ادامه داشت تا اینکه سرانجام در اول آگوست 2017، گروه بلاکرهای بزرگ، امور را به دست گرفتند، بلاکچین بیت کوین را فورک کردند و ارز دیجیتال خود را با بلوک‌هایی با اندازه بزرگ‌تر به نام بیت کوین کش ایجاد کردند.

نمونه هارد فورک مناقشه‌ای؛ انشعاب بین اتریوم و اتریوم کلاسیک

یکی دیگر از نمونه‌های جالب هارد فورک مناقشه‌ای، انشعاب اتریوم کلاسیک در 20 جولای 2016 است. در این مورد، دلیل اصلی هارد فورک، هک DAO در 17 ژوئن 2016 بود که منجر به از دست رفتن 3.6 میلیون اتر به ارزش حدودی (آن زمان) 50 میلیون دلار شد. بخش قابل توجهی از جامعه سعی و تلاش می‌کردند تا تغییری در وضعیت بلاکچین ایجاد کنند و اثرات سرقت DAO را از بین ببرند. در مقابل، اقلیتی از جامعه از نظر فلسفی با این تغییر مخالف بودند و می خواستند ماهیت تغییرناپذیر بلاکچین اتریوم را حفظ کنند. دو طرف نتوانستند اختلافات خود را حل کنند. در نهایت، توسعه‌دهندگان اصلی اتریوم و اکثریت جامعه با هارد فورک پیش رفتند. به طور همزمان، اقلیت کوچکی که با این تغییر مخالف بودند، نرم‌افزار خود را ارتقا ندادند و به استخراج نسخه قدیمی بلاکچین، که اکنون با نام Etheruem Classic (ETC) شناخته می‌شود، ادامه دادند.

سخن پایانی

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