Skip to content
دابل اسپندینگ چیست و چگونه رخ می دهد؟

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

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

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

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

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

چگونه دابل اسپندینگ رخ می‌دهد؟

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

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

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

پیشنهاد مطالعه: استخر استخراج ( استخر ماینینگ) چیست؟ آن چه باید در مورد استخر استخراج بدانید؟

چگونه دابل اسپندینگ رخ می‌دهد؟

آیا مشکلات دابل اسپندینگ می‌توانند در زندگی واقعی رخ دهند؟

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

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

در این سناریو، الیس و باب به جین دوبار پرداخت کردند. این همان دابل اسپندینگ در این سیاق است.

حملات دابل اسپندینگ

اینها به اشکال مختلفی ظاهر می‌شوند، از جمله:

حمله فینی

هال فینی این ایده را پیشنهاد کرد. هکر یک بلوک را می‌زند و تراکنشی که از کیف پول A به کیف پول B ارسال می‌کند را در آن قرار می‌دهد. اما منتظر انتشار آن می‌ماند.

 

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

حمله ریس

بایت‌کوین، یکی از اعضای کهنه شبکه بیتکوین، این عبارت را ابداع کرد. ریس اتفاق می‌افتد زمانی که دو تراکنش به دنبال ورود به یک بلوک هستند. تراکنشی که وارد شود موفق محسوب می‌شود، در حالی که کسی که نتواند وارد شود، شکست می‌خورد.

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

حمله 51 درصدی

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

پیشنهاد مطالعه: حمله 51 درصدی یا حمله اکثریت چیست؟

حمله 51 درصدی چیست

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

1- مکانیسم‌های توافق قوی

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

2- افزودن Nonce برای جلوگیری از حملات بازپخش

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

3- زمان‌نماها

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

4- هزینه‌ی عملیات بالای نودها

معمولاً برای انجام دابل اسپندینگ نیاز است که حمله‌کننده یک یا چند نود را مدیریت کند. در صورت حمله 51 درصدی، هکر باید بیش از نیمی از نودها را کنترل کند.یکی از راه‌های اصلی که بلاکچین‌ها می‌توانند مشکل دابل اسپندینگ را مهار کنند، افزایش مراحل عملیات نود است. به عنوان مثال، اتریوم  برای تبدیل شدن به یک مدیر نود، نیاز به وثیقه 32 ETH (54,135 دلار) دارد. این نیازمندی باعث می‌شود که هر دابل-اسپندر مجبور شود مقدار قابل توجهی پول را صرف کند.

5- نظارت متمرکز

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

6- تأیید کنید که UXTO صرفاً از دست نرفته باشد

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

7- بررسی پروتکل بلاکچین و قراردادهای هوشمند

مسائل دابل اسپندینگ اغلب به دلیل آسیب‌پذیری‌ها در کارکرد داخلی یک پروتکل بلاکچین و حتی قراردادهای هوشمند وجود دارد. بهترین راه برای کشف و رفع این آسیب‌پذیری با انجام یک بررسی دقیق و حرفه‌ای است.

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

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

علاوه بر بلاکچین‌ها، کاربران عادی هم ممکن است قربانی حملات دابل اسپندینگ شوند. چک اصلی این است که منتظر تأیید 6 بلوک بمانند. طرف‌های دریافت‌کننده ممکن است به حملات فینی و ریس گرفتار شوند و فرض کنند که یک تراکنش زمانی که تنها یک یا دو تأیید دارد، مطمئناً انجام می‌شود.

زمانی که یک تراکنش 6 تأیید بلوک داشته باشد، دیگر امکان برگشت یا لغو آن وجود ندارد. به طور معمول، باید حداکثر در 3 تا 30 دقیقه 6 تأیید بلوک وجود داشته باشد.

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

خلاصه مطلب

دابل اسپندینگ یک مفاهیم جدی است که می‌تواند به سلامت یک بلاکچین آسیب بزند. هکرها با حمله به Ethereum Classic و Litecoin Cash از حمله 51 درصدی، یک نوع دابل اسپندینگ، اقدام به تلاش کرده‌اند.

حمله‌کنندگان همچنین ممکن است با توکن‌های دابل-اسپند شرکت‌ها یا ارائه‌دهندگان خدمات را فریب دهند. بلاکچین‌ها می‌توانند با نظارت متمرکز، زمان‌نماها، بازرسی‌ها و هزینه‌ی عملیات بالای نودها از این حمله جلوگیری کنند. افراد می‌توانند با منتظر 6 تأیید بلوک، از این حملات جلوگیری کنند.

همزمان با این که آسیب‌پذیری‌های دابل اسپندینگ به ندرت اینقدر ساده هستند. بازبینی پروتکل بلاکچین راه حل صحیحی برای این آسیب‌پذیری‌های پیچیده است که می‌تواند حملات دابل اسپندینگ را فعال کند. امروز بازبینی خود را رزرو کنید!


سوالات متداول مربوط به حمله دابل اسپندینگ

1- دابل اسپندینگ چیست؟

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

2- چگونه کریپتو از دابل اسپندینگ جلوگیری می‌کند؟

کریپتو مسألهٔ دابل اسپندینگ را با سریع پخش جزئیات تراکنش‌های واقعی به تمام نودها حل می‌کند. این اقدام باعث می‌شود که برای یک حمله‌کننده بسیار دشوار باشد که کریپتو را دوباره خرج کند.

3- چگونه می‌توانم به عنوان یک فرد از قربانی حملات دابل اسپندینگ جلوگیری کنم؟

همواره منتظر تأیید 6 بلوک بمانید تا اطمینان حاصل شود که یک تراکنش واقعی است و کریپتو به زودی در کیف پول شما وارد می‌شود.

4- چگونه بلاکچین‌ها می‌توانند از دابل اسپندینگ جلوگیری کنند؟

بازبینی پروتکل، زمان‌نماها، هزینه‌ی عملیات بالا و نظارت متمرکز از طریق بلاکچین‌ها از دابل اسپندینگ جلوگیری می‌کنند.

5- مسأله ژنرال‌های بیزانتی در دابل اسپندینگ چیست؟

مسأله دابل اسپندینگ می‌تواند به عنوان تئوری بازی مسألهٔ ژنرال‌های بیزانتی (BGP) درک شود. ژنرال‌ها باید روی زمان دقیقی برای انجام حرکات کلیدی نظامی اتفاق نظر شوند. اما همیشه فرض است که یک یا چند خائن در میان ژنرال‌ها ممکن است تلاش کنند تا سایران را گیج کنند. مسأله اصلی این بود که ژنرال‌های وفادار چگونه به توافق برسند.

 

0 0 رای ها
امتیازدهی به مقاله
guest
0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها

آخرین مقالات

ویدیوهای مرتبط

محاسبه‌گر سود

بیت کوین

هش‌ریت (TH)

درآمد برای 1 روز با در نظر گرفتن هزینه استخر
BTC = USD
ساعت
روز
هفته
ماه

بزودی …