دو بار خرج کردن چیست؟
دو بار خرج کردن یا دابل اسپندینگ (Double Spending) به سادگی خطر دو بار خرج شدن یک ارز دیجیتال است. در صورت وقوع یک سری شرایط خاص، اطلاعات تراکنش در یک بلاک چین قابل تغییر است. این شرایط به بلاکهای ویرایش شده اجازه میدهد تا وارد بلاک چین شوند. اگر این اتفاق بیفتد، شخصی که تغییر اطلاعات تراکنش را آغاز کرده میتواند رمزارزهای خرج شده را پس بگیرد.
فرآیند دو بار خرج کردن
برای درک دو بار خرج کردن رمزارزها، ابتدا باید نحوه عملکرد بلاک چین را درک کنید. هنگامی که یک بلاک ساخته میشود، یک هش (عدد رمزگذاری شده) دریافت میکند که شامل تاریخ تراکنش (برچسب زمانی یا Time Stampg)، اطلاعات بلاک قبلی و دادههای تراکنش است. این اطلاعات با استفاده از یک پروتکل امنیتی (مانند الگوریتم SHA-256 که در بلاکچین بیتکوین استفاده شده) رمزگذاری میشود.
هنگامی که اطلاعات بلاک توسط ماینرها تائید شد، بلاک بسته میشود و یک بلاک جدید با برچست زمانی، اطلاعات تراکنش و هش بلاک قبلی ایجاد میشود. یک BTC به ماینری تعلق میگیرد که دستگاه او هش را تائید کرده است.
برای اینکه کسی یک رمزارز را دو بار خرج کند، باید یک بلاک مخفی استخراج شود که از زنجیره اصلی پیشی بگیرد. سپس باید آن زنجیره را قبل از زنجیره اصلی به شبکه معرفی کنند. اگر این اتفاق بیفتد، شبکه آنها را به عنوان بلاکهای اخر شناسایی کرده و به زنجیره اضافه میکند. شخصی که این کار را انجام میدهد میتواند هر رمزارزی را که خرج کرده بود، پس بگیرد و دوباره از آن استفاده کند.
جلوگیری از دو بار خرج شدن رمزارزها
دو بار خرج شدن رمزارز همچنان یک ریسک است، اما ریسکی که توسط بلاک چین به حداقل میرسد. احتمال درج یک بلاک مخفی در بلاک چین بسیار ناچیز است زیرا باید توسط اکثر ماینرها پذیرفته و تائید شود.
تنها شانسی که یک ماینر برای درج یک بلاک دستکاری شده در بلاکچین دارد این است که سعی کند کاربر دیگری را به قبول تراکنش خود و استفاده از بلاک مخفی او وا دارد. حتی در این صورت، احتمال پذیرش بلاک ویرایش شده بسیار اندک است. بلاک چین و مکانیسم اجماع به قدری سریع حرکت میکنند که بلاک اصلاح شده قبل از پذیرش منسوخ شده است. حتی اگر پذیرفته میشد، شبکه باز هم اطلاعات موجود در بلاک را ارسال میکرد و آن را رد میکرد.
در واقع هیچ نمونه ثبت شدهای از دو بار خرد شدن یک رمزارز وجود ندارد. جامعه ارزهای دیجیتال بر این باور است که تمامی این حملات خنثی شده است. با این حال، حملاتی که برای دو بار خرج کردن استفاده میشوند، بیشتر برای مقاصد دیگر استفاده میشوند.
بررسی تراکنشهای رمزارز مدتی طول میکشد، زیرا این فرآیند شامل انتخاب تصادفی اعداد برای حل یک هش پیچیده است که این همچنین قدرت محاسباتی زیادی را میطلبد؛ بنابراین، کپی کردن یا جعل بلاک چین به دلیل قدرت محاسباتی بسیار زیاد مورد نیاز برای پیشی گرفتن از سایر ماینرهای شبکه، بسیار دشوار است.
حملات دابل اسپندینگ
مهمترین خطر برای بلاکچینها حمله 51 درصدی است که اگر یک ماینر بیش از 50 درصد از قدرت محاسباتی شبکه را به دست بگیرد میتواند رخ دهد.
اگر این کاربر (یا کاربران) اکثر هشها را در بلاک چین کنترل کنند، میتوانند روند اجماع را دیکته و صدور رمزارز را کنترل کنند. در رمزارزهای محبوب تر مانند بیت کوین، به دلیل تعداد ماینرها و سختی هش، این امر بسیار بعید است. با این حال، رمزارزهای جدید یا فورک شده که شبکههای کوچکتری دارند در معرض این حمله هستند.
معمولاً از حمله تراکنش تائید نشده برای فریب دادن کاربران ارزهای دیجیتال استفاده میشود. اگر یکی از این تراکنشها را مشاهده کردید، نباید آن را بپذیرید زیرا میتواند باعث حمله دابل اسپندینگ شود.
آیا دابل اسپندینگ اتفاق افتاده است؟
مواردی وجود داشته است که تلاش برای حمله دابل اسپندینگ گزارش شده و متوقف شده است. حملاتی که ممکن است اتفاق بیفتد، عموماً منجر به دزدی میشود تا دو بار خرج شدن یک رمزارز.
آیا میتوانید یک بیت کوین را کپی کنید؟
شما نمیتوانید یک BTC را کپی کنید زیرا بلاک چین و مکانیسم اجماع آن را نمیپذیرد.
نمونه هایی از حملات دابل اسپندینگ
چندین نوع حمله میتواند به ماینرها اجازه دهد تا رمزارز را دو بار خرج کنند. از جمله حمله فینی ((Finney، حمله ریس (Race Attack)، حمله 51٪، حمله کریر (Career Attack)، و حملات تراکنش تائید نشده است.
چگونه با دو بار خرج کردن مقابله کنیم؟
جلوگیری از دو بار خرج کردن رمزارزها مستلزم یک فرآیند تائید سختگیرانه و این تضمین است که یک ورودی نمیتواند در چندین تراکنش به اشتراک گذاشته شود. دو راه اصلی برای مقابله با دو بار خرج کردن وجود دارد:
1. پیمانکار مرکزی
متمرکز بودن شبکه به طور بالقوه میتواند خطر ذاتی دو بار خرج شدن در تراکنشهای ارز دیجیتال را کاهش دهد. این کار با پیاده سازی یک پیمانکار مرکزی و قابل اعتماد برای تائید تراکنش ها انجام میشود.
در سیستم مالی، پیمانکارهای مرکزی اغلب مؤسسات مالی هستند که ریسک اعتباری طرف مقابل را بین دو طرف بر عهده میگیرند و از انجام تراکنش اطمینان میدهند. این خدمات معمولاً برای تسهیل معاملات ابزارهای مشتقه مالی استفاده میشود.
2. بلاک چین
ارزهای دیجیتال غیرمتمرکز، مانند بیت کوین، از مکانیسمهای اجماع استفاده میکنند که تراکنش ها را با قطعیت تائید میکند. در عمل، مکانیزم اجماع تضمین میکند که هر گره در شبکه تراکنش را تائید میکند.
چالشهای مرتبط با استفاده از یک مرجع متمرکز
یکی از چالشهای قابلتوجه در بهکارگیری یک مرجع متمرکز، هزینههای نگهداری است. تعیین یک بانک به عنوان یک مرجع متمرکز منجر به کاهش کمیسیون (کارمزد) در تراکنشهای ارز دیجیتال میشود. ممکن است گران باشد، به ویژه در مواردی که بیش از دو نهاد و/یا بانک در انتقال، پردازش و احراز اعتبار وجوه دخالت دارند.
استفاده از رویکرد غیرمتمرکز
جلوگیری از دابل اسپندینگ در سیستمهای غیرمتمرکز چالش برانگیزتر است، زیرا مستلزم نگهداری تعداد قابل توجهی از سرورهایی است که کپیهای یکسان و به روز از دفتر کل تراکنشهای عمومی را ذخیره میکنند. با این حال، تراکنشهایی که مخابره میشوند ممکن است در زمانهای مختلفی به سرورها برسند. یکی از اجزای کلیدی رویکرد سیستم غیرمتمرکز این است که فقط به اولین تراکنشی که توسط هر یک از سرورها دریافت میشود، اعتبار داده میشود.
از این رو، در مواردی که یک تراکنش تکراری است یا از همان توکن برای پرداخت مجدد استفاده میشود، تراکنش تکراری نامعتبر میشود، زیرا سرورها فقط تراکنش اول را تائید میکنند. با این حال، هنگامی که سرورها با هم تطابق نداشته باشند، فرایند اعتبارسنجی تقریبا غیرممکن میشود. چنین اشکالی را میتوان با استفاده از یک الگوریتم اجماع، که سرورهای مختلف را همگام سازی میکند، برطرف کرد. نمونههایی از این الگوریتمها شامل مکانیسمهای اجماع گواهی سپرده (POS) و گواهی کار (POW) است.
جمع بندی
همانطور که دیدید، احتمال دوبار خرج کردن یک رمزارز در شبکههای بزرگ بسیار کم و تقریبا نزدیک به صفر است. به عنوان مثال در شبکه بیت کوین، به دلیل نیاز به کنترل بیش از 50 درصد از هشریت، اکنون چنین امکانی وجود ندارد. با این حال، بهتر است قبل از خرید ارز دیجیتال (تبدیل)، بلاک چین آن را از نظر توانایی مقابله با انواع حملات مخصوصا حمله دابل اسپندینگ ارزیابی کنید