زمان تقریبی مطالعه: 8 دقیقه
«فورک» در دنیای بلاکچین یک اصطلاح واحد با یک معنی نیست. گاهی دو ماینر تقریباً همزمان بلاک متفاوتی در یک ارتفاع میسازند و شبکه برای مدت کوتاهی دو شاخه میشود؛ گاهی توسعهدهندگان یک Codebase را جدا میکنند؛ و گاهی قواعد اجماع شبکه تغییر میکند که در این حالت از Soft Fork یا Hard Fork صحبت میکنیم.
بنابراین هر Fork به معنی ایجاد یک رمزارز جدید نیست و حتی هر Hard Fork نیز الزاماً دو زنجیره دائمی ایجاد نمیکند. نتیجه به این بستگی دارد که Nodeها، ماینرها، کاربران و سایر بخشهای اقتصاد شبکه کدام Rule Set را ادامه دهند.
در این مقاله ابتدا مفهوم Fork را دقیق تفکیک میکنیم و سپس تفاوت Hard Fork و Soft Fork، روشهای فعالسازی Upgrade و نمونههایی مانند SegWit، Taproot و Bitcoin Cash را بررسی میکنیم. برای درک پایه Consensus و ساختار شبکه، مقاله بلاکچین چیست؟ نیز مکمل این صفحه است.
فورک در بلاکچین چیست؟
در سطح Blockchain، Fork میتواند به وضعیتی اشاره کند که دو بلاک معتبر در یک Block Height ساخته میشوند و شبکه موقتاً بیش از یک Tip دارد. در شبکههای Proof-of-Work چنین شاخهای معمولاً پس از ادامه یافتن یکی از زنجیرهها حل میشود و بلاک شاخه دیگر Stale میشود.
Bitcoin Developer Glossary نیز «Fork» معمولی را از Hard Fork، Soft Fork و Software Fork جدا میکند: Fork معمولی میتواند فقط نتیجه کشف تقریباً همزمان بلاکها باشد و با انتخاب زنجیره دارای کار تجمعی بیشتر حل شود. واژهنامه رسمی Bitcoin Developer
در مقابل، وقتی بحث تغییر Consensus Rules مطرح است، باید بررسی کنیم تغییر جدید با Nodeهای قدیمی چه رابطهای دارد. همین مسئله مرز اصلی Soft Fork و Hard Fork است.
تفاوت Software Fork با Blockchain Fork چیست؟
در توسعه نرمافزار، Fork میتواند صرفاً به کپی و ادامه مستقل یک Codebase اشاره کند. این اتفاق به خودی خود شبکه یا Ledger را دوشاخه نمیکند.
اما Consensus Fork زمانی رخ میدهد که مجموعه قواعد اعتبارسنجی بلاک و تراکنش تغییر کند. اگر دو گروه اقتصادی برای مدت طولانی Ruleهای ناسازگار را اجرا کنند، آنگاه میتوان دو شبکه مستقل با History مشترک تا نقطه Fork داشت.
پس «کد جدا شده» و «زنجیره جدا شده» دو مفهوم متفاوتاند و نباید در مقاله مترادف استفاده شوند.
هارد فورک چیست؟
Hard Fork تغییری در Consensus Rules است که میتواند بلاکها یا تراکنشهایی را معتبر کند که Nodeهای قدیمی آنها را نامعتبر میدانند. در این حالت Nodeهای Upgradeنشده ممکن است نتوانند زنجیره تولیدشده با Ruleهای جدید را دنبال کنند.
Bitcoin Developer Guide توضیح میدهد اگر Nodeهای قدیمی بلاکهای ساختهشده تحت Rules جدید را رد کنند، زنجیرههای ناسازگار میتوانند شکل بگیرند. این همان سناریویی است که از آن با عنوان Hard Fork یاد میشود. توضیح Hard Fork و Soft Fork در Bitcoin Developer Guide
با این حال جمله فعلی مقاله که «هارد فورک به طور دائم شبکه را به دو زنجیره تقسیم میکند» بیش از حد قطعی است. اگر تقریباً تمام اقتصاد شبکه به Rules جدید مهاجرت کند و زنجیره قدیمی ادامه پیدا نکند، ممکن است Chain Split پایدار شکل نگیرد. دو دارایی مستقل زمانی شکل میگیرند که هر دو Rule Set بهاندازه کافی پشتیبانی شوند و هر دو زنجیره ادامه پیدا کنند.
سافت فورک چیست؟
Soft Fork تغییری Backward-compatible در Consensus Rules است به این معنا که مجموعه بلاکها/تراکنشهای مجاز محدودتر میشود. Nodeهای قدیمی معمولاً بلاکهایی را که مطابق Ruleهای جدید ساخته شدهاند همچنان معتبر میدانند، هرچند خودشان Rule جدید را بهطور کامل Enforce نمیکنند.
به زبان ساده:
Soft Fork = Rules سختگیرانهتر؛ بلاک معتبر جدید همچنان برای Node قدیمی قابل قبول است.
این موضوع به معنی «آپدیت جزئی» بودن Soft Fork نیست. یک Soft Fork میتواند تغییر بسیار مهمی در Consensus ایجاد کند؛ معیار اصلی اندازه تغییر نیست، بلکه Compatibility آن با Validation قدیمی است.
تفاوت Hard Fork و Soft Fork در یک نگاه
| موضوع | Soft Fork | Hard Fork |
|---|
| نوع تغییر Rules | محدودترکردن مجموعه موارد معتبر | پذیرفتن مواردی که Node قدیمی ممکن است نامعتبر بداند |
| سازگاری Node قدیمی | Node قدیمی معمولاً بلاک جدید را معتبر میبیند | Node قدیمی ممکن است بلاک جدید را رد کند |
| نیاز به Upgrade همه کاربران | برای Validation کامل Rule جدید، بله؛ برای دنبالکردن زنجیره الزاماً نه | برای دنبالکردن Rule Set جدید معمولاً لازم است |
| ایجاد Coin جدید | الزامی نیست | الزامی نیست؛ فقط در صورت ادامه هر دو زنجیره ممکن است |
| نمونه Bitcoin | SegWit، Taproot | Bitcoin Cash یک Chain Split تاریخی از Bitcoin بود |
UASF و MASF چیستند؟ آیا نوع جداگانهای از Fork هستند؟
UASF و MASF بهتر است «روش فعالسازی Soft Fork» معرفی شوند، نه دو نوع مستقل از Fork.
MASF؛ Miner-Activated Soft Fork
در MASF، ماینرها با Signal در Block Header آمادگی یا پشتیبانی خود را برای Deployment نشان میدهند. BIP9 یکی از شناختهشدهترین مکانیزمهای Version Bits برای Deployment تغییرات Backward-compatible است. BIP9 - Version Bits with Timeout and Delay
UASF؛ User-Activated Soft Fork
در UASF، Enforcement Rule جدید بر اساس Node Software و معمولاً یک Flag Day یا Block Height برنامهریزی میشود، نه صرفاً رسیدن Miner Signaling به Threshold.
متن فعلی که میگوید «مفهوم UASF بعد از SegWit به وجود آمد» باید اصلاح شود. UASF در بحث Activation خود SegWit در سال ۲۰۱۷ بهطور برجسته مطرح شد؛ بنابراین نمیتوان آن را مفهومی دانست که پس از پایان Upgrade SegWit متولد شده است.
SegWit؛ نمونه یک Soft Fork در Bitcoin
Segregated Witness یا SegWit با BIP141 بهعنوان یک Soft Fork برای Bitcoin طراحی و Deploy شد. این Upgrade ساختار Witness و Block Weight را تغییر داد و ظرفیت مؤثر Block Space را افزایش داد، بدون اینکه Nodeهای قدیمی مجبور باشند همه Ruleهای جدید Witness را درک کنند.
BIP141 صریحاً Deployment خود را با Version Bits تعریف میکند و از آن بهعنوان Soft Fork یاد میشود. BIP141 - Segregated Witness
بنابراین جمله فعلی مقاله که «SegWit ابتدا Soft Fork بود اما بعد به Hard Fork تبدیل شد و Bitcoin Cash را ایجاد کرد» اشتباه است. SegWit در Bitcoin یک Soft Fork باقی ماند. Bitcoin Cash نتیجه یک Rule Set جداگانه و Chain Split مستقل بود که با افزایش ظرفیت On-chain مسیر متفاوتی را انتخاب کرد.
برای جزئیات Block Weight و ارتباط SegWit با ظرفیت شبکه، مقاله اندازه بلاک بیتکوین را مطالعه کنید.
Taproot؛ نمونه جدیدتر Soft Fork بیتکوین
Taproot نیز از طریق Soft Fork به Bitcoin اضافه شد. BIP341 در Repository رسمی Bitcoin BIPs با Layer «Consensus (soft fork)» و وضعیت Deployed ثبت شده است. BIP341 - Taproot
این مثال نشان میدهد Soft Fork الزاماً «تغییر کوچک» نیست؛ Taproot مجموعه مهمی از قابلیتهای جدید Spending و Script را اضافه کرد، اما Compatibility آن اجازه داد Nodeهای قدیمی همچنان زنجیره را دنبال کنند.
Bitcoin Cash چگونه از Bitcoin جدا شد؟
Bitcoin Cash نمونهای از Chain Split پایدار پس از اختلاف بر سر قواعد Scaling است. در ۱ اوت ۲۰۱۷، زنجیره در Block 478558 از Bitcoin جدا شد و Rule Set متفاوتی را ادامه داد. وبسایت رسمی Bitcoin Cash همین تاریخ و Block Height را برای آغاز شبکه ثبت میکند. تاریخچه رسمی Bitcoin Cash
بهتر است این رویداد را اینطور توضیح دهیم: «بخشی از شرکتکنندگان شبکه Rule Set متفاوتی را اجرا کردند و هر دو زنجیره پس از نقطه مشترک بهطور مستقل ادامه یافتند.»
نباید گفته شود SegWit «به Hard Fork تبدیل شد». SegWit و Bitcoin Cash دو مسیر فنی متفاوت در همان دوره اختلاف Scaling بودند.
نمونههای Fork در شبکههای بلاکچینی
برای درک مفهوم Fork نیازی به فهرست طولانی Coinهایی که از یکدیگر جدا شدهاند نیست. سه نمونه آموزشی کافی است:
- SegWit: Soft Fork در Bitcoin.
- Taproot: Soft Fork جدیدتر در Bitcoin.
- Bitcoin Cash: Hard Fork/Chain Split تاریخی که دو شبکه مستقل را ادامه داد.
اگر قرار است شبکههای دیگر مانند Ethereum یا Cardano نیز مثال زده شوند، باید نوع Upgrade و نتیجه Chain Split هر مورد بهصورت جداگانه از منبع رسمی همان شبکه کنترل شود؛ صرف استفاده عمومی از واژه «Hard Fork» به معنی ایجاد Coin جدید نیست.
آیا بلاکچین بدون Upgrade هم میتواند موقتاً Fork شود؟
بله. در شبکه Proof-of-Work ممکن است دو Miner تقریباً همزمان Block معتبر متفاوتی در یک Height پیدا کنند. برای مدتی کوتاه بعضی Nodeها یک Tip و برخی Tip دیگر را میبینند.
وقتی یکی از شاخهها Work تجمعی بیشتری به دست میآورد، Nodeها آن را بهعنوان Best Chain دنبال میکنند و Block شاخه دیگر Stale میشود. این وضعیت Hard Fork یا Soft Fork نیست، چون Consensus Rules دو گروه یکسان بوده است.
چرا شبکههای بلاکچینی Fork میشوند؟
- ارتقای قابلیتها: اضافهکردن Rule یا Feature جدید.
- رفع مشکل امنیتی: محدودکردن رفتارهای قبلاً معتبر یا اصلاح ضعف Consensus.
- Scaling: تغییر ظرفیت یا قواعد پردازش تراکنش.
- اختلاف در مسیر پروتکل: گروههای مختلف ممکن است درباره Rule Set آینده توافق نکنند.
- Fork موقت طبیعی: تولید همزمان Blockها بدون تغییر Consensus.
بنابراین Fork لزوماً نشانه خرابی شبکه نیست؛ بعضی Forkها بخشی از فرآیند Upgrade هستند و بعضی دیگر نتیجه اختلاف عمیق درباره Consensus Rules.
Hard Fork چه اثری بر دارایی کاربران دارد؟
اگر Hard Fork به دو زنجیره مستقل با History مشترک منجر شود، وضعیت UTXO یا Balance تا نقطه Fork ممکن است در هر دو Ledger وجود داشته باشد. اما این به معنی «دریافت رایگان تضمینشده Coin جدید» برای همه کاربران نیست.
دسترسی عملی به دارایی Forkشده به Wallet، Custody، Exchange Support، Replay Protection و نحوه نگهداری Private Key بستگی دارد. بنابراین متن فعلی که کاربران را «افراد خوششانس که خودکار Coin رایگان گرفتند» توصیف میکند حذف شود.
هنگام یک Chain Split واقعی، کاربر باید قبل از انتقال دارایی از وضعیت Wallet، Replay Risk و پشتیبانی سرویس مورد استفاده مطمئن شود؛ زیرا رفتار هر Fork یکسان نیست.
جمعبندی؛ Fork را با Chain Split و Coin جدید یکی ندانید
Fork میتواند یک شاخه موقت طبیعی، یک Software Fork یا تغییر Consensus Rules باشد. در تغییرات Consensus، Soft Fork و Hard Fork بر اساس رابطه Ruleهای جدید با Nodeهای قدیمی از هم تفکیک میشوند.
SegWit و Taproot نمونه Soft Fork در Bitcoin هستند؛ Bitcoin Cash نمونهای تاریخی از Chain Split پایدار با Rule Set متفاوت است. مهمترین نکته این است که نوع Fork از روی «بزرگ یا کوچک بودن تغییر» یا «ایجاد Coin جدید» تعیین نمیشود؛ معیار فنی، سازگاری Rules اعتبارسنجی است.