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

یکی از بزرگترین خطرات حمله دوبار خرج کردن در ارزهای دیجیتال، حمله ٪۵۱ است، که زمانی رخ میدهد که یک نهاد بیش از ٪۵۰ از توان پردازشی یا مکانیزمهای تأیید یک شبکه را کنترل کند.
اگر یک یا چند کاربر اکثریت شبکه، سهام شبکه یا هر مکانیزم دیگری را در اختیار داشته باشند، میتوانند کنترل اجماع تراکنشها و توزیع ارز را به دست بگیرند. ارزهای دیجیتال جدید یا آنهایی که از یک بلاکچین منشعب شدهاند و شبکههای کوچکتری دارند، در برابر این حمله آسیبپذیرترند. اما در شبکههای بزرگی مانند بیت کوین، به دلیل تعداد زیاد شرکتکنندگان و سرعت بالای پردازش شبکه، وقوع این حمله بسیار بعید است.
اتریوم از مکانیزم اثبات سهام (Proof of Stake) استفاده میکند، که تنها کاربرانی که مقدار زیادی اتر را در قراردادهای هوشمند قفل کردهاند، میتوانند اعتبارسنج شوند و بلاک پیشنهاد دهند. برای انجام این حمله، یک گروه یا نهاد باید بیش از ٪۵۰ از اترهای استیکشده در شبکه را کنترل کند. این اقدام بسیار پرهزینه است، زیرا برای راهاندازی یک نود، ۳۲ اتر (حدود ۹۵,۲۰۰ دلار بر اساس قیمت ۱۵ می ۲۰۲۴) نیاز است. همچنین مکانیزمی وجود دارد که توکنهای اعتبارسنجهای متقلب را میسوزاند.
انواع حملات دابل اسپندینگ
در ادامه، بیشتر با حملات دابل اسپندینگ یا دوبار خرج کردن آشنا میشویم:
۱. حمله رقابتی (Race Attack)
حمله رقابتی، که به آن تراکنش تأییدنشده نیز گفته میشود، روشی است که در آن یک کاربر مخرب، دو تراکنش سریع ارسال میکند: یکی به گیرنده و یکی به بلاکچین. تراکنشی که برای گیرنده است ممکن است یک توکن به او انتقال دهد، اما تراکنشی که به شبکه ارسال شده آن را تحت مالکیت ارسالکننده نگه میدارد. در این روش، فرد سعی میکند از تأخیر در شبکه سوءاستفاده کند تا ابتدا تراکنشی که مالکیت توکن را به او بازمیگرداند، تأیید شود.
چگونه میتوان از این حمله جلوگیری کرد؟ نپذیرفتن تراکنشهای تأییدنشده بهراحتی از این حمله جلوگیری میکند.
۲. حمله فینی (Finney Attack)
حمله فینی، که به افتخار هال فینی نامگذاری شده (توسعهدهندهای که این ضعف را شناسایی کرد)، نوعی حمله تراکنش تأییدنشده است. در این حمله، یک ماینر بلاکی ایجاد کرده و مقداری ارز را به دو آدرس خود ارسال میکند. سپس، در همان بلاک، یک تراکنش دیگر را به فرد دیگری ارسال میکند. اگر دریافتکننده بدون انتظار برای تأیید شبکه، تراکنش را بپذیرد، فرستنده میتواند مبلغ ارسالشده را به خود بازگرداند و آن را دوباره خرج کند.
چگونه میتوان از این حمله جلوگیری کرد؟عدم پذیرش تراکنشهای تأییدنشده و استفاده از کیف پولهایی که مانع از پذیرش این نوع تراکنشها میشوند. البته این حمله در بلاکچینهای بزرگ بسیار نادر است.
۳. حمله سیبیل (Sybil Attack)
در حمله سیبیل، فرد مهاجم تعداد زیادی نود در شبکه ایجاد میکند تا بر فرآیند اجماع تأثیر بگذارد. این حمله از نظر مفهومی مشابه حمله ٪۵۱ است اما در مقیاس کوچکتر انجام میشود. حمله سیبیل را میتوان مقدمهای برای حمله ٪۵۱ دانست.
آیا دابل اسپندینگ غیرقانونی است؟

