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

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

دابل اسپند (Double Spend) یا دابل اسپندینگ (Double Spending) که به آن دو بار خرج کردن میگویند، یک حمله در بلاک چین است که اجازه دوبار خرج کردن یک ارز دیجیتال را به افراد میدهد. در این حالت، پیش از تأیید شدن تراکنش و با سوءاستفاده از تأخیر در پخش و اعتبارسنجی بلاکها، مهاجم میتواند یک مقدار ارز دیجیتال مشخص و یکسان را در چندین تراکنش ارسال کند. البته بلاک چینهایی مانند بیت کوین برای جلوگیری از وقوع حملات دابل اسپند، روشهای مختلفی را پیادهسازی کردهاند.
بد نیست بدانید که چند سال پیش، یک مهاجم توانست ۱.۶ میلیون دلار ارز اتریوم کلاسیک را از طریق دابل اسپندینگ خرج کند. این اتفاق، یکی از بزرگترین حملات در تاریخ دوبار خرج کردن است، اما تا کنون چنین اتفاقی برای شبکه بیت کوین نیفتاده است. ازآنجاکه این اتفاق برای شما نیز ممکن است رخ دهد، لازم است با انواع و روشهای جلوگیری از افتادن در دام دابل اسپند آشنا شوید.
دابل اسپند یا دابل اسپندینگ چیست؟
دابل اسپند (Double Spend) یا دابل اسپندینگ (Double Spending) که در ترجمه فارسی به آن دوبار خرج کردن میگویند، یک حمله بالقوه در سیستمهای پولی دیجیتال است. در این روش، میتوان یک مقدار مشخص پول را بیش از یک بار و در تراکنشهای مختلف خرج کرد. این نوع حمله در شبکههای بلاک چینی و ارز دیجیتال نیز دیده شده است، اما اکثر بلاک چینها مانند بیت کوین با پیادهسازی روشهای مختلف، از وقوع آن جلوگیری کردهاند.
برای درک بهتر، مقدار پول مورد نظر برای ارسال را مشابه یک فایل موسیقی درنظر بگیرید. شما بهراحتی میتوانید این فایل دیجیتال را کپی کرده و برای دیگران ارسال کنید. بنابراین، هر فرد یک کپی از فایل شما را در اختیار دارد و دیگر مشخص نیست کدام نسخه، «نسخه اصلی» است.
همین ویژگی برای ارزهای دیجیتال نیز صادق است. اگر راهی برای ردیابی توکنهای خرجشده و تأیید آنها در یک بلاک چین وجود نداشته باشد، بهراحتی میتوان یک مقدار ارز دیجیتال یکسان را بهطور همزمان برای چندین نفر ارسال کرد.
حمله دابل اسپند یا دوبار خرج کردن چگونه اتفاق میافتد؟
برای درک بهتر نحوه اجرای حمله دابل اسپندینگ در بلاک چین، مثال ساده زیر را در نظر بگیرید:
- تراکنش آغازین: سارا یک واحد بیت کوین دارد و تصمیم میگیرد آن را برای مینا ارسال کند. این تراکنش در شبکه پخش میشود، اما همچنان در حالت «پندینگ (Pending)» یا «در انتظار تأیید» است.
- اقدام به دابل اسپند: در این حین که تراکنش ارسالی به مینا در حالت پندینگ باقی مانده، سارا اقدام به دوبار خرج کردن همان ۱ واحد بیت کوین میکند. برای این کار، او یک تراکنش دیگر میسازد و همان ۱ واحد بیت کوین را برای پریسا میفرستد. این تراکنش دوم نیز در شبکه پخش میشود.
- انتشار شبکه: اکنون تراکنشهای ارسالی به مینا و پریسا درحال رقابت با یکدیگر برای قرار گرفتن در داخل بلاک چین هستند. هر کدام از این تراکنشها را هم نودهای مختلف در شبکه میبینند و ممکن است بهخاطر نیاز به اجماع همه نودهای روی تراکنشهای معتبر، تأخیری در کل شبکه وجود داشته باشد.
- تأیید بلاک: شبکه نهایتاً یکی از تراکنشها (مثلاً ارسالی به مینا) را تأیید میکند و با اضافه شدن به بلاک چین، برای همیشه در سابقه دفتر کل ثبت میشود.
- حل ناسازگاری: اگر تراکنش ارسالی به مینا زودتر تأیید شود، نودها متوجه میشوند که سارا ۱ واحد بیت کوین را قبلاً خرج کرده است، بنابراین تراکنش ارسالی به پریسا نامعتبر میشود. اما اگر تراکنش ارسالی به پریسا زودتر تأیید شود، تراکنش ارسالی به مینا رد خواهد شد.
- خروجی نهایی: بلاک چین بهگونهای طراحی شده است که فقط یک تراکنش حاوی مقدار مشخص ارز دیجیتال را تأیید و از دابل اسپند شدن آن جلوگیری کند.

