رمز ۱۱۹مرحلهٔ پایه، درس ۱۹ از ۲۲ بلاکچین و فناوری
هارد فورک چیست و چه فرقی با سافت فورک دارد
فورک یعنی تغییر قواعد یک بلاکچین؛ در این درس سافت فورک و هارد فورک، نمونههای واقعی اتریوم و بیتکوین و خطر کلاهبرداری با وعدهٔ ارز فورک را میبینید.
پیشنیاز رمز ۱۱۰ اثبات کار (PoW) و اثبات سهام (PoS) چه فرقی دارند
فورک (Fork) یعنی تغییری در قواعدی که نودهای یک بلاکچین با آن بلوکها و تراکنشها را میسنجند. اگر قواعد تازه با نسخهٔ قدیمی نرمافزار سازگار بماند، به آن سافت فورک (Soft Fork) میگویند و شبکه یکپارچه میماند؛ اگر نسخهٔ قدیمی بلوکهای تازه را نپذیرد، هارد فورک (Hard Fork) رخ داده است و اگر بخشی از جامعه همان قواعد قدیم را ادامه دهد، دو زنجیرهٔ جدا با دو دارایی جدا شکل میگیرد. فورک بهخودیخود نه خوب است و نه بد؛ هم ابزار ارتقای شبکه است و هم گاهی نشانهٔ اختلاف جامعه.
فورک یعنی تغییر قواعد شبکه
برای فهم فورک، ابتدا باید یادآوری کنیم که بلاکچین چیست و چطور کار میکند. بلاکچین دفتری است که نسخههای یکسانی از آن روی هزاران رایانه (نود) نگهداری میشود. هر نود نرمافزاری اجرا میکند که قواعد شبکه را در خود دارد: چه امضایی معتبر است، هر بلوک چه اندازهای میتواند داشته باشد، پاداش ساختن بلوک چقدر است و چه تراکنشی پذیرفته نمیشود. هر نود هر بلوک تازه را با همین قواعد میسنجد و بلوکی را که با آنها نخواند کنار میگذارد.
حالا فرض کنید توسعهدهندگان بخواهند یکی از این قواعد را تغییر دهند؛ مثلاً قابلیت تازهای اضافه کنند یا خطایی را برطرف کنند. در یک سامانهٔ متمرکز، کافی است مدیر سامانه نرمافزار را بهروز کند. اما در یک شبکهٔ غیرمتمرکز هیچ مرجعی نمیتواند نسخهٔ تازه را روی رایانهٔ دیگران نصب کند. هر گردانندهٔ نود، هر ماینر و هر اعتبارسنج خودش تصمیم میگیرد کدام نسخه را اجرا کند. به همین دلیل، تغییر قواعد در بلاکچین همیشه به نوعی توافق اجتماعی گره خورده است؛ همان توافقی که سازوکار اجماع باید آن را در سطح فنی پشتیبانی کند. اگر تفاوت اثبات کار و اثبات سهام را هنوز مرور نکردهاید، درس اثبات کار و اثبات سهام پیشنیاز همین درس است.
واژهٔ «فورک» در زبان انگلیسی به معنای دوشاخه یا انشعاب است. در دنیای رمزارز این واژه در سه معنای نزدیک به هم به کار میرود که بهتر است از هم جدا شوند:
- انشعاب موقت زنجیره: گاهی دو بلوک تقریباً همزمان ساخته میشوند و برای مدت کوتاهی دو شاخه وجود دارد. شبکه با قواعد عادی خود یکی را برمیگزیند و این پدیده تغییری در قواعد نیست.
- فورک کد: کسی کد متنباز یک پروژه را برمیدارد و با آن شبکهٔ کاملاً تازهای از صفر میسازد. این شبکه تاریخچهٔ مشترکی با شبکهٔ اصلی ندارد.
- فورک پروتکل: تغییر در قواعد خود شبکهای که در حال کار است. موضوع این درس همین معنای سوم است که دو گونهٔ اصلی دارد: سافت فورک و هارد فورک.
سافت فورک؛ تغییر سازگار با گذشته
در سافت فورک، قواعد شبکه سختتر میشوند، نه آزادتر. یعنی هر بلوکی که با قواعد تازه معتبر است، از نگاه نرمافزار قدیمی هم معتبر به شمار میآید. نودهایی که بهروزرسانی نکردهاند همچنان بلوکهای تازه را میپذیرند و از زنجیره جدا نمیشوند؛ شاید از همهٔ جزئیات قابلیت تازه سر در نیاورند، ولی آن را خطا هم نمیبینند.
یک تشبیه ساده کمک میکند. فرض کنید باشگاهی تا امروز اجازه میداد اعضا با پیراهنی به هر رنگ وارد شوند و از امروز فقط پیراهن آبی را مجاز میداند. نگهبانی که از قاعدهٔ تازه خبر ندارد، باز هم عضوی را که پیراهن آبی پوشیده راه میدهد، چون آبی هم یکی از رنگها بود. قاعدهٔ تازه سختگیرانهتر است، اما با قاعدهٔ قدیم تعارض ندارد.
شرط مهم سافت فورک این است که بیشتر کسانی که بلوک میسازند قاعدهٔ تازه را اجرا کنند. اگر تعداد کافی از سازندگان بلوک همراه نشوند، ممکن است بلوکهایی ساخته شوند که از نگاه نودهای بهروزشده نامعتبرند و شبکه برای مدتی دچار سردرگمی شود. به همین دلیل، سافت فورکها معمولاً با سازوکاری برای اعلام آمادگی و فعالسازی در یک بلوک مشخص همراهاند.
مشهورترین نمونهٔ سافت فورک در بیتکوین، ارتقای «شاهد جداشده» (SegWit) است. به گفتهٔ شرکت ترزور، این ارتقا در ۲۴ اوت ۲۰۱۷ و در بلوک ۴۸۱٬۸۲۴ شبکهٔ بیتکوین فعال شد [۱]. SegWit بخش امضای تراکنشها را از بخش اصلی آنها جدا کرد و در عین حال طوری طراحی شده بود که نودهای قدیمی هم بتوانند بلوکهای تازه را بپذیرند. کاربری که کیف پول خود را بهروز نکرده بود، همچنان میتوانست بیتکوین دریافت و ارسال کند.
هارد فورک؛ جدایی قواعد
در هارد فورک، قواعد تازه چیزی را مجاز میکنند که قواعد قدیمی ممنوع میدانستند، یا ساختار دادهها را طوری تغییر میدهند که نرمافزار قدیمی دیگر آن را نمیفهمد. در نتیجه، نخستین بلوکی که با قواعد تازه ساخته شود، از نگاه نودهای قدیمی نامعتبر است. این نودها آن بلوک را رد میکنند و روی زنجیرهای میمانند که با قواعد قبلی ادامه دارد. به همین دلیل، در هارد فورک همهٔ شرکتکنندگان باید نرمافزار خود را بهروز کنند.
از این نقطه، دو سرنوشت ممکن است:
- ارتقای بیاختلاف: جامعه تقریباً یکصدا با تغییر موافق است. نودها، سازندگان بلوک، صرافیها و کیف پولها پیش از موعد بهروز میشوند و زنجیرهٔ قدیمی عملاً رها میشود. کاربر عادی بیشتر وقتها چیزی جز بهروزرسانی نرمافزار کیف پول احساس نمیکند. سایت ethereum.org فهرستی از همهٔ فورکهای اتریوم را از آغاز تا امروز نگه میدارد [۲]. بسیاری از این فورکها از همین جنس ارتقای برنامهریزیشدهاند.
- جدایی پراختلاف: بخشی از جامعه تغییر را نمیپذیرد و به اجرای قواعد قدیم ادامه میدهد. حالا دو زنجیره وجود دارد که تا نقطهٔ جدایی تاریخچهٔ مشترکی دارند و از آن پس، هر کدام مسیر خود را میروند. هر زنجیره واحد پول، جامعه و بازار جداگانهای پیدا میکند.
| ویژگی | سافت فورک | هارد فورک |
|---|---|---|
| جهت تغییر قواعد | سختتر شدن قواعد | آزادتر شدن یا تغییر ساختار قواعد |
| رفتار نود قدیمی | بلوکهای تازه را میپذیرد | بلوکهای تازه را رد میکند |
| نیاز به بهروزرسانی همگانی | لازم نیست | لازم است |
| احتمال پیدایش زنجیرهٔ دوم | کم | اگر اختلاف جدی باشد، زیاد |
نمونههای تاریخی
فورک DAO و پیدایش اتریوم کلاسیک
DAO یک قرارداد هوشمند بزرگ روی شبکهٔ اتریوم بود. طبق ethereum.org، در حملهٔ سال ۲۰۱۶ این قرارداد ناامن هک شد و بیش از ۳٫۶ میلیون اتر از آن خالی شد [۲]. پاسخ جامعه یک هارد فورک بود: این فورک وجوه را به قرارداد تازهای منتقل کرد که فقط یک کار انجام میداد، یعنی برداشت، و هر کسی که پول از دست داده بود میتوانست به ازای هر ۱۰۰ توکن DAO یک اتر برداشت کند [۲].
بنیاد اتریوم در ۲۰ ژوئیهٔ ۲۰۱۶ اعلام کرد این هارد فورک انجام شده است؛ در ابتدای بلوک ۱٬۹۲۰٬۰۰۰، اتر همهٔ حسابهای یک فهرست مشخص به یک قرارداد بازیابی منتقل شد [۳]. همه با این تصمیم موافق نبودند. گروهی باور داشتند زنجیرهای که تغییرناپذیری را وعده داده، نباید برای جبران یک هک، مسیر وجوه را دستی عوض کند. این گروه زنجیرهٔ قدیمی را ادامه دادند. طبق ethereum.org، اختلاف بر سر این فورک شبکه را برای همیشه دو تکه کرد و «اتریوم کلاسیک» (Ethereum Classic) از همینجا به وجود آمد [۲].
جدایی بیتکوین کش
در بیتکوین هم بحث دیرینهای دربارهٔ اندازهٔ بلوک و راه افزایش ظرفیت شبکه وجود داشت. بخشی از جامعه ظرفیت بیشتر درون خود بلوک را میخواست و بخشی دیگر راهحلهایی مانند SegWit را ترجیح میداد. یادداشت دفتر مشاور ارشد ادارهٔ مالیات آمریکا (IRS) که ۹ آوریل ۲۰۲۱ منتشر شد، به هارد فورک بیتکوین در ۱ اوت ۲۰۱۷ اشاره میکند که رمزارز جدید «بیتکوین کش» (BCH) را به وجود آورد [۴]. موضوع اصلی آن یادداشت قواعد مالیاتی آمریکاست که بیرون از حوزهٔ این درس است؛ ما آن را فقط برای تاریخ و ماهیت این رویداد آوردهایم.
به ترتیب زمانی دقت کنید: جدایی بیتکوین کش در ۱ اوت ۲۰۱۷ رخ داد و فعال شدن SegWit در ۲۴ اوت ۲۰۱۷ [۱]. یعنی در یک فاصلهٔ کوتاه، یک اختلاف واحد هم به یک هارد فورک پراختلاف و هم به یک سافت فورک انجامید.
درسی که این دو نمونه میدهند
در هر دو نمونه، مسئلهٔ اصلی فنی نبود؛ اختلاف دربارهٔ ارزشها و اولویتهای شبکه بود. کد فقط ابزاری بود که هر گروه با آن تصمیم خود را اجرا کرد. به همین دلیل، فورک را باید هم یک رویداد فنی دید و هم یک رویداد اجتماعی.
فورک برای دارندگان چه معنایی دارد
اگر دارایی شما در کیف پول شخصی است و کلید خصوصی آن را خودتان نگه میدارید، اثر فورک به نوع آن بستگی دارد.
در سافت فورک و هارد فورک بیاختلاف، معمولاً کاری جز بهروزرسانی نرمافزار کیف پول لازم نیست. موجودی شما سر جایش است و ارز تازهای هم ساخته نمیشود. کافی است اطلاعیهها را فقط از کانالهای رسمی خود پروژه و سازندهٔ کیف پول دنبال کنید.
در هارد فورک پراختلاف، وضعیت کمی پیچیدهتر است. چون دو زنجیره تا لحظهٔ جدایی تاریخچهٔ مشترک دارند، موجودی شما در آن لحظه روی هر دو ثبت است. فرض کنید پیش از جدایی ۲ واحد از یک رمزارز داشتید؛ پس از جدایی، روی زنجیرهٔ الف ۲ واحد از دارایی الف و روی زنجیرهٔ ب ۲ واحد از دارایی ب با همان کلید در اختیار شماست. اما چند نکته را نباید فراموش کرد:
- ارزش دارایی تازه معلوم نیست. ممکن است بازار چندانی نداشته باشد یا ارزش آن بسیار کم باشد. پیدایش یک دارایی تازه به معنای ثروت تازه نیست.
- در صرافی، تصمیم با صرافی است. اگر دارایی شما هنگام فورک در صرافی باشد، خود صرافی تصمیم میگیرد از کدام زنجیره پشتیبانی کند و آیا دارایی تازه را به کاربران بدهد یا نه.
- خطر حملهٔ تکرار (Replay Attack): اگر دو زنجیره از نظر فنی بهخوبی از هم جدا نشده باشند، تراکنشی که روی یکی امضا میکنید ممکن است روی دیگری هم پذیرفته شود و بیآنکه بخواهید، دارایی شما روی زنجیرهٔ دوم هم جابهجا شود.
پیش از هر جابهجایی در روزهای فورک
در روزهای نزدیک به یک هارد فورک پراختلاف، شبکهها و کیف پولها ممکن است ناپایدار باشند. اگر دلیل فوری برای انتقال ندارید، صبر کنید تا سازندهٔ کیف پول شما دربارهٔ حفاظت از حملهٔ تکرار و پشتیبانی از هر زنجیره راهنمایی رسمی منتشر کند. تراکنش بلاکچینی پس از تأیید برگشتپذیر نیست.
فورک و کلاهبرداریهای مرتبط
هر فورک پرسروصدا فرصتی برای کلاهبرداران است، چون بسیاری از کاربران نمیدانند دقیقاً چه اتفاقی افتاده و چه باید بکنند. الگوهای رایج اینهاست:
- ابزار جعلی «دریافت ارز فورک»: سایت، برنامه یا رباتی که میگوید برای دریافت دارایی تازه باید عبارت بازیابی خود را وارد کنید. هر کس این عبارت را داشته باشد، به همهٔ دارایی شما روی همهٔ زنجیرهها دسترسی دارد.
- ایردراپ ساختگی: پیامهایی که از توزیع رایگان ارز فورک خبر میدهند و شما را به اتصال کیف پول یا تأیید یک قرارداد ناشناس دعوت میکنند.
- توکن همنام: توکنی که با نامی شبیه ارز فورکشده ساخته شده و ربطی به آن ندارد.
- وعدهٔ «دوبرابر شدن دارایی» با فورک آینده: ادعایی که برای ترغیب شما به واریز یا نگهداری دارایی در یک پلتفرم خاص به کار میرود.
چرایی خطرناک بودن تایپ عبارت بازیابی را در درس اشتباهات رایج نگهداری سید فریز مفصل توضیح دادهایم. الگوهای کلیتر را هم در راهنمای چطور در ارز دیجیتال کلاهبرداری نخوریم ببینید.
هشدار
عبارت بازیابی (Seed Phrase) را هرگز برای «دریافت ارز فورک» در هیچ سایت، فرم، ربات یا برنامهٔ ناشناسی وارد نکنید. هیچ پروژهٔ معتبری برای اعلام فورک از شما چنین چیزی نمیخواهد.
پیش از هر اقدام دربارهٔ یک فورک
- خبر فورک را از کانال رسمی خود پروژه و سازندهٔ کیف پولتان تأیید کنید، نه از پیامهای شبکههای اجتماعی.
- مشخص کنید فورک از نوع سافت است، هارد بیاختلاف یا هارد پراختلاف.
- اگر ارتقای معمولی است، فقط نرمافزار کیف پول را از منبع رسمی بهروز کنید.
- اگر زنجیرهٔ دوم ساخته شده، تا انتشار راهنمای رسمی دربارهٔ حفاظت از حملهٔ تکرار صبر کنید.
- عبارت بازیابی را در هیچ ابزاری که وعدهٔ ارز رایگان میدهد وارد نکنید.
- به یاد داشته باشید که دارایی تازه ممکن است ارزش ناچیزی داشته باشد.
فورک بخشی از زندگی عادی بلاکچینهاست: راهی که یک شبکهٔ بیمدیر با آن خود را ارتقا میدهد یا اختلافهای عمیقش را آشکار میکند. برای دیدن جایگاه این درس در کنار مفاهیمی مانند بلوک، هش و اجماع، به صفحهٔ اصلی بخش بلاکچین و فناوری برگردید.
خودتان را بسنجید
با هارد فورک، ارز جدید رایگان میگیرم؟
اگر هارد فورک به جدایی دو زنجیره برسد، موجودی شما در لحظهٔ جدایی روی هر دو زنجیره ثبت است، چون تاریخچهٔ پیش از جدایی مشترک است. اما این به معنای ارزشمند بودن دارایی تازه نیست و اگر دارایی در صرافی باشد، تصمیم پشتیبانی با خود صرافی است. بیشتر ارتقاهای برنامهریزیشده هم اصلاً ارز جدیدی نمیسازند.
چرا جامعهٔ یک شبکه دو دسته میشود؟
چون در یک شبکهٔ غیرمتمرکز کسی نمیتواند نسخهٔ تازهٔ نرمافزار را به دیگران تحمیل کند. وقتی گروهی یک تغییر را درست و گروهی دیگر آن را نقض اصول شبکه بدانند، هر گروه نرمافزار دلخواه خود را اجرا میکند. نمونهٔ مشهور آن اختلاف بر سر فورک DAO در اتریوم بود که به پیدایش اتریوم کلاسیک انجامید.
فورک شدن یک پروژه نشانهٔ ضعف است؟
نه لزوماً. بسیاری از فورکها ارتقای معمولی و برنامهریزیشدهاند و نشان میدهند شبکه راهی برای اصلاح خود دارد. فورک پراختلاف نشانهٔ دودستگی جامعه است، ولی دربارهٔ آیندهٔ هیچیک از دو زنجیره بهتنهایی چیزی نمیگوید.
برای دریافت ارز فورکشده باید عبارت بازیابی را وارد کنم؟
عبارت بازیابی را هرگز در سایت، فرم، ربات یا برنامهٔ ناشناسی که وعدهٔ «دریافت ارز فورک» میدهد وارد نکنید. هر کس این عبارت را داشته باشد به همهٔ دارایی شما روی همهٔ زنجیرهها دسترسی دارد. اگر روزی بخواهید ارز فورکشده را جابهجا کنید، ابتدا دارایی اصلی را به کیف پول تازه منتقل کنید و فقط از نرمافزار رسمی و شناختهشدهٔ خود پروژه کمک بگیرید.
منابع
- At block 481 824, on August 24. 2017, SegWit was activated. ... مشاهدهٔ منبع At block 481 824, on August 24. 2017, SegWit was activated. ...
- Timeline of all Ethereum forks (2014 to present) | ethereum.org مشاهدهٔ منبع Timeline of all Ethereum forks (2014 to present) | ethereum.org
- Hard Fork Completed | Ethereum Foundation Blog مشاهدهٔ منبع Hard Fork Completed | Ethereum Foundation Blog
- Office of Chief Counsel Internal Revenue Service Memorandum Number: 202114020 مشاهدهٔ منبع Office of Chief Counsel Internal Revenue Service Memorandum Number: 202114020