حمله دوبار خرج کردن (Double Spending) در ارز دیجیتال چیست؟
دوبار خرج کردن زمانی رخ میدهد که یک واحد رمزارز، بیش از یک بار برای پرداخت استفاده میشود. به عبارت دیگر، یک تراکنش کپی شده و مقدار مشابهی از رمزارز دوباره خرج میشود. برای درک بهتر مفهوم دوبار خرج کردن، به یک مثال در دنیای واقعی میپردازیم. فرض کنید برای صرف صبحانه به یک کافه رفتهاید. هنگام خروج، مبلغ صورتحساب خود را به صورت نقدی پرداخت میکنید. صندوقدار مبلغ را دریافت کرده و معامله انجام میشود.
حمله دوبار خرج کردن (Double Spending) در ارز دیجیتال چیست؟
همزمان با ایجاد بلاک در بلاکچین، یک هش (hash) به آن اختصاص داده میشود که اطلاعاتی از بلاک قبلی را به همراه اطلاعات تراکنش و برچسب زمانی در خود جای داده است. این اطلاعات با استفاده از الگوریتمهای رمزنگاری مختلف رمزگذاری میشوند. ماینرها این اطلاعات را مشاهده و تایید میکنند، و به این ترتیب بلاکها تایید میشوند و یک بلاک جدید با برچسب زمانی، اطلاعات تراکنش و هش بلاک قبلی ایجاد میشود.
چگونه میتوان مانع از دوبار خرج کردن شد؟
وجود یک مکانیزم اجماع قوی میتواند به طور قابلتوجهی در پیشگیری از این نوع حملات کمک کند. همچنین، وجود مفهوم نانس (Nonce) نیز از انجام این حمله جلوگیری میکند. نانس یک مقدار رمزگذاریشده است که تنها یکبار قابل استفاده است. علاوه بر این، برچسب زمانی نیز فاکتور دیگری است که از حملات دوبار خرج کردن جلوگیری میکند. برچسب زمانی نشان میدهد که یک بلاک مشخص در زمانی معین به زنجیره اضافه شده است. همچنین، قراردادهای هوشمند و پروتکلهای بلاکچینی همواره به افزایش امنیت و جلوگیری از خطراتی مانند دوبار خرج کردن کمک میکنند.
راهکار بیت کوین برای جلوگیری از Double Spending
حالا میخواهیم به صورت مشخص شبکه بیت کوین را بررسی کنیم و ببینیم راهکار این بلاکچین برای مقابله با این معضل چیست. بیت کوین به کمک دو عامل از وقوع Double Spending جلوگیری میکند. این عناصر به شرح زیر هستند:
- دفتر کل توزیعشده (DLT): وجود یک DLT باعث میشود که همه بتوانند تراکنشها را ببینند. هر نود تاریخچه تراکنشها را به طور کامل ذخیره میکند. به همین خاطر میتواند تایید کند که هیچ کوینی دوبار خرج نمیشود.
- برچسب زمانی (Time Stamp): بلاکها به کمک برچسب زمانی مهر زده میشوند. وقتی دو تراکنش بخواهند بیت کوین یکسانی را دوباره خرج کنند، این طراحی به تمام نودها اجازه میدهد که متوجه شوند کدامیک از دو تراکنش معتبر و کدام نامعتبر هستند.
انواع حمله Double Spending
دوبار خرج کردن ممکن است به اشکال گوناگونی رخ دهد. در ادامه به چند مورد از آنها اشاره میکنیم:
- حمله فینی (Finney Attack): حمله فینی زمانی رخ میدهد که شخص یک تراکنش تاییدنشده را روی شبکه بپذیرد. در این روش، ماینر همان حملهکننده است. او تراکنشی را در یک بلاک قرار میدهد و بخشی از کوینهای خود را بدون انتشار تراکنش روی شبکه، به خودش ارسال میکند.
- حمله سرعتی (Race Attack): در این حمله، شخص حملهکننده دو تراکنش را به صورت متوالی و سریع روی شبکه ارسال میکند.
- حمله ۵۱ درصد (51% Attack): حمله ۵۱ درصد زمانی اتفاق میافتد که حملهکننده کنترل ۵۱ درصد از نودهای شبکه را در اختیار داشته باشد.
- حملات تراکنشهای تاییدنشده (Unconfirmed Transaction Attacks): این حملات افرادی را نشانه میگیرد که تراکنشهای تاییدنشده را میپذیرند؛ یعنی هنوز تراکنش نهایی نشده ولی آنها تراکنش را قطعی قملداد میکنند.
جمعبندی
فناوری بلاکچین همچنان در حال پیشرفت و توسعه است و هنوز مشکلات و باگهای مختلفی دارد. با این حال، وجود فناوریهای مانند دفتر کل توزیعشده، قرارداد هوشمند، مکانیزم اجماع و برچسب زمانی، به میزان زیادی مانع از انجام این حمله میشود و به طور کلی، به راحتی نمیتوان Double Spending را انجام داد.