فورک (انشعاب) به زبان ساده

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

(برگردان از فایل ویدیویی از آندراس آنتونو پولوس با عنوان فورکولوژی)

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

حرف زدن از بلاکچین کسالت آور است؟

بدیهی است درک این تکنولوژی برای خیلی ها آسان نیست. همان طور که اگر کسی بگوید بلاکچین را کشف کرده، خنده دار خواهد بود. مطلب دیگری که لازم است گفته شود این است که نام بیتکوین با کلمه بلاکچین عجین شده و نمی­توان این را نادیده گرفت. در کنفرانسی شرکت داشتم و سخنزان ۴۵ دقیقه درباره بلاکچین صحبت کرد بدون اینکه حتی اشاره ای به بیتکوین داشته باشد! ممکن است شما دوستانی داشته باشید که در دوسال گذشته در این حوزه کار کرده اند و فقط بلدند درباره این موضوعات صحبت کنند تا جایی که اطرافیانشان از این وضعیت دلخور می­شوند. من یکی از این افراد هستم که صحبت هایم برای دوستانم کسل کننده بود تا اینکه بالاخره قیمت بیتکوین بالا رفت و موضوع برایشان جذاب شد.

بمباران واژه ها

اگر شما با این موضوعات تاکنون آشنایی نداشتید و تازه شروع کرده اید به خواندن درباره این مفاهیم، با بمباران واژه ها در این حوزه روبرو می­شوید: استخراج، بلاکچین، آدرس عمومی، آدرس خصوصی و … که همگی برایتان تازگی دارد و در ابتدا به قدری گیج می­شوید که با خود خواهید گفت: “آه اینها دیگر چه مزخرفاتی هستند.”

تازه داستان بدتر هم می­شود. یک کیف پول دیجیتال نصب و تراکنشی را دریافت می­کنید. متوجه شروع یک جنگ در بیتکوین می­شوید که شما را به فورک تهدید می­کنند. اول که معنی فورک را نمی­دانید فکر می­کنید منظورشان همان چنگال است. با خود می­گویید آیا باز هم این یک شوخی است؟

یکی می­گوید فورک نرم و دیگری می­گوید فورک سخت. شما هم که در تمام زندگی تان فقط با فورک (چنگال!) سخت سرو کار داشته اید با خود می­گویید آیا فورک نرم، منظور نوعی چنگال! نرم است!؟ (خنده حاضرین) و باز هم بیشتر گیج می­شوید. می­خواهم به شما کمک کنم موضوع را درک کنید.

فورک

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

حل اختلاف

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

هر دو بلاک تولید شده از زاویه ای هردو معتبر هستند چون از روی بلاک نوک زنجیره (بلاک قله) که خودش معتبر بوده، ساخته شده اند. تا اینجای کار عادلانه است. اما!

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

آنقدر این وضعیت در طول ۱۰ دقیقه تکرار می­شود تا زمانی که ۹۵% بلاکی که دست همه است آدرس بالاسری اش معتبر باشد و در نهایت آن بلاک پذیرفته می­شود. این اتفاقی است که هر هفته ۲ یا ۳ بار رخ می­دهد.

توافق جمعی (Consensus)

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

هاردفورک و سافت فورک

حال ببینیم هارد فورک و سافت فورک با هم چه تفاوتی دارند. این ها به دو صورت قوانین (کد برنامه) را تغییر می­دهند: سخت تر و سست تر. اگر سست تر شوند، قوانینی که تاکنون نامعتبر بودند حالا معتبر می­شوند که به آن هارد فورک گفته می­شود. اما اگر قوانین محکم تر شوند یعنی قوانینی که تاکنون معتبر بودند اکنون دیگر معتبر نیستند به آن سافت فورک گفته می­شود.

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

اما هردو این تغییر قوانین برای اجرایی شدن نیاز به اجماع روی شبکه دارد. اگر تا اینجای کار هنوز هم برایتان روشن نشده به این مثال توجه کنید.

تشبیه بلاکچین به رستوران های زنجیره ای غیر متمرکز گیاه خواری

بلاکچین را بصورت مجموعه ای از رستوران های غیر متمرکز گیاه خواری تصور کنید. یک عده در پشت صحنه این رستوران مشغول آشپزی و آماده کردن منو های گیاه خواری با استفاده از وسایل و انرژی هستند و غذایی که آماده می­کنند همان بلاک ها هستند که می­خوان به مشتری (کاربر) تحویل بدهند که در بلاکچین به آنها استخراج کننده گفته می­شود.

