در طول سالیان گذشته، پروژه‌های زیادی با هدف ورود به دنیای ارز دیجیتال فعالیت خود آغاز کردند؛ اما باید بدانید که اکثر این پروژه‌ها با شکست مواجه شدند. دلیل اصلی شکست‌ پروژه‌های این زمینه، ناتوانی در جلوگیری از دوبار خرج کردن بود. اینکه مفهوم دوبار خرج کردن چه بوده و به چه شکلی رخ می‌دهد، مسئله‌ای است که در ادامه به آن می‌پردازیم. آشنایی با این موضوع برای کاربران ارز دیجیتال امری ضروری است.  

دوبار خرج کردن یا Double Spending چیست؟

مفهوم دوبار خرج کردن یا Double Spending همانطور که از نام آن مشخص است، به معنای خرج کردن ارزی برای بار دوم و یا حتی بیش از آن دفعات می‌باشد که عملی مخرب به شمار می‌رود. این فرایند مانند استفاده از پول‌های تقلبی در بین ارزهای فیات است.

دوبار خرج کردن

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

دابل اسپندینگ چیست

دابل اسپندینگ در بیت‌کوین به چه صورتی است؟

بیت‌کوین به عنوان پرچم‌دار ارزهای دیجیتال در برابر دابل اسپندینگ مقاوم بوده و امکان دوبار خرج کردن در آن وجود ندارد. مقابله بیت‌کوین با دابل اسپندینگ به گونه‌ای است که وقتی کاربران تراکنش را ایجاد و تا زمان تأیید آن در یک بلاک منتظر می‌مانند؛ در این بین راهی برای معکوس کردن عملیات وجود ندارد. به بیانی دیگر بعد از ثبت کامل تراکنش در بلاکچین، دیگر امکان لغو آن وجود نخواهد داشت.

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

Double Spending

آشنایی با انواع حمله‌های دوبار خرج کردن

روش‌های مختلفی برای حملات دابل اسپندینگ وجود دارد که در ادامه به هر یک از آنها می‌پردازیم.

حمله ۵۱ درصدی (%۵۱ Attack)

حمله ۵۱ درصدی به حمله‌ای اطلاق می‌گردد که یک فرد و یا یک گروه بتوانند بیش از ۵۰ درصد از هش‌ریت شبکه را در اختیار گیرند. این روش به صورتی است که مهاجم با ایجاد تراکنش‌های غیر واقعی از طریق بلاک‌ها و با در دست گرفتن اکثر قدرت شبکه آنها را تأیید می‌کند. با وجود اینکه رخ‌دادن این حملات در بیت‌کوین غیرممکن است؛ اما با این حال، در برخی از شبکه‌های غیرمتمرکز بلاکچین شاهد این نوع از حملات بوده‌ایم. در چنین شرایطی مهاجم می‌تواند مبلغی را دو بار خرج کرده و با دوبار خرج کردن آن عمل مخرب را مرتکب شود.

حمله‌ رقابتی (Race Attack)

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

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

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

کلاهبرداری در ارز دیجیتال

چرا باید نگران حملات Double Spending باشیم؟

تا زمانی که تراکنش‌های تأیید نشده را نپذیرید، نگرانی بابت حملات دوبار خرج کردن وجود نخواهد داشت. اکثر صرافی‌ها و کیف پول‌های ارز دیجیتال، در زمان خرید ارز، تراکنش‌هایی را که تأیید نشده‌اند را در حالت «تأیید نشده» معلوم و مشخص می‌کنند. هر چه که زمان تأیید تراکنش طولانی‌تر شود، امنیت تراکنش بیش‌تر خواهد بود.

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

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

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

برای مقابله با حملات دوبار خرج کردن، روش‌هایی مدنظر است که در ادامه با آنها آشنا می‌شوید.

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

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

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

در رویکرد مقابله غیرمتمرکز حملات دوبار خرج کردن یا همان دابل اسپندینگ تمامی تراکنش‌ها بر اساس قوانین از قبل تعیین شده توسط شبکه انجام می‌شود و هیچ شخص یا سازمان مرکزی حق نظارت بر تأیید تراکنش‌ها ندارد.

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

جلوگیری از معاملات همزمان توسط اجماع ایمن

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

دوبار خرج کردن چیست

اهمیت ایمنی ارزهای دیجیتال به گونه‌ای است که باید از انواع خطرات موجود بر علیه آن آگاه باشید که در اینجا یکی از اصلی‌ترین خطرات موجود را به شما معرفی کردیم. هر چه که بیش‌تر با خطرات دنیای ارز دیجیتال آشنا شده و روش‌های مقابله با آن را بشناسید؛ درصد امنیت فعالیت شما در شبکه‌های بلاکچین بیش‌تر خواهد بود.