دو بار خرج کردن
۱۴۰۵/۱/۲۷
دو بار خرج کردن تلاشی است برای خرج کردن همان وجوه ارز دیجیتال بیش از یک بار — ارسال همان سکهها به دو گیرنده مختلف به طور همزمان. این مشکل اساسی است که فناوری بلاکچین برای حل آن طراحی شده است.
مشکل
در فایلهای دیجیتال سنتی، دادهها میتوانند به صورت آزادانه کپی شوند. بدون مکانیزمی برای جلوگیری از کپیبرداری، پول دیجیتال میتواند به طور نامحدود تکثیر شود — همان سکهها میتوانند به افراد مختلف ارسال شوند. بانکها این مشکل را با نگهداری یک دفتر کل مرکزی حل میکنند. بیتکوین این مشکل را بدون یک مرجع مرکزی حل میکند.
چگونه بلاکچین از آن جلوگیری میکند
اجماع اثبات کار تضمین میکند:
- تنها یک نسخه از تاریخچه تراکنشها پذیرفته میشود (طولانیترین زنجیره معتبر)
- تغییر تاریخچه نیاز به انجام کار بیشتری نسبت به کل شبکه صادق دارد
- هنگامی که یک تراکنش به اندازه کافی تأییدیه دریافت کرد، برگشت آن از نظر محاسباتی غیرممکن است
حمله 0-تأییدیه
تنها ریسک عملی دو بار خرج کردن علیه بازرگانانی است که تراکنشهای 0-تأییدیه را میپذیرند:
- مهاجم TX1 را به بازرگان ارسال میکند (پرداخت برای کالاها)
- به طور همزمان TX2 را به شبکه پخش میکند که همان سکهها را به خودشان برمیگرداند
- اگر TX2 ابتدا تأیید شود، TX1 نامعتبر میشود — بازرگان فریب میخورد
انتظار برای حتی 1 تأییدیه این حمله را بسیار دشوار میکند. تأییدیههای متعدد آن را عملاً غیرممکن میسازد.
حمله 51%
اگر یک مهاجم بیش از 50% از نرخ هش شبکه را کنترل کند، میتواند به طور نظری بلوکهای اخیر را بازنویسی کند تا تراکنشهای خود را معکوس کند. این کار برای شبکههای بزرگ مانند بیتکوین پرهزینه و غیرعملی است، اما در سکههای PoW کوچکتر رخ داده است.
