در دنیای امروزی، علم و تکنولوژی با سرعت زیادی در حال پیشرفت است و صنایع زیادی سعی دارند همگام با آن پیشرفت کنند. یکی از صنایعی که افراد زیادی سعی در دیجیتالی کردن آن داشته اند، صنعت وجه نقد و معاملات است. در طول سالیان گذشته، پروژه های زیادی با هدف دیجیتالی کردن پول شروع به فعالیت کردند اما اغلب این پروژه ها با شکست مواجه شدند. دلیل اصلی شکست پروژه های پول دیجیتال، عدم توانایی از جلوگیری دوبار خرج کردن بوده است. نهایتاً پروژه ی بیت کوین با حل این مشکل توانست ارز دیجیتال را در دنیای کنونی راه اندازی کند. 

دوبار خرج کردن چیست؟ (Double Spend)

دوبار خرج کردن یا همان دابل اسپندینگ، با توجه به اسم آن، یک پول را دومرتبه خرج کردن است. آیا این اتفاق ممکن است رخ دهد؟ در فضای آنلاین بله! به این مثال توجه کنید: در دنیای واقعی، زمانی که وارد یک فروشگاه می شوید و خریدی انجام می دهید، از پول نقد یا کارت اعتباری استفاده می کنید. زمانی که از پول نقد برای پرداخت هزینه ها استفاده می کنید، به هیچ عنوان نمی توانید آن پول را مجدداً خرج کنید. درصورت استفاده از کارت اعتباری برای پرداخت هزینه ها نیز بانک یا موسسه ی مالی، اطمینان یک تراکنش موفق را به فروشنده می دهد و پس از تأیید پرداخت، کالای موردنظر را در اختیار شما قرار می دهد. اما بیت کوین یک پول فیزیکی نیست و یک نفر می تواند با کپی کردن آن، مجدداً آن را خرج کند. اما چگونه؟  

چگونه بیت کوین را دوبار خرج کنیم؟

سه روش معمول برای دوبار خرج کردن بیت کوین عبارتند از:

حمله ی 51درصد

انواع دوبار خرج کردن (Double Spend)

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

حمله ی ریس (Race attack)

دوبار خرج کردن در ارزهای دیجیتال

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

حمله ی فینی (Finney attack)

انواع حملات دوبار خرج کردن (Double Spend)

در این روش، فرد متقلب یک تراکنش را در بلاک استخراج شده توسط سیستم استخراج خود قرار می دهد اما آن را به شبکه ارسال نمی کند. سپس ارز دیجیتال موردنظر را در معامله ی دیگری خرج کرده و نتایج تراکنش استخراج شده را در شبکه منتشر می کند. این نوع از حملات، به همکاری یک ماینر نیاز دارد اما اجرای این ترفند، همانند ترفند ریس، به گیرنده ای نیاز دارد تا تراکنش تأیید نشده را به عنوان پراخت قبول کرده و منتظر دریافت تأیید تراکنش نباشد. 

بیت کوین چگونه مشکل دوبار خرج کردن را حل کرده است؟ 

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

یکی از مکانیزم های تأیید تراکنش در شبکه ی بیت کوین، به حد نصاب رسیدن تعداد تأیید تراکنش ها است. به این صورت، تراکنشی که بیش ترین تأیید را دریافت کرده باشد، در شبکه ثبت و انجام می شود. تعداد تأییدهای لازم برای انجام تراکنش، شش تأیید از سوی ماینرها است. به همین خاطر، این شبکه اعلام کرده است تا گیرنده ها حداقل تا دریافت شش تأیید منتظر باشند تا از انجام تراکنش خود مطمئن شده و از ریسک دوبار خرج کردن بیت کوین جلوگیری کنند.

رویکردهای مقابله با حملات دوبار خرج کردن رمزارزها

1- رویکرد متمرکز در مقابله با دوبار خرج کردن

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

2- رویکرد غیرمتمرکز برای مقابله با Double Spend

بیت کوین یک ارز غیرمتمرکز است و کاربران به مرجع اعتبارسنجی تراکنشات دسترسی ندارند. به همین خاطر، شبکه ی بیت کوین از مکانیسم های جمعی برای حل این مشکل استفاده می کند تا تراکنش های انجام شده را تأیید کند. این مکانیسم اجماع که با عنوان اثبات کار شناخته می شود، هر گره شرکت کننده در تراکنش را تأیید می کند.

سخن پایانی

در این مقاله با دوبار خرج کردن بیت کوین یا Double Spend آشنا شدید. همچنین انواع روش های خرج کردن دوباره ی ارز دیجیتال و رویکرد بلاک چین بیت کوین را در مقابله با این خدمات به شما توضیح دادیم. با توجه به مقاله، شبکه ی بیت کوین از دوبار خرج شدن ارز دیجیتال در شبکه ی خود جلوگیری کرده و قول یک تراکنش امن را به کاربران خود می دهد. به نظر شما با وجود این مکانیزم های پیشرفته، باز هم امکان Double Spend ارز دیجیتال وجود دارد؟