منظور از مصرف دوباره دارائی (double spending)، دو بار استفاده کردن از ارزش یک دارائی دیجیتال میباشد. در واقع به جای آن که در انجام تراکنشی یک بار از یک دارائی دیجیتال استفاده شود، از این دارائی دیجیتال در دو حالت و جای دیگر استفاده شده است.
مصرف دوباره دارائی یکی از حملات رایج در دنیای ارزهای دیجیتال و بلاکچین است که ارزهای دیجیتال همواره در نظر دارند تا با اعمال بروزرسانیهای امنیتی جدیدی در ساختار خود، از بروز چنین حملاتی جلوگیری به عمل آورند.
توضیح مفهوم حمله مصرف دوباره دارائی با استفاده از یک مثالی ساده
فرض کنید که به یک کافی شاپ میروید. در این کافی شاپ، سفارش یک فنجان قهوه ۵ دلاری را میدهید. حال هزینه قهوه خود را به صورت نقدی با کافی شاپ حساب میکنید. در این وضعیت، این ۵ دلار پرداخت شده، در حساب و کیف پولی کافی شاپ قرار میگیرد.
در این شرایط، دیگر هیچ وقت نمیتوانید آن ۵ دلار را برای انجام کار دیگری صرف کنید؛ چرا که آن را به صورت نقدی به کافی شاپ پرداخت کردهاید. در واقع با صادر شدن و پرداخت فاکتور خرید، فروشنده مطمئن میشود که شما پرداخت را به درستی انجام دادهاید.
ولی در نقطه مقابل، شرایط در مورد ارزهای دیجیتالی مانند بیتکوین بسیار متفاوت میباشد. بیتکوین یک دارائی دیجیتال بوده و از این رو ممکن است که تراکنشهای صورت گرفته با آن به راحتی کپی شده و در شبکه بلاکچین، پخش مجدد گردند. از این رو در ارزهای دیجیتالی مانند بیتکوین، احتمال بروز حمله مصرف دوباره دارائی دیجیتال وجود دارد.
مکانیزم بیتکوین برای مقابله با حمله مصرف دوباره دارائی دیجیتال
بیتکوین، با پیادهسازی یک مکانیزم تصدیق درستی و نیز به واسطه ویژگیهای بلاکچینش، درصدد مقابله با حمله مصرف دوباره دارائی دیجیتال میباشد. در شبکه بلاکچین بیتکوین، از همان زمان اول پیدایش این ارز دیجیتال، اطلاعات مربوط به تراکنشهای صورت گرفته، در شبکه ذخیره میگردند.
به طوری که در هر ۱۰ دقیقه یک بلاک جدید به شبکه اضافه شده و تمامی نودهای موجود در شبکه بیتکوین، یک کپی از بلاکچین را در اختیار دارند.
در چنین ساختاری، بیتکوین به صورت زیر از بروز حمله مصرف دوباره دارائی دیجیتال، جلوگیری مینماید:
فرض کنید که فردی یک تراکنش ۱ BTC را در یک مرکز فروش انجام داده است. حال بعد از این تراکنش، در راستای فریب فروشنده و انجام خریدی دوباره، وی همین ۱ BTC مصرف شده را به یک آدرس بیتکوین دیگری که متعلق به فروشنده دیگر است، اختصاص میدهد.

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