بااینکه نهایتاً یکی از تراکنشهای ارسالی سارا در بلاک چین تأیید میشود، اما او از تأخیر بلاک چین و فرصت ایجادشده هنگام «در انتظار تأیید بودن» تراکنش اول استفاده و میتواند ادعا کند که تراکنش را برای پریسا نیز ارسال کرده است. حال درصورتیکه پریسا منتظر تأییدشدن تراکنش ارسالی به خود نماند، سارا میتواند محصول یا خدمت مورد نظرش را دریافت کند.
هدف از اجرای حملات دابل اسپند چیست؟
مشخصاً، سرقت ارزهای دیجیتال عمدهترین دلیل مهاجمان برای اجرای حملات دو بار خرج کردن است. اما این تنها علت نیست و ممکن است این افراد با مقاصد دیگری نیز به انجام این کار اقدام کنند. در ادامه، این اهداف را بررسی میکنیم.
سرقت
فرد سارق با انگیزه سرقت، دو تراکنش یکسان را بهصورت همزمان به دو بخش مختلف شبکه ارسال میکند؛ یکی از این تراکنشها برای فروشنده و دیگری با کارمزد بالاتر و بهامید زودتر تأییدشدن، به آدرس مورد نظر خود سارق ارسال میشود. در صورت موفقیت، فرد سارق ارزهای دیجیتال را در آدرس مورد نظر خود گرفته و فروشنده نگون بخت، با یک تراکنش نامعتبر مواجه میشود.
بازگردانی تراکنشها
هکرها و مجرمان سایبری ممکن است برای بازگردانی تراکنشها از این نوع حمله استفاده کنند. با دو بار خرج شدن یک ارز دیجیتال در تراکنشهای مجزا، احتمال از دست رفتن داراییهای یک کاربر عادی وجود دارد.
کاهش اعتبار فناوری بلاک چین
هدف برخی از افراد از دابل اسپند کردن ارزهای دیجیتال، از بین بردن اعتبار بلاک چینهاست. این افراد برای نشان دادن قدرتشان در دستکاری تراکنشهای مالی، اقدام به انجام چنین حملهای میکنند. این کار برای برخی از افراد، جنبه خودنمایی دارد.
رشوه و انگیزههای شخصی
برخی از افراد ممکن است انگیزه شخصی برای استخراج و تأیید تراکنشهای نامعتبر در بلاک چین داشته باشند. در این حالت، ممکن است فردی دیگر به یک ماینر مخرب رشوه داده و او را به قرار دادن یک تراکنش نامعتبر در بلاک بلاک چین ترغیب کند. در ادامه، نودهای شبکه با مشاهده دو تراکنش یکسان، یکی از آنها را تأیید و دیگری را رد میکنند.
انواع حمله دابل اسپندینگ چیست؟
۳ حمله شامل فینی، رقابتی و ۵۱ درصد از عمدهترین روشهای دابل اسپند کردن ارزهای دیجیتال هستند. اما این حمله انواع دیگری نیز دارد از جمله:
- حمله رقابتی (Rave Attack)
- حمله فینی (Finney Attack)
- حمله ۵۱٪ (۵۱% Attack)
- استخراج خودخواهانه (Selfish Mining)
- حمله سیبیل (Sybil Attack)
بیشتر بخوانید: همه راههای هک و حمله به بلاک چین
حمله رقابتی
یکی از رایجترین روشهای اجرای دابل اسپندینگ، ریس اتک (Race Attack) یا حمله رقابتی است که برای مختل کردن روند عادی بلاکچین بهکار میرود. در این روش، فرد مهاجم بهسرعت دو تراکنش را ایجاد و با استفاده از یکی از تراکنشهای تأییدنشده (که البته احتمال تأیید شدن آن نیز پایین است)، محصول یا خدمتی را خریداری میکند. حالا اگر فروشنده به هر دلیلی این تراکنش تأییدنشده را بپذیرد، مهاجم موفق به دو بار خرج کردن یک واحد پولی یکسان میشود.
در حمله رقابتی، عدم قطعیت و تأخیر در اعتبارسنجی تراکنشها و رسیدن به اجماع توسط نودها، از مهمترین عوامل تأثیرگذار بر دو بار خرج کردن هستند.
حمله فینی
هال فینی (Hal Finney) بهعنوان یکی از اولین دریافتکنندگان بیت کوین در سال ۲۰۰۹ و کسی که در رفع نقایص پروتکل این ارز دیجیتال نقش زیادی داشت، ایدهای را درخصوص حمله به بلاک چینها مطرح کرد که به اسم او نامگذاری شد. مشابه حمله رقابتی، فینی اتک (Finney Attack) نیز تنها در صورتی ممکن است که فروشنده، تراکنش تأییدنشده را بپذیرد.
در این روش، مهاجم که خود یک ماینر است، دو کیف پول آ و ب شخصی دارد. این فرد ابتدا تراکنشی که از کیف پول آ به ب خود انجام داده است را در یک بلاک قرار داده و پس از استخراج، آن را در شبکه پخش میکند. در همین حین، این فرد هزینه خرید یک محصول از یک فروشنده را با همان ارزهای دیجیتال قبلی انجام داده و به آدرس کیف پول فروشنده میفرستد. پس از چند دقیقه انتظار، فروشنده فرض میکند تراکنش او در ممپول قرار دارد. بنابراین خرید ماینر را تأیید و محصول را برای او ارسال میکند.
اکنون چون تراکنش از والت آ به ب زودتر انجام شده است و احتمالاً کارمزد بیشتری هم دارد، بر تراکنش ثانویه غلبه کرده و فروشنده هیچگاه هزینه محصول را در کیف پول خود دریافت نمیکند.
بیشتر بخوانید: هال فینی کیست؟
حمله ۵۱ درصد
در ۵۱٪ اتک یا حمله ۵۱ درصد، مهاجم کنترل بیش از ۵۰ درصد از توان پردازشی (هش ریت) شبکه را بهدست میگیرد. این کنترل اکثریتی به مهاجم اجازه میدهد تا بلاکچین را دوباره سازماندهی، تراکنشها را باطل و ارزهای دیجیتال را دو بار خرج کند. بنابراین، با دستکاری تاریخچه تراکنشهای بلاک چین، فرصت دابل اسپندینگ ارزهای دیجیتال برای مهاجم یا مهاجمان فراهم میشود.
اجرای این حمله در شبکههای دارای هش ریت پایین سادهتر است، اما در شبکههای بزرگی مانند بیت کوین، هزینه هر ساعت اجرای آن بهخاطر نیاز به خرید به صدها هزار تجهیزات تخصصی ایسیک ماینر (ASIC Miner) جهت تسلط بر بیش از ۵۱ درصد از قدرت هش شبکه، به میلیونها دلار میرسد که عملاً اجرای آن را غیرممکن میکند.
بیشتر بخوانید: حمله ۵۱ درصد چیست؟
استخراج خودخواهانه
همانطور که میدانید، طولانیترین زنجیره در یک شبکه، زنجیره معتبر محسوب میشود و بلاکهای ساختهشده در زنجیرههای دیگر همگی رد و تراکنشهای داخل آنها بازگردانی میشوند.
هدف سلفیش ماینینگ (Selfish Mining)، دستکاری بلاک چین از طریق استخراج خصوصی و سپس انتشار زنجیره طولانیتر حاوی بلاکهای بیشتر برای بیاعتبار کردن تراکنشهای قبلی در بلاکهای عمومی است. برای این کار، یک ماینر یا گروهی از ماینرهای قدرتمند، بلاکهای تازه استخراجشده را از شبکه پنهان کرده و پیش خودشان نگه میدارند. این کار به آنها اجازه میدهد یک زنجیره خصوصی در شبکه داشته باشند.
حالا پس از مدتی که این ماینرها تصمیم به انتشار بلاکهایشان در زنجیره جدید بگیرند، درصورتی که تعداد بلاکهای آن نیز بیشتر از زنجیره اصلی باشد، نودها زنجیره اصلی و عمومی را از همان مطقعی که تراکنشهای زنجیره خصوصی به آن اضافه شده است، کنار گذاشته و تراکنشهای زنجیره جدید را تأیید میکنند. این کار فرصت دوبار خرج کردن تراکنشها را برای ماینرهای مخرب فراهم میکند.

