اصطلاح دوبار خرج کردن یا دابل اسپندینگ فرآیندی است که طی آن یک ارز دیجیتال میتواند دو بار یا بیشتر مورد استفاده قرار گیرد. در صورت رعایت شرایط خاص، اطلاعات تراکنش در یک بلاکچین قابل تغییر است. اگر این اتفاق بیفتد، شخصی که تغییر را آغاز کرده است میتواند سکههای مصرف شده را پس بگیرد.
برای درک دوبار خرج کردن، ابتدا به بررسی نحوه عملکرد بلاکچین میپردازیم. هنگامی که یک بلاک ایجاد میشود، یک هش دریافت میکند که شامل مهر زمانی، اطلاعات بلاک قبلی و دادههای تراکنش است. این اطلاعات با استفاده از یک پروتکل امنیتی مانند الگوریتم SHA-256 مورد استفاده توسط بیتکوین رمزگذاری میشود. هنگامی که اطلاعات آن بلاک توسط ماینرها تأیید شد (در اجماع اثبات کار)، این بلاک بسته میشود. پاداش نیز به ماینری تعلق میگیرد که دستگاه او هش را تأیید کرده است.
برای اینکه کسی دابل اسپندینگ کند، باید یک بلاک مخفی استخراج شود که از روند تولید بلاکچین واقعی پیشی بگیرد. سپس باید آن زنجیره را قبل از رسیدن به شبکه معرفی کند. اگر این اتفاق بیفتد، شبکه آن را به عنوان آخرین مجموعه بلاک تشخیص داده و به زنجیره اضافه میکند. شخصی که این کار را انجام میدهد میتواند هر ارز رمزپایهای را که خرج کرده بود پس بگیرد و دوباره از آن استفاده کند.
جلوگیری از دابل اسپندینگ
هرچند دابل اسپندینگ توسط سازوکار بلاکچین به حداقل میرسد اما همچنان یک خطر قابل توجه است. احتمال درج یک بلاک مخفی در بلاکچین بسیار اندک است زیرا باید توسط شبکه ماینرها پذیرفته و تأیید شود.
تنها شانسی که یک ماینر با نیات غیرقانونی برای وارد کردن یک بلاک تغییر یافته دارد این است که سعی کند ماینر دیگری بلاک مخفی را بپذیرد. حتی در این صورت، احتمال پذیرش بلاک اصلاح شده بسیار اندک است. بلاکچین و مکانیسم اجماع آنقدر سریع حرکت میکنند که بلاک اصلاح شده قبل از پذیرفته شدن قدیمی میشود. حتی اگر پذیرفته شود، شبکه باز هم اطلاعات موجود در بلاک را ارسال و آن را رد میکند.
بررسی تراکنشهای ارزهای رمزنگاریشده مدتی طول میکشد، زیرا این فرآیند شامل انتخاب تصادفی اعداد برای حل هش پیچیده است و قدرت محاسباتی زیادی را میگیرد. بنابراین، کپی کردن یا جعل بلاکچین بسیار دشوار است، زیرا قدرت محاسباتی بسیار زیادی برای پیشی گرفتن از سایر ماینرهای شبکه مورد نیاز است.
حملات دوبار خرج کردن (Double Spending Attacks)
حمله 51 درصدی
مهمترین خطر برای بلاکچینها، حمله 51 درصدی است. این حمله زمانی رخ میدهد که ماینری بیش از 50 درصد از قدرت محاسباتی شبکه را کنترل کند. در این صورت این فرد میتواند بلاکها را ایجاد و تایید کند و در نتیجه دابل اسپندینگ انجام دهد. اگر این کاربر (یا کاربران) اکثر هشها را در بلاکچین کنترل کنند، میتوانند اجماع تراکنشها را دیکته کنند و پاداش دادن ارزها را کنترل کنند. در رمزارزهای محبوبتر مانند بیتکوین، به دلیل تعداد ماینرها و سختی استخراج، این امر بسیار بعید است. با این حال، ارزهای دیجیتال جدید یا فورک شده با شبکههای کوچکتر در معرض این حمله هستند.
حمله رقابتی (Race attack)
در این نوع حمله، یک کاربر دو تراکنش را بصورت همزمان ثبت میکند. در تراکنش اول مقداری ارز دیجیتال به آدرس کیف پول طرف معامله و در تراکنش دوم به آدرس کیف پول خودش ارسال میکند. نکتهای که در اینجا وجود دارد این است که فرد مهاجم تراکنش دوم (ارسال به والت شخصی خود) را با کارمزد بالاتری ثبت میکند تا زودتر انجام شده و تراکنش اول باطل شود. در صورتی که در تراکنش اول، طرف دوم معامله، تراکنش تایید نشده را نپذیرد، حمله رقابتی منتفی است.
آیا میتوان یک بیتکوین را دوبار خرج کرد؟
شما نمیتوانید یک بیتکوین را دوبار خرج کنید زیرا بلاکچین و مکانیسم اجماع، آن را نمیپذیرد.