حمله ۵۱ درصد یعنی یک نفر یا یک گروه بیش از نیمی از قدرت ساخت بلاک یک بلاک‌چین را در دست بگیرد. در شبکه‌های اثبات کار (Proof of Work) این قدرت همان قدرت پردازش یا «هش‌ریت» است و در شبکه‌های اثبات سهام (Proof of Stake) سکه‌هایی که به‌عنوان وثیقه قفل شده‌اند. کسی که این اکثریت را دارد می‌تواند تاریخچه‌ی چند بلاک آخر را از نو بنویسد: پرداخت‌های خودش را برگرداند و همان پول را دوباره خرج کند، یا نگذارد تراکنش‌های بعضی آدرس‌ها وارد بلاک شوند.

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

حمله ۵۱ درصد چطور کار می‌کند؟

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

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

  1. مهاجم از یک بلاک مشخص به بعد، بی‌سروصدا زنجیره‌ی خودش را می‌سازد و آن را منتشر نمی‌کند. در این زنجیره‌ی مخفی، سکه‌هایش را به آدرس دیگری از خودش فرستاده است.
  2. روی زنجیره‌ی عمومی، همان سکه‌ها را به یک صرافی واریز می‌کند.
  3. صبر می‌کند تا صرافی تأییدهای لازم را ببیند و واریز را به حسابش بزند. بعد آن را به رمزارز دیگری تبدیل می‌کند و برداشت می‌کند.
  4. چون بیش از نیمی از قدرت پردازش دست اوست، زنجیره‌ی مخفی‌اش حالا از زنجیره‌ی عمومی بلندتر شده است. آن را منتشر می‌کند و نودها طبق قاعده به زنجیره‌ی بلندتر می‌روند. به این جابه‌جایی «بازچینی زنجیره» یا ری‌ارگ (Reorg) می‌گویند.

در تاریخچه‌ی جدید، واریز به صرافی اصلاً اتفاق نیفتاده و سکه‌ها هنوز مال مهاجم است. رمزارزی هم که از صرافی برداشت کرده، دستش مانده.

نمودار حمله ۵۱ درصد: زنجیره‌ی مخفی و بلندتر مهاجم جای زنجیره‌ی عمومی را می‌گیرد و واریز به صرافی از تاریخچه پاک می‌شود

به این کار «دوبار خرج کردن» یا دابل اسپند (Double Spend) می‌گویند و تقریباً همیشه هدف اصلی حمله ۵۱ درصد همین است. اینکه بلاک‌چین در حالت عادی چطور جلوی دوبار خرج کردن را می‌گیرد، خودش موضوع یک راهنمای جداست.

چرا باید «بیش از نصف» باشد؟

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

سهم مهاجم از قدرت پردازش

تأیید لازم برای اینکه شانس مهاجم زیر ۰٫۱ درصد باشد

۱۰ درصد

۵

۲۰ درصد

۱۱

۳۰ درصد

۲۴

۴۰ درصد

۸۹

۴۵ درصد

۳۴۰

۵۰ درصد یا بیشتر

هیچ عددی کافی نیست

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

مهاجم چه کاری می‌تواند بکند و چه کاری نه؟

بیشتر ترس از حمله ۵۱ درصد از اینجا می‌آید که فکر می‌کنیم مهاجم «صاحب شبکه» می‌شود. این‌طور نیست. هر نود همه‌ی بلاک‌ها و امضای همه‌ی تراکنش‌ها را خودش بررسی می‌کند و بلاک خلاف قانون را، از هر کسی که باشد، دور می‌اندازد.

از مهاجم برمی‌آید

از مهاجم برنمی‌آید

پرداخت‌های اخیر خودش را برگرداند و همان سکه‌ها را دوباره خرج کند

سکه‌ای را جابه‌جا کند که کلید خصوصی‌اش دست او نیست

نگذارد تراکنش‌های بعضی آدرس‌ها وارد بلاک شوند

بیشتر از آنچه قوانین شبکه اجازه می‌دهد سکه‌ی تازه بسازد

بلاک‌های ماینرهای دیگر را کنار بزند و پاداش بیشتری بگیرد

قوانین شبکه را عوض کند یا بلاک نامعتبر را به نودها بقبولاند

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

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

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

چرا حمله به بیت‌کوین این‌قدر سخت است ولی به شبکه‌های کوچک نه؟

سایت Crypto51 حساب می‌کند اگر کسی بخواهد یک ساعت تمام، هم‌اندازه‌ی کل قدرت پردازش یک شبکه، از بازار NiceHash هش‌ریت اجاره کند، چقدر باید بپردازد. طبق توضیح خود سایت، قیمت اجاره از NiceHash، هش‌ریت شبکه‌ها از WhatToMine و قیمت سکه‌ها از CoinMarketCap می‌آید. پاداش بلاک‌هایی که مهاجم در این مدت می‌گیرد در حساب نیامده و به گفته‌ی خود سایت، همین پاداش گاهی هزینه را تا ۸۰ درصد کم می‌کند. ولی ستون مهم‌تر جدولش چیز دیگری است: چند درصد از هش‌ریت لازم اصلاً در NiceHash برای اجاره پیدا می‌شود.

