بلاکچین

هارد فورک، سافت فورک، پیش فرض و اجبار

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

در اینجا یک نمودار ون برای نشان دادن انواع چنگال آورده شده است:

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

گذشته از این، یکی از انتقادات عمده که اغلب در مورد هارد فورک ها وارد می شود این است که هارد فورک ها "اجباری" هستند. نوع اجباری که در اینجا به آن اشاره می شود، نیروی فیزیکی نیست. بلکه این است اجبار از طریق اثر شبکه. یعنی اگر شبکه قوانین را از A به B تغییر دهد، حتی اگر شما شخصا A را دوست داشته باشید، اگر اکثر کاربران دیگر B را دوست داشته باشند و به B تغییر دهند، باید علیرغم مخالفت شخصی خود با تغییر به B تغییر دهید تا روشن باشید. همان شبکه ای مثل بقیه

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


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

قبل از هر چیز، اجازه دهید در مورد مسئله اجبار بحث کنیم. هارد فورک و سافت فورک هر دو پروتکل را به گونه ای تغییر می دهند که ممکن است برخی از کاربران دوست نداشته باشند. هر تغییر پروتکل اگر کمتر از 100٪ پشتیبانی داشته باشد این کار را انجام می دهد. علاوه بر این، تقریباً اجتناب ناپذیر است که حداقل برخی از از مخالفان، در هر سناریویی، به تأثیر شبکه چسبیدن به گروه بزرگتر بیشتر از ترجیحات خود در مورد قوانین پروتکل اهمیت می دهند. از این رو، هر دو نوع چنگال، به معنای اثر شبکه ای کلمه، اجباری هستند.

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

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

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

اکنون، بیایید به فورک های بسیار بحث برانگیز نگاه کنیم، به ویژه فورک هایی که در آن تنظیمات برگزیده ماینر/ اعتبارسنجی و تنظیمات کاربر تضاد دارند. در اینجا سه ​​مورد وجود دارد: (1) هارد فورک های دوطرفه، (2) هارد فورک های کاملاً گسترش یافته، و (iii) به اصطلاح "سافت چنگال های فعال شده توسط کاربر" (UASF). دسته چهارم جایی است که ماینرها سافت فورک را فعال می کنند بدون رضایت کاربر; بعدا به این موضوع خواهیم رسید

ابتدا هارد چنگال دو طرفه. در بهترین حالت، وضعیت ساده است. دو سکه در بازار معامله می شوند و معامله گران ارزش نسبی این دو را تعیین می کنند. از پرونده ETC/ETH، ما شواهد زیادی داریم که نشان می‌دهد ماینرها به احتمال زیاد، صرف نظر از دیدگاه‌های ایدئولوژیک خود، هش خود را بر اساس نسبت قیمت‌ها به سکه‌ها اختصاص می‌دهند تا سود خود را به حداکثر برسانند.

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

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

مورد دوم این است که اگر اختلاف بسیار زیاد باشد، زنجیره بزرگ می تواند 51٪ به زنجیره کوچکتر حمله کند. حتی در مورد تقسیم ETH/ETC با نسبت 10:1، این اتفاق نیفتاده است. بنابراین مطمئناً داده شده نیست. با این حال، اگر ماینرهای زنجیره غالب، اجبار را به اجازه جدایی ترجیح دهند و بر اساس این ارزش ها عمل کنند، همیشه امکان پذیر است.

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

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

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

آخرین نوع چنگال که در بالا ذکر شد، سافت فورک فعال شده توسط کاربر است. در یک UASF، کاربران قوانین سافت فورک را بدون زحمت دستیابی به توافق از سوی ماینرها روشن می کنند. انتظار می رود که معدنچیان صرفاً به دلیل منافع اقتصادی در صف قرار بگیرند. اگر بسیاری از کاربران با UASF همراهی نکنند، یک تقسیم سکه رخ خواهد داد و این منجر به سناریویی مشابه با هارد فورک کاملاً در حال گسترش خواهد شد، به جز - و این بخش واقعاً هوشمندانه و فریبنده مفهوم است - همان فشار "خطر نابودی" که به شدت با زنجیره دوشاخه در یک هارد فورک کاملاً در حال انبساط مخالفت می کند، در عوض به شدت به نفع زنجیره دوشاخه در یک UASF است.. حتی اگر یک UASF انتخاب شود، از عدم تقارن اقتصادی استفاده می کند تا خود را به سمت موفقیت سوگیری کند (اگر چه این سوگیری مطلق نیست؛ اگر یک UASF به طور قطعی محبوب نباشد، موفق نخواهد شد و به سادگی منجر به شکاف زنجیره ای می شود).

با این حال، UASF ها یک بازی خطرناک هستند. به عنوان مثال، فرض کنید توسعه دهندگان یک پروژه می خواهند یک پچ UASF بسازند که یک کد عملیاتی استفاده نشده را که قبلاً همه تراکنش ها را پذیرفته بود، به یک کد عملیاتی تبدیل می کند که فقط تراکنش هایی را می پذیرد که با قوانین برخی از ویژگی های جدید مطابقت داشته باشد، هر چند یکی از این موارد است. از نظر سیاسی یا فنی بحث برانگیز است و معدنچیان دوست ندارند. ماینرها روشی هوشمندانه و حیله گرانه برای مقابله با آن دارند: آنها می توانند به طور یک طرفه یک سافت فورک فعال شده توسط ماینر را پیاده سازی کنند که باعث می شود همه تراکنش ها با استفاده از ویژگی ایجاد شده توسط سافت فورک همیشه شکست بخورند..

اکنون سه قانون داریم:

  1. قوانین اصلی که در آن کد opcode X همیشه معتبر است.
  2. قوانینی که در آن کد X فقط در صورتی معتبر است که بقیه تراکنش با قوانین جدید مطابقت داشته باشد
  3. قوانینی که در آن کد اپکد X همیشه نامعتبر است.

توجه داشته باشید که (2) نسبت به (1) یک چنگال نرم است و (3) نسبت به (2) یک چنگال نرم است. اکنون، فشار اقتصادی قوی به نفع (3) وجود دارد، و بنابراین سافت فورک در رسیدن به هدف خود ناکام است.

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

منبع: https://vitalik.eth.limo/general/2017/03/14/forks_and_markets.html