غیرقانونی بودن دوبار خرج کردن به شرایط آن بستگی دارد. در صورتی که این اقدام در یک ارز دیجیتال با ارزش بازار انجام شود، تقلب محسوب شده و غیرقانونی است. اما دوبار خرج کردن تنها مختص ارزهای دیجیتال نیست. برای مثال، فرض کنید یک جامعه گیمینگ از یک بلاکچین برای رأیگیری استفاده میکند و هر توکن بلاکچین معادل یک رأی است. این توکنها هیچ ارزش مالی ندارند.
اگر شخصی یک حمله دوبار خرج کردن انجام داده و رأیها را تغییر دهد، نتیجه رأیگیری غیرواقعی خواهد بود. این کار ممکن است از نظر قانونی جرم نباشد، اما از نظر اخلاقی نادرست بوده و ممکن است برخلاف قوانین انجمن باشد.
جمعبندی – مراقب حمله دابل اسپندینگ باشید
حمله دابل اسپندینگ یا دوبار خرج کردن تغییری در عملکرد بلاکچین است که به مهاجم اجازه میدهد یک توکن را بیش از یک بار خرج کند. اگرچه اغلب به عنوان یک مشکل ارزهای دیجیتال شناخته میشود، اما میتواند در هر بلاکچین یا دفتر کل توزیعشده رخ دهد. اما چگونه از دوبار خرج کردن جلوگیری کنیم؟ با پذیرش نکردن تراکنشهای تأییدنشده و استفاده از بلاکچینهایی با شبکههای بزرگتر، زیرا شبکههای کوچکتر بیشتر در معرض این حملات قرار دارند.
سوالات متداول
دابل اسپندینگ چیست و چرا در ارزهای دیجیتال مشکلساز است؟
دابل اسپندینگ یا دوبار خرج کردن به حالتی گفته میشود که یک ارز دیجیتال بیش از یک بار خرج شود. این مشکل در سیستمهای پولی دیجیتال یک چالش اساسی است، زیرا برخلاف پول نقد فیزیکی، کپیبرداری از دادههای دیجیتال آسان است. اگر مکانیزمهای امنیتی مناسب وجود نداشته باشد، یک فرد میتواند تراکنش خود را معکوس کرده و دوباره همان ارز را خرج کند.
چگونه شبکههای بلاکچین از دابل اسپندینگ جلوگیری میکنند؟
بلاکچینها از روشهایی مانند اجماع توزیعشده و رمزنگاری تراکنشها برای جلوگیری از دابل اسپندینگ استفاده میکنند. بیتکوین، برای مثال، با استفاده از مکانیزم اثبات کار (PoW) تراکنشها را تأیید و ثبت میکند. همچنین، کاربران باید منتظر تعداد مشخصی از تأییدها باشند تا از نهایی شدن تراکنش اطمینان حاصل کنند.
حمله ۵۱ درصد چیست و چگونه میتواند منجر به دابل اسپندینگ شود؟
حمله ۵۱ درصد زمانی رخ میدهد که یک فرد یا گروه بیش از ۵۰ درصد از توان پردازشی شبکه را در اختیار بگیرد. در چنین شرایطی، آنها میتوانند تراکنشهای تأییدشده را تغییر دهند و وجوه را دوباره خرج کنند. شبکههای کوچکتر و بلاکچینهای جدیدتر در برابر این نوع حمله آسیبپذیرتر هستند.
چگونه کاربران میتوانند از دابل اسپندینگ جلوگیری کنند؟
کاربران میتوانند با انجام اقدامات زیر از دابل اسپندینگ جلوگیری کنند:
- انجام تراکنشها روی بلاکچینهای معتبر و با شبکههای بزرگتر مانند بیت کوین و اتریوم.
- عدم پذیرش تراکنشهای تأییدنشده و انتظار برای تأییدهای شبکه.
- استفاده از کیف پولهای امن که مکانیزمهای ضد دابل اسپندینگ دارند.