ما این عددها را کنار تعداد تأییدی گذاشته‌ایم که صرافی Kraken برای واریز همان سکه‌ها می‌خواهد:

شبکه

الگوریتم استخراج

هزینه‌ی نظری اجاره برای یک ساعت

سهمی از آن که در NiceHash هست

تأیید لازم برای واریز در Kraken

بیت‌کوین (BTC)

SHA-256

حدود ۱٫۶۸ میلیون دلار

تقریباً صفر

۳ تأیید، حدود ۴۵ دقیقه

بیت‌کوین کش (BCH)

SHA-256

حدود ۵٬۱۰۰ دلار

تقریباً صفر

۱۵ تأیید، حدود ۲٫۵ ساعت

لایت‌کوین (LTC)

Scrypt

حدود ۴۵٬۲۰۰ دلار

۸ درصد

۱۲ تأیید، حدود ۳۰ دقیقه

زی‌کش (ZEC)

Equihash

حدود ۶۷٬۶۰۰ دلار

۱ درصد

۵۰ تأیید، حدود یک ساعت

اتریوم کلاسیک (ETC)

Etchash

حدود ۳٬۲۰۰ دلار

تقریباً صفر

۲٬۸۸۰ تأیید، حدود ۱۲ ساعت

داده‌ها از Crypto51 و صفحه‌ی زمان واریز Kraken است و هر دو را ۱۸ مهر ۱۴۰۵ برداشته‌ایم. این عددها هر روز با قیمت و هش‌ریت عوض می‌شوند.

چرا ۱٫۶۸ میلیون دلار برای بیت‌کوین گول‌زننده است

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

خطر اصلی: شبکه‌ی کوچک در سایه‌ی شبکه‌ی بزرگ

بیت‌کوین کش هم مثل بیت‌کوین با SHA-256 استخراج می‌شود. در همان روز، هش‌ریت کل شبکه‌ی بیت‌کوین کش حدود ۰٫۳ درصد هش‌ریت بیت‌کوین بود. یعنی از نظر قدرت پردازش، بخش خیلی کوچکی از ماینرهای بیت‌کوین برای پشت سر گذاشتن کل شبکه‌ی بیت‌کوین کش کافی است. تیم بیت‌کوین گلد بعد از حمله‌ی ۱۳۹۷ دقیقاً همین را نوشت: بیشترین خطر برای شبکه‌ی کوچکی است که در سایه‌ی شبکه‌ی بزرگ‌تری با همان الگوریتم کار می‌کند. پژوهشگران MIT هم به همین نتیجه رسیده‌اند و اضافه کرده‌اند که بازارهای اجاره‌ی هش‌ریت، هزینه‌ی ثابت مهاجم را تقریباً به صفر رسانده‌اند: لازم نیست دستگاهی بخرد، فقط برای چند ساعتِ حمله کرایه می‌دهد.

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

چرا صرافی‌ها برای سکه‌های کوچک بیشتر صبر می‌کنند

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

حمله‌های ۵۱ درصد واقعی

تاریخ

شبکه

چه اتفاقی افتاد

اردیبهشت ۱۳۹۷

بیت‌کوین گلد (BTG)

حدود سه روز و نیم حمله‌ی پیاپی و دوبار خرج کردن علیه صرافی‌ها. Crypto51 ضرر را حدود ۱۸ میلیون دلار می‌داند. تیم پروژه بعد از آن تصمیم گرفت الگوریتم استخراج را عوض کند.

۱۵ دی ۱۳۹۷

اتریوم کلاسیک (ETC)

Coinbase چند ری‌ارگ عمیق دید و ارسال و دریافت ETC را متوقف کرد. به گفته‌ی Coinbase، حدود ۲۱۹٬۵۰۰ ETC، نزدیک ۱٫۱ میلیون دلارِ آن زمان، دوبار خرج شد.

دی ۱۳۹۷ تا دی ۱۳۹۹

چند شبکه‌ی کوچک

ردیاب MIT بیش از ۴۰ ری‌ارگ شش‌بلاکی یا عمیق‌تر روی BTG، ورج، ورت‌کوین و چند سکه‌ی دیگر ثبت کرد. بعضی صدها بلاک عمق داشتند و دوبار خرج کردن هم در آن‌ها بود. یکی از آن‌ها حمله‌ی دوباره به BTG در زمستان ۱۳۹۸ بود با بیش از ۷۲ هزار دلار دوبار خرج کردن.

