یکی از شناخته شدهترین پدیدههای دنیای ارزهای دیجیتال دوبار خرج کردن یا Double-spending نام دارد. دوبار خرج کردن مفهومی است که علاقمندان به شناخت دنیای ارزهای دیجیتال و ورود به این حوزه باید آن را بشناسند. در اینجا قصد داریم ضمن پرداختن به پدیده دوبار خرج کردن با انواع زیر شاخههای آن نیز آشنا شویم.
ممکن است از دانستن اینکه قبل از بیتکوین نیز تلاشهایی برای ایجاد یک سیستم پولی دیجیتال پایدار بهعملآمده بود، شگفتزده شوید. اما تمام این تلاشها با شکست مواجه شدند زیرا یک مشکل آشکار با پول دیجیتال این بود که تراکنشها را می توان دو بار کپی و یک مقدار پول مشخص را دوبار خرج کرد. به این اتفاق دوبار خرج کردن یا Double spending میگویند. بگذارید کمی موضوع را باز کنیم.
فرض کنید فردی به نام باب به استارباکس میرود و یک قهوه به ارزش ۱۰ دلار سفارش میدهد. پول قهوه خود را به صورت نقد به صندوقدار میدهد. به محض پرداخت اسکناس به صندوقدار، او تایید میکند که او پرداخت خود را انجام داده است و معامله صورت گرفته است. حالا که ۱۰ دلار پول نقد در صندوق پول استارباکس قرار دارد، باب دیگر به آن پول دسترسی ندارد و نمیتواند همان ۱۰ دلار را در جای دیگری صرف خرید دیگری کند. مگر اینکه آن را بدزدد!
اما بیت کوین یک پول دیجیتال است و ماهیت فیزیکی ندارد. از این رو در معاملات امکان کپی کردن و خرج کردن مجدد آن وجود دارد. در مثال استارباکس، باب پول نقد میدهد، بنابراین پرداخت فوراً توسط یک انسان دیگر تایید میشود. اما با استفاده از ارز دیجیتال مانند بیتکوین، این مکانیسم به صورت دیجیتالی انجام میشود و اگر در حال تایید پرداخت شما باشد، هر کسی میتواند آن پول دیجیتال را کپی کرده و به جای دیگری بپردازد.
اینجاست که تخلف صورت میگیرد. بیت کوین اولین ارز دیجیتالی بود که ادعا کرد میتواند این مشکل را حل کند.
بیت کوین چگونه مشکل دوبار خرج کردن را حل میکند
بیت کوین از سیستمی استفاده کرد تا بتواند تراکنشها را در آن ثبت کرد. در این سیستم تراکنشها باید حتما به صورت زنجیروار و در یک دفتر کل توزیع شده ثبت شوند. این سیستم یک دفتر ثبت دیجیتال است که مانند سیستمهای سنتی رکورد تمام تراکنشها را در خود ذخیره میکند. این سیستم در واقع همان بلاکچین است.
برای مثال برای بیتکوین از سال ۲۰۰۹ تا بحال تمام تراکنشها موجود است. اطلاعات داخل بلوک ها قرار میگیرد. هر ۱۰ دقیقه یک بلوک به دفترکل اضافه میشود و همه گرهها در شبکه بیتکوین یک کپی از این دفتر جهانی دارند.
بلاکچین بیتکوین چگونه از دوبار خرج کردن جلوگیری میکند؟
فرض کنیم شما یک بیت کوین دارید که میخواهید دو برابر آن را خرج کنید. شما تراکنش را با یک شخص انجام دادید، آن را امضا کردید و میخواهید همان بیت کوین را به آدرس دیگری بفرستید تا شخص دیگری را گول بزنید. هر دو تراکنشها به مجموعه تراکنش های تایید نشده وارد میشوند. اما فقط اولین تراکنش شما تایید شده و توسط ماینرها در بلوک بعدی قرار میگیرد. تراکنش دوم شما تایید نخواهد شد چرا که ماینرها آن را نامعتبر دانستند، بنابراین از شبکه بیرون کشیده خواهد شد.
با این وجود اگرچه بیت کوین با استفاده از فناوری بلاکچین توانست این مشکل را تا حد زیادی برطرف کند، اما احتمال وقوع چنین حملاتی هنوز هم در بلاکچین بیتکوین و سایر ارزهای دیجیتال جدیدتر وجود دارد.
انواع حملات دوبار خرج کردن
همانطور که گفتیم با وجود این سیستم هنوز هم به لحاظ تئوری امکان انجام دوبار خرج کردن در برخی موارد وجود دارد. برای نمونه در حملات رقابتی (race attack)، حملات فینی (Finney attack) و حملات ۵۱% امکان پرداخت بیش از یک بار ارز دیجیتال به وجود میآید.
حمله رقابتی (Race attack)
این حمله برای افرادی رخ میدهد که پرداخت هزینه کالا یا خدمات را با تراکنشی که هیچ تایید بلاکی ندارد قبول میکنند. در این روش فرد حمله کننده میتواند به فاصلهی بسیار کوتاه دو تراکنش ناهمخوان با هم به شبکه بفرستد. برای نمونه این فرد ابتدا یک تراکنش برای پرداخت هزینهی کالا یا خدمات به بازرگانی را به شبکه میفرستد و سپس یک تراکنش ناهمخوان میفرستد تا همان کوینها را به خودش برگرداند. ممکن است تراکنش ناهمخوان دوم در شبکه استخراج شود و هنگام ورود به یک بلاک، گرههای شبکه آن را به عنوان یک تراکنش معتبر بپذیرند. به این ترتیب بازرگان زیان میبیند زیرا او قبلا کالا و خدمات خود را ارائه داده و اکنون منتظر دریافت هزینه آن است.
حمله فینی (Finney attack)
حمله فینی نوع دیگری از حمله است که میتوان برای پرداخت در ازای کالا یا خدمات با صفر تایید بلاک رخ دهد. در حمله فینی، یک ماینر کار استخراج یک بلاک را تمام کرده ولی هنوز آن بلاک استخراج شده را در شبکه برادکست یا اعلام نکرده است. در این شیوه حمله، ماینر میتواند جابهجایی مقداری ارز دیجیتال از آدرس آ به آدرس ب (که هر دو متعلق به خودش است) را در بلاک استخراج شده قرار دهد ولی از ارسال آن خودداری کند. وی سپس کالا یا خدماتی را از یک بازرگان میخرد و پرداخت هزینه آن را از آدرس آ خود به آدرس ج فروشنده انجام میدهد. ممکن است بازرگان که در انتظار دریافت هزینه است کالا یا سرویس را به ماینر بدهد. اکنون ماینر میتواند با ارسال بلاک استخراج شده که حاوی تراکنش آ به ب است، از پرداخت هزینه بازرگان خودداری کند. به این ترتیب، تراکنشی که ماینر برای خود انجام داده (از آ به ب) پیش از تراکنشی که برای بازرگان انجام داده (آ به ج) ثبت میشود.
حمله ۵۱%
حمله ۵۱% که به نام حمله اکثریت نیز شناخته میشود، راه دیگری برای انجام دوبار خرج کردن توسط حمله کننده است. در این شیوه حمله کننده باید کنترل بیش از نیمی از نرخ هش شبکه را در اختیار داشته باشد. هنگامی که حملهی ۵۱% رخ دهد، حمله کننده میتواند سریعتر از باقی شبکه بلاک تولید کند زیرا نرخ هش بیشتری در اختیار دارد. بنابراین میتواند نسبت به استخراج یک فورک شخصی از بلاکچین اقدام کند و این کار را آنقدر ادامه دهد تا زنجیره تازه از بلاکچین اصلی که به دست ماینرهای درستکار ساخته شده، بلندتر شود. سپس حمله کننده میتواند مبالغی از ارز دیجیتال را در بلاکچین اصلی خرج کند ولی تراکنشهای آن را در بلاکچین شخصی خود ثبت نکند. پس از آن میتواند این بلاکچین شخصی را در شبکه برادکست و اعلام کند و ارزهای دیجیتال را دوباره خرج کند.
اما تاکنون هیچ مدرکی مبنی بر بروز حمله ۵۱ درصد در شبکه بیت کوین مشاهده نشده و علت آن این است که هشریت (قدرت هش) شبکه بیت کوین بسیار بالاست؛ یعنی هزینه و هماهنگیهایی که برای بهدستگرفتن کنترل این مقدار از قدرت هش لازم است، چنان گزاف است که در نهایت هیچ انگیزه مالی برای انجام این کار باقی نمیگذارد.
اگرچه تاکنون هیچ حمله ۵۱ درصدی موفقیتآمیزی بر روی بیتکوین و اتریوم رخ نداده، اما چندین ارز دیجیتال دیگر قربانی این نوع حملات شدهاند که فورکهای بیت کوین و اتریوم جزو آنها هستند.
سخن پایانی
بهطور کلی، اگر مراقب تراکنشهای دریافتی خود باشید و تا زمانی که مبالغ را در کیف پول خود دریافت نکردهاید تراکنشی را نپذیرید، میتوانید اطمینان داشته باشید که هرگز هدف حمله فینی یا رقابتی قرار نخواهید گرفت.
درباره حملات ۵۱ درصد، برخی کارشناسان میگویند برای اینکه قربانی این حملات نشوید، فقط باید با ارزهای دیجیتالی کار کنید که قدرت شبکه در آنها کاملاً غیرمتمرکز و توزیعشده است. در مورد شبکههای مبتنی بر اثبات کار، هر چقدر که هشریت شبکه بیشتر باشد، امنیت آن هم بیشتر است. در مورد شبکههای مبتنی بر اثبات سهام نیز، هر چقدر حجم بازار ارزها بیشتر باشد، امنیت آن در برابر حملات ۵۱ درصدی بیشتر خواهد بود.
منابع: investopedia gemini mycryptopedia