حمله سیبیل
در سیبیل اتک (Sybil Attack)، مهاجم چندین نود جعلی در شبکه ایجاد میکند تا نفوذ و کنترل بیشتری بر فرایند اجماع بلاکچین بهدست آورد. با داشتن تعداد کافی از نودهای جعلی، مهاجم میتواند با دستکاری تأیید تراکنشها، اقدام به دو بار خرج کردن ارزهای دیجیتال کند. هدف این حمله، غلبه بر شبکه و مختل کردن فرایند اعتبارسنجی عادی تراکنشهاست تا امکان دابل اسپند کردن رمز ارزها افزایش یابد.
تکنیکهای جلوگیری از حمله دو بار خرج کردن در بلاک چینها
به گفته ساتوشی ناکاموتو، خالق ناشناس بیت کوین، اقداماتی مانند مهر زمانی و همچنین زنجیر کردن تراکنشها به یکدیگر با استفاده از تکنیکهای رمزنگاری، از مهمترین روشهای جلوگیری از وقوع دابل اسپندینگ هستند. بااینحال، برای جلوگیری از دوبار خرج کرن، تکنیکهای دیگری نیز در بلاک چینها پیادهسازی شدهاند که در ادامه آنها بررسی میکنیم.
مکانیزم اجماع قوی (Consensus Mechanism)
در بلاکچینهایی که از مکانیزم اجماع قوی برخوردارند، دابل اسپندینگ امکانپذیر نیست. مکانیزمهای اثبات کار (PoW) و اثبات سهام (PoS) از رایجترین الگوهای رسیدن به اجماع در بلاک چینها هستند.
در اثبات کار، ماینرها با حل مسائل ریاضی پیچیده، بلاکهای حاوی تراکنشها را پیدا کرده و درصورت تأیید توسط تمام نودها، بلاک به شبکه اضافه میشود. در اثبات سهام، افراد با قفل کردن یا اصطلاحاً استیک کردن مقدار مشخصی از ارز دیجیتال بومی بلاک چین، بهعنوان اعتبارسنج عمل کرده و تراکنشها را اعتبارسنجی میکنند. طراحی ایمن این سیستمها بهطور پیشفرض از بروز تقلب جلوگیری میکند.
بیشتر بخوانید: الگوریتم اجماع چیست و چه کاربردی در بلاک چین دارد؟
تصدیق تراکنشها (Verifying Transactions)
یکی از مؤثرترین روشهای جلوگیری از دابل اسپند شدن ارزهای دیجیتال، تصدیق تراکنشهاست. همانطور که احتمالاً میدانید، دو نوع نود شامل فول نود (Full Node) و لایت نود (Light Node) در بلاک چینها وجود دارد:
- فول نود: کل سابقه بلاک چین را داشته و در اعتبارسنجی تراکنشها شرکت میکند.
- لایت نود: بخش خاصی از بلاک چین را ذخیره و برای ماینینگ استفاده میکند. لایت نود تراکنشها را اعتبارسنجی نمیکند.
حالا ماینرها میتوانند هم فول نود و هم لایت نود باشند. اگر ماینری صرفاً یک لایت نود باشد، بهخاطر اعتبارسنجی نکردن تراکنشها بهصورت شخصی برای تشخیص معتبر بودن آنها، در معرض خطر قرار دادن تراکنش نامعتبر در بلاک استخراجی خودش قرار میگیرد. در این صورت، نودها با مشاهده تراکنش نامعتبر، بلاک او را رد کرده و ماینر نیز پاداش بلاک را از دست میدهد و تراکنشهای داخل آن برگشت میخورند.
در مقابل، اگر ماینر بهصورت فول نود باشد و خودش پیش از انتخاب تراکنشها برای قرار دادن در بلاک و استخراج آن، تراکنشهای را اعتبارسنجی کند، دیگر امکان دابل اسپند شدن و برگشت خوردن تراکنشهای داخل بلاک وجود ندارد.
بیشتر بخوانید: نود چیست؟
زنجیره بلاکها (Chain of Blocks)
تراکنشها در قالب بلاکها دستهبندی شده و بهصورت زنجیرهوار و بهترتیب به یکدیگر متصل میشوند. پس از اضافه شدن یک تراکنش به بلاک چین، آن تراکنش در یک بلاک ذخیره میشود که به بلاکهای قبلی از طریق رمزنگاری متصل است. این ویژگی، تغییر یا دستکاری دادهها را دشوار میسازد و خطر دو بار خرج کردن را کاهش میدهد.
تأییدیه تراکنش (Block Confirmation)
تأییدیه تراکنشها معیار مهم دیگر برای حصول اطمینان از اعتبار آنهاست. همانطور که احتمالاً حین کار با صرافیها دیدهاید، حتی اگر تراکنش شما در بلاک چینی در عرض چند ثانیه هم بهحالت «Successful» و «موفق» درآید، صرافی مدتی را منتظر میماند و سپس انجام آن را تأیید میکند.
در بلاک چین مفهومی بهنام بلاک کانفرمیشن یا تأییدیه بلاک روجود دارد. بر این اساس، هر تراکنش باید چندین تأییدیه دریافت کند تا قرار گرفتن آن در بلاک تضمین شود. این معیار را در اکسپلوررهای بلاک چین نیز مشاهده کردهاید. حال هرچه تعداد تأییدیههای یک تراکنش بیشتر باشد، امنیت آن در برابر دابل اسپند شدن نیز افزایش مییابد.