مرداد و شهریور ۱۳۹۹

اتریوم کلاسیک

سه حمله در یک ماه. دو حمله‌ی اول روی هم نزدیک ۸ هزار بلاک را عوض کردند و صرافی OKEx حدود ۵٫۶ میلیون دلار ضرر کرد که به گفته‌ی خودش همه را از جیب خودش داد. سومی در ۸ شهریور بیش از ۷ هزار بلاک، یعنی حدود دو روز استخراج، را بازنویسی کرد.

۲۷ بهمن ۱۳۹۹

ورج (XVG)

پژوهشگران Coin Metrics یک ری‌ارگ بیش از ۵۶۰ هزار بلاکی دیدند که حدود ۲۰۰ روز تاریخچه را پاک کرد. تیم ورج گفت سکه‌های کاربران در امان است.

۲۰ مرداد ۱۴۰۴

مونرو (XMR)

استخر Qubic اعلام کرد اکثریت هش‌ریت را گرفته و شش بلاک را بازنویسی کرده است. بخشی از جامعه‌ی مونرو حمله‌ی ۵۱ درصد بودنش را رد کرد. Kraken برای احتیاط واریز مونرو را موقتاً بست.

منابع به ترتیب ردیف‌ها: بیانیه‌ی بیت‌کوین گلد و Crypto51، گزارش The Hacker News از اعلام Coinbase، صفحه‌ی پروژه‌ی MIT DCI، گزارش Decrypt درباره‌ی اتریوم کلاسیک، گزارش Decrypt درباره‌ی ورج و گزارش Cointelegraph درباره‌ی مونرو.

از این فهرست سه الگو بیرون می‌آید. اول اینکه هدف‌ها شبکه‌های اثبات کار کوچکی بودند که یا هش‌ریتشان در برابر شبکه‌ی بزرگ‌تری با همان الگوریتم ناچیز بود، یا می‌شد قدرت لازم را اجاره کرد. دوم اینکه در نمونه‌هایی که ضررشان معلوم شد، قربانی مستقیم صرافی بود، چون مهاجم برای سود بردن باید جایی مبلغ بزرگی را سریع به چیز دیگری تبدیل کند. تیم بیت‌کوین گلد هم گفت احتمالاً به این دلیل هدف شدند که در صرافی‌های بزرگ با بازار عمیق فهرست شده بودند. سوم اینکه ضرر با خود حمله تمام نشد: OKEx بعد از حمله‌های ۱۳۹۹ اعلام کرد به حذف اتریوم کلاسیک فکر می‌کند.

در اثبات سهام هم حمله ۵۱ درصد ممکن است؟

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

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

این حمله برای شما چه معنایی دارد؟

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

یک نکته‌ی آخر: وقتی سکه را بین دو حساب سواپ‌ولت جابه‌جا می‌کنید، انتقال به مخاطبان سواپ‌ولت روی بلاک‌چین ثبت نمی‌شود و شمردن تأیید برایش معنا ندارد.

پرسش‌های رایج

ممکن است به بیت‌کوین هم حمله ۵۱ درصد شود؟

در تئوری بله. تیم بیت‌کوین گلد هم در بیانیه‌اش نوشت هر بلاک‌چینی، حتی بیت‌کوین، در برابر کسی که قدرت پردازشش از همه‌ی ماینرهای درستکار بیشتر باشد آسیب‌پذیر است. در عمل، این مقدار هش‌ریت در بازار اجاره نیست و مهاجم باید خودش دستگاه تهیه کند. چیزی که ارزش زیر نظر داشتن دارد تمرکز استخرهای استخراج است: طبق داده‌های mempool.space، در ۱۲ ماه منتهی به ۱۶ مهر ۱۴۰۵ دو استخر بزرگ حدود ۴۶ درصد بلاک‌ها را ساخته‌اند. استخر صاحب دستگاه‌ها نیست و ماینرها می‌توانند استخرشان را عوض کنند.

اگر یک استخر بیش از نصف هش‌ریت را بگیرد، یعنی حمله شده است؟

نه. داشتن اکثریت یعنی توانایی حمله، نه خود حمله. ولی صرافی‌ها معمولاً صبر نمی‌کنند ببینند چه می‌شود. مرداد ۱۴۰۴ وقتی Qubic گفت اکثریت هش‌ریت مونرو را گرفته است، Kraken واریز مونرو را برای احتیاط بست. در مهر ۱۴۰۵، Kraken برای واریز مونرو ۳۲ تأیید می‌خواهد که حدود یک ساعت طول می‌کشد.

حمله ۵۱ درصد با هک صرافی یا کیف پول چه فرقی دارد؟

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

چرا اسمش ۵۱ درصد است؟

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