حال فرض کنید که این آشپز ها تصمیم بگیرند که به منوها گوشت اضافه کنند. اضافه کردن گوشت یعنی سست کردن قوانین که یعنی هارد فورک. پس عده ای که منو ها (قوانین) را دنبال می­کردند ناگهان متوجه شدند که گوشت جزء قوانین نبوده است پس می­گویند این رستوران معتبر نیست (بلاک معتبر نیست) و باید به یک رستوران دیگر بروند. پس این رستوران یک هارد فورک انجام داده و کسانی که می­خواهند همچنان از این رستوران استفاده کنند باید رژیمشان (کد نرم افزار) را ارتقاء داده تا با منوی (قوانین) جدید سازگاری داشته باشند.

حال از زاویه دیگری نگاه می­کنیم. فرض کنید آن رستوران از منوی گیاه خواری خود بجای اضافه کردن گوشت، فروارده های حیوانی (شیر، پنیر، کره، تخم مرغ و …) را حذف کرده و تبدیل به منوی وگان (Vegan) کند (وگان رژیمی است که در آن هیچ یک از فراورده های حیوانی مثل گوشت، کره، شیر، پنیر، تخم مرغ و … مصرف نمی­شود) در اینصورت کسی که قبلا گیاه خواری داشته همچنان می­تواند از منوی وگان هم استفاده کند (ادامه زنجیره با قوانین قبلی) و مشکلی نخواهد بود. یعنی شما مجبور نیستید وگانیست باشید تا آنجا غذا بخورید، می­توانید همچنان گیاه خوار باقی بمانید. پس در اینجا قوانین محکم تر شده و به عبارتی یک سافت فورک رخ داده است.

حال بیایید به ۵ گروه نگاه کنیم:

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

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

فعال شدن فورک

چهار دسته فورک وجود دارد هارد فورک یا سافت فورک فعال شده توسط استخراج کنندگان و هارد فورک و سافت فورک فعال شده توسط کاربران. هرچند این چهار دسته به نظر ساده می­رسند اما در عمل پیچیدگی های فراوانی دارند.

یک نمونه سافت فورک فعال شده توسط کاربران، BIP148 است که در اول آگوست ۲۰۱۷ فعال خواهد شد. BIP مخفف Bitcoin Implementation Proposal یک پروپوزال توسعه بیتکوین توسط کاربر است. BIP148 بیش از یک سال است که ارائه شده و با فعال شدن آن در اول آگوست، تمام کاربران حمایت کننده از آن، از آن پس دیگر بلاکی را که سگویت را سیگنال دهی نکند (یعنی کد متن آن به این پروپوزال ارتقا نیافته باشد) را اعتبار دهی نکرده و نخواهند پذیرفت. اتفاقی که افتاده است این که کاربران از این پروپوزال حمایت کرده اند اما استخراج کنندگان آن را نمی­خواهند و بحثی که در این میان بوجود آمده این است که کاربران به استخراج کنندگان می­گویند اگر شما از  BIP148 حمایت نکنید ما هم بلاک شما را نخواهیم پذیرفت.

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

محتاط باشید

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

کار عاقلانه این است که تا مدتی بعد از فورک نه برای کسی بیتکوین بفرستید و نه از کسی دریافت کنید زیرا ناپایداری و عدم اطمینان وجود دارد و ممکن است یک شاخه از زنجیره برای همیشه ازبین برود (پاک شود).

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

بنابراین یک ریسک وجود دارد که اگر در شاخه نامعتبر تراکنش ارسال کنید و یا این که در هر دو شاخه بیتکوین خود را خرج کنید که به آن خرج کردن دوگانه (Double Spending) گفته می­شود، در آن صورت ممکن است سرمایه شما با خطر مواجه شود یعنی در هر دو شاخه تراکنش نامعتبر شده و بیتکوین شما از دست برود.

پس صبر کنید.

 حدود دو هفته صبر کنید تا جنگ بین دو شاخه و نا پایداری از بین برود. این همان وضعیتی است که برای اتریوم و اتریوم کلاسیک نیز رخ داد. باید کمی محافظه کار باشید.



دیدگاه هایی که در این مقاله ارائه شده اند، متعلق به نویسنده می باشند و لزوماً مربوط به Coiniran نمی باشد و نباید به آن نسبت داده شود.



2 Comments

  1. نخست ممنون بابت به اشتراک گذاری این مطلب مهم و باز کردن مفصل آن که باعث شفاف سازی بهتر آن گشته..

    ابهامی که در ذهنم من بوجود آمده این می باشد که اگه این بیت کوین کش که فورکی از بیت کوین اصلی باشد، کارایی که داره با توجه به اینکه
    گفته شده حجم بلاک رو بالا برده پس عملا ینی از بیت کوین معمولی حجم بیشتری از ترنزکشن ها رو می تونه در بلاک قرار بده، با فرض اینکه
    سگویت ۲x کامل هم انجام بگیره آیا مزیت بیت کوین کش نمی تونه بیشتر از بیت کوین اصلی باشه !؟ یا شاید باید این مراحل در حال آزمایش و
    مقدمات هستش و باید تست بشه
    تشکر

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *