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