دوبار خرج کردن (Double Spending) چیست؟ بررسی احتمال وقوع این حمله
فهرست مطالب
مقدمه
از زمان روی کار آمدن داراییهای دیجیتال و کریپتوکارنسیها، مشکلات و مسائل زیادی بر سر راه امنیت این حوزه قرار گرفته است. بسیاری از این موارد و روشهای پیشگیری از رخداد چنین مواردی در زمان طراحی پروژهها در نظر گرفته شده است، اما با این وجود باید به بررسی راههای احتمالی مشکلات و حملات پیش روی این حوزه پرداخت. در این حوزه، حملاتی همچون حمله 51 درصدی یا حمله دوبار خرج کردن (Double Spending Attack) وجود دارد. در این مقاله قصد داریم به بررسی امکان دوبار خرج کردن در دنیای رمزارزها بپردازیم و مفهوم آن را به طور کامل شرح دهیم.
دوبار خرج کردن (Double Spending) به این معنی است که فردی دارایی دیجیتالی با اطلاعات و مشخصات مشابه را بیش از یک بار، استفاده و خرج کند. این کار امکانپذیر است؛ چراکه کاربران میتوانند به آسانی به بازتولید دادههای دیجیتالی بپردازند. این اتفاق زمانی رخ میدهد که کاربری تراکنشی را دقیقاً مشابه با تراکنش قبلی که در شبکه تأیید شده است ایجاد نماید.
علیرغم اینکه بیت کوین توانسته است با مشکل دوبارخرج کردن مقابله نماید، اما باید بدانید که تمامی ارزهای دیجیتال دیگر از الگوریتم اجماع مشابهی استفاده نمیکنند و این موضوع که بیت کوین توانسته است از کابران در مقابل چنین مواردی محافظت کند، به این معنی نیست که چنین اتفاقی به هیچ وجه و در هیچ یک از ارزهای دیجیتال دیگر امکانپذیر نیست.
دوبار خرج کردن (Double Spending) به چه معنا است؟
دوبار خرج کردن زمانی رخ میدهد که تراکنشی دقیقاً با اطلاعات یک تراکنش دیگری که در شبکه تأیید شده است ایجاد شود. کاملاً مشخص است که امکان رخداد چنین چیزی برای داراییهای فیزیکی و ارزهای فیات وجود ندارد؛ چراکه اگر 5 دلار را برای خرید یک قهوه پرداخته باشید، نمیتوانید مجدداً آن را خرج کنید و مالکیت آن را به فرد دیگری دادهاید.
در مواردی که از کارتهای اعتباری (Credit card) استفاده میکنید نیز، بانک به عنوان شخص واسط تضمین و تأیید میکند که یک دارایی از حساب شما به حساب کاربری فرد دیگری منتقل شده است. در این صورت، مالکیت آن به شخص دیگری منتقل شده و دیگر به آن دارایی دسترسی نخواهید داشت و نمیتوانید مجددا از آن دارایی استفاده نمایید.
اگرچه با توجه به وجود فناوری بلاکچین انجام این امور به سادگی که به نظر میرسد نیست، اما ارزهای دیجیتال داراییهای دیجیتالی هستند که امکان کپی کردن اطلاعات آنها به سادگی امکانپذیر است. از آنجا که هیچ نهاد یا مؤسسۀ متمرکزی بر این حوزه نظارت ندارد، کاربران میتوانند با تکثیر داراییهای دیجیتال به استفاده آنها بپردازند. دارندگان کوینها نیز میتوانند از نسخۀ اصلی یک کوین، یک نسخۀ کپی تهیه کنند و با استفاده از آن، تراکنشهای مورد نظر خود را انجام دهند و نسخۀ اصلی را در کیف پول ارز دیجیتال خود نگه دارند.
بیت کوین چگونه با دوبار خرج کردن مقابله کرده است؟
در بلاکچین بیت کوین برای مقابله و جلوگیری از چنین مواردی از سیستمهای مالی سنتی الهام گرفته شده است. در این شبکه از یک مکانیسم تأیید با ترتیب زمانی استفاده میشود و اولین تراکنش ثبتشده در نظر گرفته میشود.
فرض کنید یکی از دارندگان قصد داشته باشد از یک بیت کوین برای انتقال به چندین فروشنده استفاده کند. برای این کار تمامی تراکنشها به شبکه ارسال و منتظر دریافت تأیید باقی میمانند. اولین تراکنشی که تأیید شود در بلاکچین قرار میگیرد. با اضافه شدن بلاکهای جدید به دفتر کل، تأییدهای بیشتری به آن تراکنش تعلق میگیرد.
دومین تراکنشی که با اطلاعات مشابه به شبکه ارسال میشود، دیگر تأیید نخواهد شد و ماینرها میتوانند تشخیص دهند که این تراکنش با قصد دوبار خرج کردن صورت گرفته است و مشابه تراکنش ثبتشدۀ قبلی است.
حال فرض کنید که هر دوی این تراکنشها به صورت همزمان به شبکه ارسال شوند، در این صورت چه رخ میدهد؟ ماینرها تراکنشی را تأیید میکنند که بیشترین تعداد تأیید را دریافت کرده است و این تراکنش، تنها تراکنشی است که با این اطلاعات در بلاکچین ثبت میشود.
دلیل این امر آن است که ماینرها با استفاده از محاسبات پیچیده و استفاده از توان محاسباتی بالا، تراکنشهای قبلی ثبتشده را بررسی میکنند و از دوبار خرج کردن جلوگیری میکنند. با توجه به اینکه اطلاعات مربوط به خرج کردن نسخۀ کپی در بلاکچین ثبت شده است، امکان استفادۀ آن برای بار دوم وجود ندارد.
نکته منفی و عیب این موضوع این است که زمانبر است. به عنوان مثال اگر فردی کالایی را به فروش رسانده باشد و قصد دریافت هزینۀ آن با بیت کوین را داشته باشد، ممکن است در برخی موارد، چیزی حدود یک ساعت منتظر بماند تا تراکنش مربوطه تأیید شود تا بتواند کالا را به خریدار تحویل دهد.
انواع روشهای حمله دوبار خرج کردن
علیرغم اینکه بسیاری از ارزهای دیجیتال وجود دارند که از الگوریتم اثبات گواه کار استفاده نمیکنند، اما راه حلهایی را برای مقابله با دوبارخرج کردن در نظر گرفتهاند. با این وجود نمیتوان امکان احتمال حمله دوبار خرج کردن را نادیده گرفت. در ادامه به انواع روشهای احتمالی برای Double Spending خواهیم پرداخت.
حمله رقابتی (Race attack)
این اتفاق زمانی رخ میدهد که فروشندگان یک کالا قبل از اینکه تأیید بلاک برای تراکنشها صورت بگیرد، پرداختی را میپذیرند. در چنین شرایطی کاربرانی که قصد دوبار خرج کردن دارایی خود را دارند، دو تراکنش را تقریباً به صورت همزمان انجام میدهند. مقصد یکی از آنها به آدرس فروشنده و مقصد دیگری کیف پول دیگری خواهد بود. در این حالت ممکن است که ماینرها تراکنش مربوط به کیف پول را تأیید کنند و در این صورت، دیگر فرد فروشنده چیزی دریافت نخواهد کرد.
حمله 51 درصدی
حمله 51 درصدی را با نام حمله جمعی یا حداکثری نیز میشناسند؛ چراکه چنین چیزی تنها در صورتی امکانپذیر است که حملهکنندگان بیش از نیمی از نرخ هش شبکه را در اختیار داشته باشند. این اتفاق زمانی رخ میدهد که یکی از ماینرها یا گروهی از آنها بتوانند بلاکی را زودتر از ماینرهای باقیمانده در شبکه استخراج کنند. در حال حاضر با توجه به مواردی همچون سختی استخراج، امکان چنین اتفاقی به خصوص برای رمزارزی شبیه به بیت کوین تقریباً غیرممکن است.
Finney attack
این مورد نیز زمانی رخ میدهد که فروشندگان، قبل از تأیید بلاک، تراکنش را انجامشده تصور میکنند. در این روش ماینرها به انتقال دارایی از یک کیف پول به کیف پول دیگری میپردازند، اما بلافاصله آن بلاک را تأیید نمیکنند. سپس سریعاً از کیف پول مبدأ تراکنش دیگری را انجام میدهند و بعد از آن به انتشار بلاکی میپردازند که اطلاعات مربوط به هر دو تراکنش در آن ثبت شده است.
سخن پایانی
در این مقاله به مفهوم دوبار خرج کردن در ارزهای دیجیتال پرداختیم و امکان وقوع چنین حملاتی را در دنیای ارزهای دیجیتال بررسی کردیم. همانطور که میدانید مفهوم دوبار خرج کردن مختص ارزهای دیجیتال است و چنین چیزی در میان ارزهای فیات با توجه به ماهیت آنها وجود ندارد. با توجه به اینکه بسیاری از ارزهای دیجیتال حتی رمزارزهایی که از الگوریتم اجماع اثبات گواه استفاده نمیکنند نیز راهحلهایی را برای مقابله و جلوگیری از چنین حملاتی برنامهریزی و پیشبینی کردهاند و نمیتوانیم امکان احتمال آنها را نادیده بگیریم. در انتهای مقاله نیز به معرفی 3 روش ممکن و احتمالی برای طرحریزی حمله دوبار خرج کردن (Double Spending Attack) در ارزهای دیجیتال پرداختیم.
دیدگاه خود را ثبت کنید