تعداد تأییدیههای مورد نیاز برای هر بلاک چین متفاوت است. برای مثال، این تعداد برای بیت کوین ۶ تأییدیه و برای اتریوم، ۳۰ تأییدیه است. باتوجه به بلاک تایم (متوسط زمان استخراج بلاک) ۱۰ دقیقهای بیت کوین، پس از ساخت ۶ بلاک جدید و گذشت تقریباً ۶۰ دقیقه، تراکنش شما تأییدیه نهایی را میگیرد.
نهایی شدن بلاک (Block Finality)
برخی از سیستمهای بلاکچینی دارای مکانیزمهایی هستند که گنجاندهشدن یک تراکنش در یک بلاک آن هم فقط یکبار را تضمین میکنند. این ویژگی باعث میشود تراکنشها نهایی شده و برگشتناپذیر باشند که میتواند به جلوگیری از مشکل دابل اسپندینگ کمک کند. به این ویژگی، بلاک فاینالیتی یا نهایی شدن بلاک میگویند.
استفاده از نانس (Nonce) برای جلوگیری از حملات بازپخش
نانس یک مقدار رمزنگاری پیچیده است که باید پیش از استخراج یک بلاک، هش شود. مقدار نانس فقط یکبار قابل استفاده است و بههمینخاطر، به جلوگیری از حملات بازپخش (Replay Attacks) کمک میکند و باعث حفظ یکپارچگی بلاکها میشود.
ثبت مهر زمانی (Timstamp)
هر تراکنش موفق در بلاکچین دارای تایم استمپ یا مهر زمانی است که نشان میدهد بلاک مربوطه در چه زمانی به زنجیره اضافه شده است. هنگامی که یک بلاک مهر زمانی میگیرد، تغییر آن غیرممکن میشود. در نتیجه، هرگونه تراکنش متناقض که قصد دو بار خرج کردن داشته باشد، بهخاطر این سازوکار رد خواهد شد.
افزایش هزینه اجرای نودها
مهمترین عامل موفقیت اجرای حملات دابل اسپند، کنترل و تسلط مهاجم بر یک یا چند نود شبکه است. برای مثال، در حمله ۵۱ درصد، هکر باید بیش از نیمی از نودهای شبکه را تحت سلطه خود درآورد. یکی از راههای کاهش خطر این حمله، افزایش هزینههای اجرای نود است. مثال شبکه بیت کوین را در بخش قبلی بررسی کردیم.
نظارت متمرکز
در سیستمهای بانکی سنتی که نهادهای واسط بر تراکنشها نظارت دارند، دوبار خرج کردن بهندرت اتفاق میافتد. بلاکچینها نیز میتوانند چنین سیستمهایی را برای امنیت بیشتر بهکار گیرند. بااینحال، تناقض این روش با مفهوم غیرمتمرکز بودن بلاک چین، باعث خودداری بسیاری از پروژهها از پیادهسازی چنین تکنیکی شده است.
بررسی UTXOها
خروجی خرجنشده تراکنش (Unspent Transaction Output) یا UTXO، حاوی اطلاعات مربوط به تاریخچه و وضعیت فعلی تراکنشهاست. هر تراکنش در بلاک چین یک خروجی دارد که میتواند ورودی یک تراکنش جدید باشد. حالا ورودی جدید تنها زمانی بهعنوان UTXO شناخته خواهد شد که کاربر آن را خرج کرده باشد. بنابراین، با بررسی اینکه یک UTXO قبلاً خرج شده است یا خیر، میتوان از دابل اسپندینگ جلوگیری کرد.
بیشتر بخوانید: UTXO چیست؟
ممیزی پروتکل بلاک چینی و قراردادهای هوشمند
مشکل دو بار خرج کردن گاهی بهدلیل نقصهای امنیتی در پروتکل بلاکچینی یا قراردادهای هوشمند رخ میدهد. بهترین راه برای کشف و رفع این آسیبپذیریها، انجام یک ممیزی امنیتی حرفهای است.
روشهای جلوگیری از حمله دابل اسپند برای کاربران
بهعنوان یک کاربر عادی، اگر تراکنشی را از غریبهای دریافت کردهاید، بهتر است پیش از اقدام به ادامه کار مانند ارسال محصول برای او یا واریز مبلغ فیاتی، ابتدا تأییدیههای آن را بررسی کنید. از دیگر روشهای جلوگیری از افتادن در دام هکرها با تراکنشهای دوبار خرج، میتوان موارد زیر را نام برد:
نظارت بر شبکه
استفاده از ابزارهای نظارت لحظهای میتواند فعالیتهای مشکوک مانند تراکنشهای متناقض را شناسایی کرده و از حملات احتمالی دو بار خرج کردن جلوگیری کند.
تشخیص تناقض
نودها قادر به شناسایی و رد تراکنشهای متناقض هستند. اگر فردی درصدد خرج کردن وجوهی باشد که قبلاً در تراکنش دیگر استفاده شده است، آن تراکنش علامتگذاری و نامعتبر خواهد شد. درصورت داشتن دانش فنی کافی، میتوانید یک نود را برای بلاک چین مورد نظر اجرا کرده و خودتان شخصاً اعتبار تراکنشها را بررسی نمایید.
بررسی تأییدیهها
بهعنوان یک فروشنده برای کاهش خطر پذیرش وجوه دوبار خرج شده، باید قبل از نهایی در نظر گرفتن تراکنشها بهویژه تراکنشهای بزرگ، منتظر چندین تأییدیه باشید. اگر تراکنشی دارای تأییده صفر بود، از پذیرفتن آن پرهیز کنید.
برای این کار از اکسپلورر بلاک چین مورد نظر استفاده کنید. اتر اسکن (EtherScan)، بیاسسی اسکن (BSCScan) و ترون اسکن (TronScan) بهترتیب اکسپلورر بلاکچینهای اتریوم، بایننس اسمارت چین و ترون هستند.
استفاده از سگویت
فناوریهایی مانند سگویت (SegWit) با تغییر نحوه ذخیره و اعتبارسنجی دادههای تراکنش، خطر دابل اسپند شدن ارزهای دیجیتال را کاهش داده و کارآیی و امنیت شبکه را بهبود میبخشند.
استفاده از راهکارهای لایه ۲
راهکارهایی مانند شبکه لایتنینگ بیت کوین امکان انجام تراکنش خارج از زنجیره اصلی را فراهم میکنند که سریعتر و کارآمدتر هستند و درعینحال، باعث افزایش امنیت تراکنشهای درونزنجیرهای میشوند.
آموزش کاربران و توسعهدهندگان
ارائه آموزشها و منابع به کاربران و توسعهدهندگان درباره بهترین شیوههای جلوگیری از حملات دوبار خرج کردن، به تقویت امنیت کلی سیستمهای ارز دیجیتال کمک میکند.
آیا امکان حمله دابل اسپند در بیت کوین وجود دارد؟
پاسخ کوتاه خیر است. ساتوشی ناکاموتو تمام تکنیکهایی که در این مطلب برای جلوگیری از حمله دابل اسپندینگ ذکر کردیم را بهکار گرفته است. در این قسمت بهصورت جزئیتر احتمال این کار را بررسی میکنیم.
هزینه دو بار خرج کردن در بیت کوین
همانطور که در بخش قبل گفتیم، مهمترین تکنیک برای اجرای دوبار خرج کردن، تسلط بر تعداد کافی نود در شبکه است. این هدف نیز با اجرای حمله ۵۱ درصدی قابل دستیابی است. به استناد وبسایت BitIfoCharts، درحالحاضر در زمان نگارش این مطلب در اسفند ۱۴۰۳، هش ریت شبکه بیت کوین حدود ۸۹۰ اگزاهش بر ثانیه (Ehash/s) است. ۵۱ درصد این مقدار نیز با ۴۵۴ اگزاهش بر ثانیه (۴۵۴,۰۰۰,۰۰۰ تراهش بر ثانیه) برابر خواهد بود.
حال اگر قدرت هش خالص تولیدی یک ایسیک ماینر بهروز و قدرتمند ساخت شرکت بیتمین (Bitmain)، برای مثال دستگاه S۲۱ XP Hyd، را برابر ۴۷۳ تراهش بر ثانیه (Thash/s) در نظر بگیریم، به حدود ۱ میلیون واحد از این دستگاه برای رسیدن به قدرت هش ۴۵۴ میلیون تراهش/ثانیه که معادل ۵۱ درصد از قدرت هش فعلی بیت کوین است، نیاز داریم. قیمت هر واحد از این دستگاه نیز حدود ۱۴,۵۰۰ دلار است.
با توجه به اعداد و ارقام بهدست آمده، چنین حملهای به شبکه بیت کوین میلیونها دلار هزینه داشته و صرفه اقتصادی ندارد.
تبانی ماینرها و شفافیت بلاک چین
اگر فرض را بر این بگیریم که چندین ماینر، مثلاً در یک استخر استخراج، برای گرفتن قدرت هش تبانی کرده و حمله ۵۱ درصدی را برای دابل اسپند کردن تراکنشها انجام دهند، باز هم این کار صرفه اقتصادی ندارد و صرفاً باعث نابودی بیت کوین میشود.
به محض حمله ۵۱ درصدی به بیت کوین، بهخاطر عمومی بودن بلاک چین این ارز دیجیتال، همه افراد از این اتفاق باخبر شده و برای فروش ارزهای دیجیتالشان هجوم میآورند. در این صورت، به احتمال زیاد دیگر کاربری در شبکه وجود نخواهد داشت که ماینرها بخواهند تراکنش او را بازگردانی کرده یا خودشان اقدام به دابل اسپند کنند. بنابراین، احتمال رخداد این فرضیه نیز تقریباً صفر است.
سؤالات متداول
دوبار خرج کردن زمانی اتفاق میافتد که یک ارز دیجیتال بیش از یکبار خرج شود. در این روش، هکرها و مجرمان سایبری یک مقدار مشخص و یکسان ارز دیجیتال را در دو تراکنش مجزا ارسال کرده و از تأخیر بلاک چین در اعتبارسنجی تراکنشها، سوءاستفاده میکنند.
بلاک چینها با استفاده از سازوکارهایی مانند اثبات کار (PoW) و اثبات سهام (PoS)، تأیید چندگانه تراکنشها و ایجاد زنجیرهای از بلوکها، از ثبت تراکنشهای متناقض جلوگیری میکنند.
در شرایط عادی، خیر. اما اگر مهاجمی کنترل بیش از ۵۱ درصد قدرت هش شبکه را در اختیار بگیرد یا از حملاتی مانند فینی (Finney Attack) و رقابتی (Race Attack) استفاده کند، امکان وقوع آن وجود دارد.
در شبکههای بزرگی مانند بیت کوین که هش ریت بالایی دارند، برای تسلط بر بیش از ۵۱ درصد از قدرت هش شبکه، به خرید صدها هزار دستگاه ایسیک ماینر تخصصی نیاز است که امروزه هزینه این کار به میلیونها دلار میرسد.
جمعبندی
دوبار خرج کردن یا دابل اسپندینگ (Double Spending) یکی از مشکلات بالقوه در سیستمهای دیجیتال است که در آن یک دارایی دیجیتال بیش از یکبار خرج میشود. در بلاک چین، این مشکل با استفاده از مکانیزمهای اجماع مانند اثبات کار (PoW) و اثبات سهام (PoS)، تأییدیههای چندگانه تراکنشها و ساختار زنجیرهای بلوکها قابل برطرف شدن است. روشهایی مانند نظارت بر شبکه، سگویت، راهکارهای لایه ۲ و بررسی UTXOها نیز میتوانند به کاهش این ریسک برای کاربران عادی کمک کنند. رعایت این تدابیر امنیتی از پذیرش تراکنشهای نامعتبر و حملات مرتبط با دابل اسپند کردن جلوگیری میکند.