دوبار خرج کردن یا double spending چیست؟
تاریخ انتشار : خرداد ۲۵, ۱۴۰۲ تاریخ به روز رسانی : دی ۲۴, ۱۴۰۲ نویسنده : ریحانه مسافر زمان مورد نیاز مطالعه : 9 دقیقه تعداد بازدید : 195 بازدید۱. دوبار خرج کردن یا double spending چیست؟
دوبار خرج کردن (Double Spending) به معنای استفاده بیش از یک بار از یک واحد رمزارز یا دارایی دیجیتال در یک تراکنش است. در واقع، شخص یا گروهی که اقدام به دوبار خرج کردن میکنند، سعی میکنند یک واحد رمزارز را به طور همزمان به چندین شخص یا گیرنده متفاوت ارسال کنند، به طوری که به نظر برسد هر دو تراکنش انجام شده و واحد رمزارز به هر دو گیرنده ارسال شده است. اما در واقع، ارز دیجیتال یا واحد رمزارز فقط یکبار میتواند استفاده شود و تلاش برای دوبار خرج کردن میتواند به نقض این قاعده منجر شود. در سیستمهای پولی دیجیتال، تراکنشها بر اساس شبکههای بلاکچین انجام میشوند. وقتی که یک تراکنش انجام میشود، اطلاعات آن به صورت دیجیتال در بلاکچین ثبت میشود و به صورت غیرقابل تغییر و قابل ردیابی در شبکه قرار میگیرد.
دو بار خرج کردن ارز دیجیتال را میتوان به عنوان یک تهدید امنیتی در سیستمهای پولی دیجیتال در نظر گرفت. زمانی که یک فرد یا گروهی تلاش میکنند همزمان دو تراکنش با استفاده از یک واحد رمزارز را انجام دهند، باعث بروز دوبار خرج کردن میشوند. اگر این اتفاق بیفتد و تراکنشهای نادرست به طور همزمان در شبکه تأیید شوند، این به معنای ایجاد دو وضعیت متناقض است که در یکی از آنها رمزارز برای دو مقصد مختلف استفاده شده است.
برای جلوگیری از دوبار خرج کردن، سیستمهای پولی دیجیتال از راهکارها و مکانیزمهای امنیتی استفاده میکنند. این شامل استفاده از تکنیکهای تأیید، الگوریتمهای کنسانسوس قوی و سیاستهای امنیتی پیشرفته است. این راهکارها معمولاً امکان انجام دوبار خرج کردن را کاهش میدهند و اعتماد کاربران را به سیستم پولی دیجیتال حفظ میکنند.
به عنوان مثال فرض کنید برای خرید به یک مغازهای مراجعه کرده اید، در هنگام پرداخت اگر از کارت اعتباری استفاده کنید بتوانید کاری کنید که میزان اعتبار آن تغییر نکند، در این حالت شما از اعتبار کارت خود بیش از یک بار استفاده کرده اید. در حوزه ارزهای دیجیتال به این موضوع دو بار خرج کردن ارز دیجیتال یا دابل اسپندینگ میگویند. در این حالت شما توکن خود را بیش از یک بار خرج کرده اید.
حل مشکل دابل اسپندینگ توسط بلاک چین
هر بلاک در بلاک چین شامل دو بخش اصلی است: تراکنشهای ذخیره شده در بلاک و هش بلاک قبلی.
هش بلاک قبلی یک مجموعه از اطلاعات است که بهطور منحصر به فرد از بلاک قبلی بدست میآید. وقتی یک بلاک جدید به بلاک چین اضافه میشود، هش بلاک قبلی آن بلاک با هش بلاک آخرین بلاک موجود در بلاک چین تطابق مییابد. این تطابق هش بلاک قبلی باعث ایجاد ارتباط زنجیرهای بین بلاکها میشود و بلاکها به صورت زنجیرهای بههم متصل میشوند.
در بلاک چین هیچ نهاد متمرکزی نظارتی بر تأیید تراکنشها ندارد. به جای آن، نودهای شبکه (که میتوانند کامپیوترها یا سرورها باشند) با استفاده از یک مکانیزم اجماعی خاص، به تأیید تراکنشها میپردازند. این مکانیزم اجماع در بلاک چین از مشکلاتی نظیر دوبار خرج کردن یا حمله دابل اسپندینگ جلوگیری میکند.
دابل اسپندینگ در بیت کوین
طراحی بیت کوین به گونه ای ست که در مقابل حمله دو بار خرج کردن یا حمله دابل اسپندینگ مقاوم است. در بیت کوین، مسئله دوبار خرج کردن (Double Spending) به خاطر استفاده از تکنولوژی بلاک چین و مکانیزم اجماع حل شده است. زمانی که یک تراکنش توسط کاربر ایجاد شده و در بلاک چین ثبت میشود، تراکنش در صف تأیید توسط نودها قرار میگیرد. در این زمان راهی برای معکوس کردن عملیات تراکنش وجود ندارد. نودها در شبکه آن را تأیید میکنند و به توافق میرسند که تراکنش معتبر است. سپس تراکنش به صورت دائمی در بلاک چین ذخیره میشود و امکان تغییر یا انجام دوباره آن به طور معقولی وجود ندارد.
آموزش رایگان ارز دیجیتال در نیم ساعت
همین الان با وارد کردن اطلاعات خود در فرم، دوره آموزش ارز دیجیتال را به صورت رایگان دریافت کرده و 10/000 تومان شارژ هدیه دریافت نمایید.
۲. انواع حملات دوبار خرج کردن
سه روش برای دوبار خرج کردن بیت کوین وجود دارد:
- حمله ۵۱ درصدی
- حمله رقابتی
- حمله فینی
در ادامه هر کدام از این روش های دو بار خرج کردن ارز دیجیتال را شرح می دهیم.
حمله ۵۱ درصدی (Attack %۵۱)
حمله ۵۱ درصد یک روش حمله دابل اسپندینگ در شبکههای بلاکچین است که در آن یک فرد یا گروهی قادر است بیش از ۵۰ درصد از قدرت هش شبکه را در اختیار بگیرد. حمله 51 درصد میتواند به دوبار خرج کردن و تغییر ترتیب تراکنشها منجر شود. با داشتن بیش از 50 درصد از قدرت هش شبکه، حملهکننده میتواند بلاکهای جدید را بهدلخواه ایجاد کرده و تراکنشهای معتبر را حذف کرده یا تغییر دهد. این موضوع میتواند منجر به دوبار خرج کردن و تضعیف اعتماد به شبکه بلاکچین شود.
بیت کوین، با استفاده از مکانیزم Proof-of-Work و با توجه به قدرت محاسباتی بالای شبکه، مقاومت قابل توجهی در برابر حملات 51 درصد دارد. با این حال، در تئوری این حمله ممکن است در شبکههای کوچکتر یا ضعیفتری رخ دهد که قدرت محاسباتی کمتری مورد استفاده قرار میگیرد. بنابراین، در شبکههای بزرگ و پرقدرت مانند بیت کوین، این حمله بسیار غیرمحتمل و عملاً غیرممکن است.
حمله ریس یا رقابتی (Race Attack)
حمله ریس (Race Attack) یکی دیگر از حملات دوبار خرج کردن در بلاکچینها، از جمله بیت کوین است. در این نوع حمله، دو تراکنش متناقض با استفاده از یک مبلغ یکسان به صورت متوالی در شبکه بلاکچین پخش میشوند و در انتظار تأیید قرار دارند. اما تنها یکی از این تراکنشها تأیید و در بلاکچین ثبت خواهد شد. وقتی دو تراکنش متناقض با استفاده از یک دارایی به صورت متوالی ثبت میشوند، انجام میشود. در این حمله، شخص متقلب سعی میکند تا با انجام دو تراکنش متفاوت، از ابهامهای زمانی که در پردازش تراکنشها وجود دارد، بهرهبرداری کند.
هدف مهاجم در حمله رقابتی این است که با تأیید تراکنشی که به نفع خودش است، پرداخت را بیاعتبار کند و مبلغ مورد نظر را به آدرسی متعلق به خودش ارسال کند. برای اینکه حمله موفقیت آمیز باشد، مهاجم نیازمند یک گیرنده است که تراکنشهای تأیید نشده را قبول کند.
حمله فینی (Finney Attack)
حمله فینی (Finney Attack) نوعی حمله دابل اسپندینگ است که در شبکههای بلاکچین، به خصوص در بیتکوین، قابل اجراست. در این حمله، مهاجم یک تراکنش را در بلاک استخراج شده توسط سیستم خود قرار میدهد، اما آن را به شبکه ارسال نمیکند. به جای آن، از تراکنش استخراج شده استفاده میکند تا در یک معامله دیگر ارز دیجیتال را خرج کند. سپس، مهاجم نتایج تراکنش استخراج شده را به شبکه منتشر میکند.
در این نوع حمله، مهاجم به همکاری یک ماینر نیاز دارد تا بلاک استخراج شده توسط سیستم ماینینگ خود تأیید شود و به بلاکچین اضافه شود. با این کار، تراکنش اولیه که در بلاک قرار دارد، به نظر میرسد تأیید شده است و اعتباری دارد. در نتیجه، مهاجم قادر است از تراکنش استخراج شده استفاده کند و در معاملهی دیگری ارز دیجیتال را خرج کند.
بنابراین، برای اجرای موفقیتآمیز حمله فینی، مهاجم نیازمند همکاری یک ماینر است تا بلاکهای ایجاد شده توسط سیستم ماینینگ او تأیید شوند. همچنین، گیرنده تراکنش تأیید نشده باید تراکنش را بهعنوان پرداخت قبول کند و منتظر دریافت تأیید تراکنش نباشد.
۳. رویکردهای مقابله با حمله دابل اسپندینگ چیست؟
برای مقابله با حمله دابل اسپندینگ روش هایی وجود دارد که در ادامه به بررسی این روش ها میپردازیم.
رویکرد متمرکز در مقابله با حمله دوبار خرج کردن
رویکرد متمرکز در مقابله با دوبار خرج کردن در معاملات ارز دیجیتال، با تمرکز بر تأیید تراکنشها توسط یک برنامه شخص ثالث مرکزی و مورداعتماد انجام میشود. این برنامه مرکزی مسئول تأیید و ثبت تراکنشها است و به عنوان نقطه کنترل اصلی در فرآیند تأیید تراکنشها عمل میکند.
با این رویکرد، وقتی شما یک معامله ارز دیجیتال را انجام میدهید و پول را به فرد دیگری ارسال میکنید، تراکنش توسط شخص ثالث مرکزی بررسی میشود. این بررسی شامل تأیید صحت معامله و اطمینان حاصل کردن از دریافت گیرنده پول است. در صورت تأیید صحت تراکنش، شخص ثالث مرکزی اجازه انجام تراکنش را صادر میکند و پول را به گیرنده انتقال میدهد. صرافیهای متمرکز در بازار ارزهای دیجیتال نمونههایی از شخص ثالث مرکزی هستند که میتوانند نقش امنیتی و تأیید تراکنشها را برعهده بگیرند.
یکی از مثالهای این رویکرد، سیستم پول دیجیتال دیوید چوم است که از الگوی تراکنشهای وجوه نقد الگوبرداری شده است. این سیستم، برای انجام تراکنشها از امضاهای کور استفاده میکند. امضاهای کور، یک روش رمزنگاری است که به کاربران امکان تبادل ناشناس و همتا به همتا را میدهد. در این روش، هویت فردی که تراکنش را انجام میدهد، مخفی میشود و تنها اثبات صحت تراکنش انجام میشود. این روش میتواند ریسک دوبار خرج کردن را به حداقل برساند و امنیت تراکنشها را افزایش دهد.
رویکرد غیر متمرکز در مقابله با حمله دوبار خرج کردن
در بیتکوین و سایر ارزهای رمزنگاری شده غیرمتمرکز، از رویکرد اثبات کار (Proof of Work) برای حل مشکل دوبار خرج کردن استفاده میشود. این روش به شبکه بیتکوین امکان میدهد تراکنشهای انجام شده را به طور امن و قابل اطمینان تأیید کند.
در رویکرد غیرمتمرکز مقابله با حملات دوبار خرج کردن تمامی تراکنشها بر اساس قوانین از پیش تعیین شده توسط شبکه انجام میشود و هیچ شخص یا سازمان مرکزی حق نظارت بر تأیید تراکنشها ندارد.
جلوگیری از معاملات همزمان توسط مکانیسمهای اجماع ایمن
مکانیسم اجماع گواه اثبات کار (Proof of Work) در بیتکوین، برای تصمیمگیری در مورد تأیید معاملات استفاده میشود. در این مکانیسم، ماینرها با حل یک مسئله پیچیده ریاضی بلاک جدید را ایجاد و تراکنشها را در آن بلاک قرار میدهند.
تمام نودها در شبکه بیتکوین دارای یک نسخه از بلاکچین هستند و تراکنشها در حافظه نودها ثبت میشوند. هر نود در حین فرایند استخراج بلاک، تراکنشها را بررسی کرده و اعتبار آنها را تأیید میکند. نودها میزان ورودی و خروجی بیتکوین به هر آدرس کیف پول ثبت میکنند. به همین دلیل از حملات دوبار خرج کردن جلوگیری می شود.
۵. جمع بندی
در این مقاله این موضوع را بررسی کردیم که double spending چیست؟ و راه های مقابله با آن کدامند؟
دو بار خرج کردن ارز دیجیتال یا دابل اسپندینگ، یکی از مشکلات امنیتی در حوزه ارزهای دیجیتال است که در آن فردی تلاش میکند همزمان دو تراکنش با همان واحد ارز را انجام دهد و به این ترتیب موجب ایجاد ارز دیجیتال جعلی یا افزایش موجودی خود میشود. روش های مختلفی برای حمله دابل اسپندینگ وجود دارد از جمله حمله ۵۱ درصد، حمله ریس و حمله فینی. برای مقابله با حملات دوبار خرج کردن می توان از روش های متمرکز و غیر متمرکز استفاده کرده و از وقوع این حملات جلوگیری کرد.
دیدگاه کاربران
بدون دیدگاه