مفهوم دابل اسپندینگ در ارز دیجیتال Double Spending چیست؟
متوسط

- دابل اسپندینگ یا خرج کردن مضاعف در ارز دیجیتال چیست؟
- چرا Double Spending در ارز دیجیتال رخ می دهد؟
- دلایل بروز دابل اسپندینگ در بلاکچین
- چرا خرج کردن مضاعف تهدیدی برای ارزهای دیجیتال است؟
- مکانیزمهای جلوگیری از Double Spending در بلاکچین
- اهمیت تایید تراکنشها در جلوگیری از دابل اسپندینگ
- چگونه کاربران میتوانند از خرج کردن مضاعف جلوگیری کنند؟
چکیده
ریسک و ارز دیجیتال دو کلیدواژه کاملا در ارتباط با هم هستند. در این بازار پر از ریسک امنیت تراکنشها یکی از دغدغههای اصلی کاربران و توسعهدهندگان است و Double Spending یا دوبار خرج کردن ارز دیجیتال میتواند یک دغدغه بسیار مهم در تایید تراکنشها باشد. یکی از مفاهیم حیاتی که مستقیماً با اعتماد به شبکههای بلاکچین در ارتباط است، دابل اسپندینگ یا همان خرج کردن مضاعف در ارز دیجیتال است؛ پدیدهای که اگر به درستی با آن مقابله نشود، میتواند کل سیستم مالی غیرمتمرکز را با چالش جدی روبرو کرده و اعتماد به این بازار را از بین ببرد. اگر میخواهید با یکی از مهمترین تهدیدهای امنیتی در دنیای رمز ارزها آشنا شوید، ادامه این مطلب را از دست ندهید.
دابل اسپندینگ یا خرج کردن مضاعف در ارز دیجیتال چیست؟
دابل اسپندینگ (Double Spending) به شرایطی اطلاق می شود که یک فرد سعی میکند یک واحد ارز دیجیتال را بیشتر از یک بار خرج کند. در واقع اگر کسی ۱ واحد بیت کوین داشته باشد و بخواهد آن را به کیف پول ارز دیجیتال دو نفر مختلف بفرستد بهطوری که هر دو نفر فکر کنند یک واحد بیت کوین را دریافت کردهاند، یعنی دو بار آن را خرج کرده، در حالی که فقط یکی از آنها واقعاً مالک آن بیت کوین خواهد بود.
در بازار سنتی این کار تقریبا غیرممکن است و شما نمیتوانید یک اسکناس ۱۰۰ هزار تومانی را همزمان به دو نفر بدهید. البته در ایران بسیار شایع است که کلاهبرداران، یک واحد مسکونی را حتی به چند نفر هم فروختهاند؛ شرایطی که واقعا در سایر کشورها قفل است و عملا کلاهبرداران ایرانی در یک لیگ بالاتری فعالیت دارند؛ اما در دنیای دیجیتال، چون دادهها قابل کپی شدن هستند، اگر سیستم کنترل دقیقی روی تراکنشها نداشته باشد، ممکن است فردی تلاش کند یک تراکنش را دو بار ثبت کند.
برای جلوگیری از این مشکل، بلاکچینها از فناوریهایی مثل مکانیزم اجماع، تایید تراکنشها و زمانبندی بلوکها استفاده میکنند. مثلاً در بلاکچین بیت کوین، تا زمانی که تراکنشها تایید ماینرها را نگیرند، نهایی محسوب نمیشوند و احتمال دابل اسپندینگ تا قبل از این تایید وجود دارد. اتفاقی که البته راهحلهایی هم برای آن در شبکه بلاک چین وجود دارد. پس به زبان ساده، دابل اسپندینگ یعنی سوءاستفاده از ضعف سیستم برای خرج کردن دوباره یک ارز دیجیتال که امنیت شبکههای بلاکچینی باید جلوی آن را بگیرد.
چرا Double Spending در ارز دیجیتال رخ می دهد؟
Double Spending یا خرج کردن مضاعف زمانی رخ میدهد که یک کاربر بخواهد از نبود هماهنگی فوری بین نودهای شبکه بلاکچین سوءاستفاده کرده و یک ارز دیجیتال را در دو یا چند تراکنش جداگانه خرج کند. این اتفاق معمولاً به یکی از دلایل زیر رخ میدهد:
- تاخیر در تایید تراکنشها: در برخی از شبکههای بلاکچین، زمان تایید هر بلوک چند دقیقه طول میکشد. اگر فردی بخواهد قبل از تایید نهایی، همان کوین را دوباره ارسال کند، ممکن است شبکه برای مدت کوتاهی نتواند تشخیص دهد کدام تراکنش معتبر است و عملا تا نهایی شدن تراکنش معتبر، ارز دیجیتال مورد نظر دو بار خرج شده است.
- عدم استفاده از تاییدهای کافی توسط گیرنده: اگر فروشنده یک کالا یا دریافتکننده ارز دیجیتال بدون منتظر ماندن برای تاییدهای بلاکچین، معامله خود را در فضای سنتی نهایی کند، احتمال حمله دابل اسپندینگ افزایش پیدا میکند.
- استفاده از حملات فنی مانند حمله ۵۱ درصد: در این روش، یک فرد یا گروه با در اختیار داشتن بیش از ۵۰٪ توان محاسباتی شبکه، میتواند زنجیره اصلی را بازنویسی کرده و تراکنش قبلی خود را حذف و همان ارز را دوباره خرج کند. اتفاقی که البته در بلاکچینهای با تعداد نود بالا دور از انتظار است، اما در شبکههای کم کاربر بعید نیست.
- طراحی ضعیف شبکه یا الگوریتم اجماع: برخی پروژههای ضعیف یا تازه تأسیس که امنیت و غیرمتمرکز بودن کافی ندارند، بیشتر در معرض خطر Double Spending قرار میگیرند.
در واقع، Double Spending ناشی از سوءاستفاده از ضعف در تأیید تراکنشها، سرعت پایین شبکه یا تسلط بیش از حد یک فرد بر فرایند اجماع است. به همین دلیل، طراحی امن و غیرمتمرکز بلاکچینها برای جلوگیری از آن اهمیت بالایی دارد. حالا احتمالا بهتر درک میکنید که بلاکچین تا چه حد میتواند روی امنیت معاملات در بازار ارز دیجیتال تاثیر داشته و چرا باید در انتخاب پروژههای مناسب برای سرمایهگذاری به این موضوع دقت کنیم.
دلایل بروز دابل اسپندینگ در بلاکچین
حالا با مفهوم Double Spending یا خرج مضاعف در ارز دیجیتال بیشتر آشنا شدید و حتی دلایل ایجاد این چالش را هم مرور کردیم. علت بروز مشکل دو بار خرج کردن در شبکه بلاکچین در اکثر مواقع به ضعف در شبکه و در برخی مواقع نیز به دلیل عدم دقت کاربران مربوط میشود. در مواقعی که بلاکچین از نظر کدنویسی یا الگوریتم اجماع با ضعف روبرو باشد، میتوانیم شاهد مشکلاتی مانند تاخیر در تایید تراکنشها در آن باشیم که در نهایت منجر به Double Spending خواهد شد. حمله ۵۱ درصدی دیگر چالش بلاکچین است که میتواند این مشکل را ایجاد کند، که البته اشاره کردیم که معمولا برای بلاکچینهای تازه تاسیس و کم کاربر وجود خواهد داشت.
تاثیر در رسیدن اطلاعات تراکنش به نودها نیز ایراد دیگری از بلاکچین است که میتواند دلیلی برای بروز این چالش باشد. در این شرایط ممکن است برخی از نودها تراکنش اول را در دست داشته باشند و برخی تراکنش دوم که عملا در نهایت منجر به خرج مضاعف ارز دیجیتال خواهد شد. البته همیشه هم Double Spending به بلاکچین مربوط نیست و ممکن است چالشهای مربوط به ضعف در بستر کیف پولها یا صرافی ارز دیجیتال نیز دلیلی برای بروز آن باشد. همچنین عدم دقت خود کاربران را نیز میتوانیم در این باره دخیل بدانیم.
چرا خرج کردن مضاعف تهدیدی برای ارزهای دیجیتال است؟
تهدید با یک اتفاق معمول و بی خطر؟ خرج کردن مضاعف (دابل اسپندینگ) یکی از بزرگترین تهدیدها برای اعتماد و بقای ارزهای دیجیتال است، چون مستقیماً اعتبار تراکنشها و امنیت شبکه بلاکچین را زیر سؤال میبرد. تکرار چنین شرایطی در درازمدت میتواند اعتماد اکثریت معاملهگران یک توکن را به صوت کامل از بین ببرد. نکات زیر دلایل وجود یک خطر بزرگ در خرج کردن مضاعف را نشان میدهند.
- از بین رفتن اعتماد کاربران: اگر کاربران احساس کنند ممکن است توکنهایی که دریافت کردهاند قبلاً خرج شده باشد، دیگر به شبکه اعتماد نمیکنند و استفاده از آن کاهش مییابد.
- تاثیر منفی در پذیرش عمومی و قانونی: دولتها، کسبوکارها و سرمایهگذاران تنها زمانی ارز دیجیتال را میپذیرند که مطمئن باشند هر تراکنش نهایی و غیرقابل برگشت است. دابل اسپندینگ این اصل را زیر پا میگذارد.
- کاهش ارزش رمزارز: اگر امکان خرج دوباره وجود داشته باشد، عملاً عرضه واقعی آن ارز بیشتر از میزان اعلامشده شده که منجر به بیارزش شدن آن خواهد شد.
- امکان سوءاستفاده و کلاهبرداری: مهاجمان میتوانند با خرج مضاعف، کالا یا خدماتی بگیرند و سپس تراکنش را برگردانند. این باعث ضرر فروشندگان و بیثباتی در شبکه میشود.
- اختلال در عملکرد صرافیها و کیف پولها: زیرساختهایی مثل صرافیها اگر نتوانند تراکنشهای معتبر را از نامعتبر تشخیص دهند، دچار ضرر مالی و بیاعتمادی کاربران میشوند.
در نتیجه، دابل اسپندینگ نه فقط یک مشکل فنی بلکه تهدیدی برای کل اکوسیستم رمزارزها است که اگر به درستی کنترل نشود، میتواند پروژههای بلاکچینی را با شکست مواجه کند.
مکانیزمهای جلوگیری از Double Spending در بلاکچین
اما برسیم به ارزیبی ترفندها و روشهایی که با استفاده از آنها میتوان از دابل اسپندینگ جلوگیری کرد. این ترفندها حتی میتوانند در انتخاب توکنهای مناسب در سرمایه گذاری در ارز دیجیتال نیز به کار آیند. برای اینکه از خرج کردن مضاعف در ارزهای دیجیتال جلوگیری شود، بلاکچینها از چندین مکانیزم امنیتی و فنی استفاده میکنند. این مکانیزمها کمک میکنند تا تراکنشها فقط یکبار و بهشکل نهایی ثبت شوند.
- الگوریتم اجماع (Consensus Algorithm): بلاکچینها از الگوریتمهایی مانند Proof of Work (PoW) یا Proof of Stake (PoS) استفاده میکنند تا مطمئن شوند فقط یک نسخه از زنجیره معتبر است و تراکنشها دوباره نوشته نمیشوند.
- زمانبندی و ترتیب تراکنشها (Timestamping): هر بلوک شامل زمان مشخصی است و تراکنشها طبق ترتیب زمانی ثبت میشوند. این ویژگی مانع از پذیرش دو تراکنش با ورودی یکسان میشود.
- تأیید چندگانه (Confirmations): شبکههای بلاکچین، قبل از نهاییشدن تراکنش، منتظر تأیید توسط چند بلوک بعدی میمانند. هر چه تعداد تأییدها بیشتر باشد، احتمال دابل اسپندینگ کمتر میشود.
- مکانیزم UTXO در بیت کوین: بیت کوین با مدل خروجی خرجنشده تراکنش (UTXO) کار میکند. یعنی هر ورودی فقط یکبار میتواند خرج شود و در صورت دوبار خرج کردن، تراکنش دوم رد میشود.
- بررسی تکرار در نودها: نودهای شبکه هر تراکنش را با دیتابیس خود چک میکنند. اگر کوینی قبلاً خرج شده باشد، تراکنش جدید رد میشود و وارد بلاک نمیگردد.
- شفافیت و غیرمتمرکز بودن شبکه: بهدلیل ثبت عمومی تراکنشها در دفتر کل توزیعشده، همه میتوانند صحت تراکنشها را بررسی کنند و تغییر آنها بسیار دشوار است.
- پنجره تأخیر برای پذیرش تراکنشها: برخی پلتفرمها و خدمات مانند صرافیها، برای امنیت بیشتر، تا دریافت تعداد مشخصی از تأییدها تراکنش را نهایی نمیدانند.
- نودهای کامل (Full Nodes) و بررسی وضعیت UTXO: این نودها بررسی میکنند که آیا ورودی یک تراکنش قبلاً خرج شده یا خیر. اگر قبلاً یک توکن در تراکنش قبلی خرج شده باشد، تراکنش جدید را رد میکنند.
- پاداش و جریمه برای ماینرها یا اعتبارسنجها: شبکههای بلاکچینی مانند اتریوم و کاردانو، در صورتی که نودها تراکنشهای مشکوک را تأیید کنند، آنها را جریمه میکنند. این کار باعث افزایش دقت اعتبارسنجها میشود.
در مجموع، قدرت اصلی بلاکچین در مقابله با دابل اسپندینگ، در ترکیب چندین لایه امنیتی و اجماع غیرمتمرکز است که جعل یا تکرار تراکنش را عملاً غیرممکن میسازد. البته همچنان اشتباهات کاربران در فرایند دریافت ارز دیجیتال میتواند این خطر را باقی نگه دارد.
اهمیت تایید تراکنشها در جلوگیری از دابل اسپندینگ
تأیید تراکنشها (Confirmations) یکی از مهمترین ابزارهای بلاکچین برای جلوگیری از خرج کردن مضاعف یا Double Spending است. در بلاکچین، وقتی تراکنشی ارسال میشود، ابتدا وارد مِمپول (Mempool) شده و هنوز نهایی نشده است. تنها زمانی که این تراکنش وارد یک بلاک شده و توسط سایر بلاکها و نودها تأیید شود، میتوان آن را قطعی و غیرقابل بازگشت دانست. اما این تایید تراکنش چقدر میتواند اهمیت داشته باشد؟
- جلوگیری از ثبت همزمان دو تراکنش با ورودی یکسان: تا زمانی که تراکنش تأیید نشده، ممکن است مهاجم تراکنشی دیگر با همان توکنها ارسال کند. ولی بعد از تأیید، شبکه فقط یکی را معتبر میداند.
- افزایش امنیت با هر تأیید جدید: هر بلوک جدیدی که بعد از تراکنش به زنجیره اضافه میشود، امنیت آن را بالاتر میبرد و امکان بازنویسی زنجیره را سختتر میکند. مثلاً در بیت کوین، معمولاً بعد از ۶ تأیید تراکنش کاملاً ایمن تلقی میشود.
- اطمینان برای گیرنده: اگر گیرنده بلافاصله پس از دریافت تراکنش، کالای خود را تحویل دهد، بدون گرفتن تأیید، ممکن است قربانی دابل اسپندینگ شود. تأییدها، نقش فیلتر امنیتی را برای او ایفا میکنند.
- جلوگیری از فورکهای زودگذر: در صورت وجود چند زنجیره موازی کوتاه، تأییدها کمک میکنند تا قویترین و معتبرترین زنجیره انتخاب شود و تراکنشها فقط در آن پذیرفته شوند.
با این حساب تأیید تراکنشها مانند قفل امنیتی بلاکچین است که تا زمانی که کاملاً بسته نشده، نمیتوان به اعتبار تراکنش اطمینان کرد. هر چه تأیید بیشتر، امنیت بالاتر و احتمال دابل اسپندینگ کمتر.
چگونه کاربران میتوانند از خرج کردن مضاعف جلوگیری کنند؟
هرچند جلوگیری از دابل اسپندینگ بیشتر به عهده زیرساخت بلاکچین است، اما کاربران هم با رعایت چند نکته کلیدی میتوانند نقش مهمی در جلوگیری از این حمله داشته باشند و خود را از چنین خساراتی دور نگه دارند.
- همیشه منتظر چند تأیید بمانید.
- از کیف پولهای معتبر و بهروز استفاده کنید.
- تراکنشهای ورودی را با بلاکچین بررسی کنید. قبل از اعتماد به هر تراکنش، هش آن را در اکسپلوررهای معتبر مثل Blockchain.com یا Etherscan جستجو کنید تا وضعیت تأیید آن را ببینید.
- در معاملات حضوری یا فوری، از راهکارهای لایه دوم استفاده کنید. راهحلهای لایه دو
مانند شبکه Lightning احتمال دابل اسپندینگ را تقریباً به صفر میرساند. - از دریافت تراکنشهای بدون کارمزد خودداری کنید. با توجه به اینکه ماینرها ممکن است این تراکنشها را تأیید نکنند یا با تأخیر انجام دهند و این زمان برای حمله دابل اسپندینگ مناسب خواهد بود.
با رعایت این نکات، کاربران میتوانند سطح امنیت تراکنشهای خود را افزایش دهند و از گرفتار شدن در تله خرج کردن مضاعف جلوگیری کنند.
جمعبندی
دابل اسپندینگ یا خرج کردن مضاعف در ارز دیجیتال، یکی از مهمترین تهدیداتی است که میتواند امنیت و اعتماد به سیستمهای غیرمتمرکز را زیر سؤال ببرد. این پدیده زمانی رخ میدهد که یک کاربر بخواهد از یک واحد توکن بیش از یکبار استفاده کند. با این حال، شبکههای بلاکچین با بهرهگیری از الگوریتمهای اجماع، تأیید چندمرحلهای تراکنشها، بررسی UTXO و ابزارهای امنیتی مختلف، این تهدید را بهخوبی کنترل کردهاند.
از سوی دیگر، کاربران نیز با رعایت نکاتی مانند انتظار برای تأییدها، استفاده از کیف پولهای معتبر و بررسی دقیق تراکنشها میتوانند نقش مهمی در جلوگیری از دابل اسپندینگ ایفا کنند. معامله گری ارز دیجیتال با اطلاع و رعایت این نکات است که حرفهایتر و مطمئنتر خواهد شد. در نهایت، همانطور که فناوری بلاکچین روزبهروز پیشرفتهتر میشود، تهدید دابل اسپندینگ نیز بیشازپیش قابل مهار خواهد بود؛ به شرط آنکه کاربران و توسعهدهندگان در کنار هم، هوشمندانه عمل کنند.

دیدگاهها