انواع حملات دابل اسپند در بازار ارزهای دیجیتال و راهکارهای مقابله
مقدمه
پروفسور هال فینی، یکی از پیشگامان بیتکوین و رمزارزها، در سال ۲۰۰۸ در یکی از ایمیلهایش به ساتوشی ناکاموتو به صراحت از بزرگترین چالش پیش روی پولهای دیجیتال نوشت: «مشکل دو بار خرج کردن یا double spend». این مشکل، به یک سوال ساده و در عین حال حیاتی برمیگردد: چگونه میتوان اطمینان حاصل کرد که یک واحد پول دیجیتال که صرفاً یک فایل کامپیوتری است، همزمان به دو یا چند نفر فروخته نشود؟ در دنیای پول نقد، این مشکل وجود ندارد، چرا که شما پس از پرداخت اسکناس، دیگر آن را در اختیار ندارید. اما در دنیای صفر و یکها، کپی کردن یک فایل کاری بسیار ساده است. ساتوشی ناکاموتو با معرفی بلاکچین، راهحلی انقلابی برای این معضل ارائه داد که اساس کل بازار ارزهای دیجیتال را شکل داد.
مفهوم دو بار خرج کردن (Double Spend) چیست؟

برای درک کامل این پدیده، ابتدا باید با تعریف دقیق و ریشههای آن آشنا شویم.
تعریف ساده و کاربردی Double Spend
دو بار خرج کردن (Double Spend) به حالتی گفته میشود که یک کاربر تلاش میکند یک واحد ارز دیجیتال یکسان را به صورت همزمان یا در بازه زمانی بسیار نزدیک، به دو یا چند گیرنده مختلف ارسال کند. در واقع، فرد سعی میکند یک تراکنش را به دو صورت متفاوت اجرا کند تا بتواند یک واحد پولی را چندین بار خرج نماید. این عمل، به نوعی معادل با جعل اسکناس است، چرا که منجر به از دست دادن ارزش پول دیجیتال و بیاعتباری سیستم پرداخت میشود. اگر این مشکل در یک سیستم مالی حل نشود، هیچکس به آن سیستم اعتماد نخواهد کرد، زیرا ارزش داراییهایش در معرض خطر است.
مشکلات پرداختهای دیجیتال سنتی
پیش از ظهور بلاکچین، سیستمهای پرداخت دیجیتال برای حل مشکل دو بار خرج کردن به یک مرجع متمرکز و قابل اعتماد وابسته بودند. برای مثال، در یک تراکنش بانکی، شما به بانک خود اعتماد میکنید که حساب شما را در لحظه پرداخت، به روزرسانی کند و اجازه ندهد که شما همان مبلغ را دوباره خرج کنید. این سیستمها به دلیل اتکای کامل به یک نهاد مرکزی (مانند یک بانک یا شرکت پرداخت)، در برابر نفوذ، سانسور و خطا آسیبپذیر هستند. هدف اصلی ساتوشی ناکاموتو، ایجاد یک سیستم پرداخت غیرمتمرکز بود که بتواند بدون نیاز به یک نهاد متمرکز، مشکل دو بار خرج کردن را حل کند.
راهحل بلاکچین برای مشکل دو بار خرج کردن
بلاکچین با مکانیزمهای هوشمندانه خود، راهحلی انقلابی برای مشکل Double Spend ارائه داد.
دفتر کل توزیعشده (Distributed Ledger) و اجماع شبکه
مهمترین ابزار بلاکچین در مقابله با دو بار خرج کردن، دفتر کل توزیعشده و مکانیزم اجماع است. دفتر کل توزیعشده به این معنی است که تمامی تراکنشها به صورت عمومی در شبکه ثبت شده و در دسترس همه نودها (Nodes) قرار دارد. هنگامی که یک تراکنش جدید ایجاد میشود، ابتدا به شبکه منتشر شده و توسط نودها بررسی میشود. هر نود با بررسی تاریخچه دفتر کل، از عدم دو بار خرج کردن آن تراکنش اطمینان حاصل میکند. سپس، با استفاده از مکانیزم اجماع (مانند اثبات کار (Proof of Work) در بیتکوین)، نودها بر سر یک نسخه واحد از دفتر کل به توافق میرسند.
نقش استخراجکنندگان (Miners) و اثبات کار (Proof of Work)
در بلاکچینهای مبتنی بر اثبات کار، مانند بیتکوین، استخراجکنندگان مسئول حل یک معمای ریاضی پیچیده برای ساخت بلوک جدید هستند. استخراجکنندگان پس از حل معما، تراکنشها را در یک بلوک جدید جمعآوری کرده و آن را به شبکه مخابره میکنند. این بلوک حاوی هش بلوک قبلی است و به این صورت یک زنجیره بلوکی ایجاد میشود. از آنجا که حل معمای ریاضی به قدرت پردازش بسیار بالایی نیاز دارد، دستکاری تاریخچه و تراکنشها برای یک مهاجم تقریباً غیرممکن است. اگر فردی بخواهد تراکنش خود را دو بار خرج کند، باید معمای حل شده برای بلوک اصلی را مجدداً حل کرده و بلوک جدید را به زنجیره اضافه کند، که این کار از نظر محاسباتی بسیار پرهزینه و غیرعملی است.
انواع حملات Double Spend و راهکارهای مقابله با آنها

با وجود مقاومت بلاکچین، حملات مختلفی برای دو بار خرج کردن طراحی شدهاند.
حمله 51 درصد (51% Attack)
یکی از جدیترین تهدیدها برای مقابله با دو بار خرج کردن، حمله ۵۱ درصد است. در این حمله، یک نهاد یا گروه، بیش از ۵۰ درصد از قدرت هش شبکه را در اختیار میگیرد. با در اختیار داشتن اکثریت قدرت پردازش، مهاجمان میتوانند تراکنشهای خود را دو بار خرج کنند. آنها میتوانند یک تراکنش را به یک فروشنده ارسال کرده و در بلاکچین عمومی ثبت کنند، و سپس به صورت همزمان، یک تراکنش دیگر برای ارسال همان ارز به کیف پول خودشان، در یک بلاکچین خصوصی ایجاد کنند. با توجه به اینکه مهاجمان اکثریت قدرت هش را در اختیار دارند، زنجیره خصوصی آنها در نهایت از زنجیره عمومی پیشی گرفته و به زنجیره اصلی تبدیل میشود، در حالی که تراکنش اصلی حذف شده است.
حمله مسابقه (Race Attack) و حمله فینی (Finney Attack)
حمله مسابقه به وضعیتی اشاره دارد که مهاجم همزمان دو تراکنش (یکی به فروشنده و یکی به کیف پول خودش) را به شبکه ارسال میکند و امیدوار است که تراکنش به کیف پول خودش زودتر در شبکه منتشر شود. این حمله معمولاً در تراکنشهای با تأیید صفر اتفاق میافتد. حمله فینی، نوع پیشرفتهتری از حمله مسابقه است که در آن، مهاجم یک بلوک را با تراکنش خود به کیف پولش استخراج میکند، سپس قبل از اینکه بلوک را منتشر کند، تراکنش دیگری را به فروشنده میفرستد. پس از دریافت کالا یا خدمت، بلوک استخراجشده را به شبکه ارسال میکند و تراکنش اصلی را باطل میکند.
راهکارهای امنیتی و پروتکلهای جدید
برای مقابله با این حملات، جامعه بلاکچین راهکارهای مختلفی را توسعه داده است.
تأییدیه تراکنشها (Transaction Confirmations)
یکی از سادهترین و مؤثرترین راهکارها برای مقابله با Double Spend، تأییدیه تراکنش است. هنگامی که یک تراکنش در یک بلوک قرار میگیرد، به یک تأییدیه دست پیدا میکند. با اضافه شدن هر بلوک جدید به زنجیره، تأییدیه یک تراکنش افزایش مییابد. هرچه تعداد تأییدیهها بیشتر باشد، امنیت و اعتبار تراکنش بیشتر است. برای تراکنشهای با ارزش بالا، توصیه میشود که حداقل ۶ تأییدیه (در بیتکوین) دریافت شود. این کار، ریسک وقوع Double Spend را به شدت کاهش میدهد، زیرا برای انجام آن، مهاجم باید به سرعت چندین بلوک را استخراج کند.
بلاکچینهای اثبات سهام (Proof of Stake) و مقابله با Double Spend
بلاکچینهای مبتنی بر اثبات سهام، مانند اتریوم ۲.۰، از روش متفاوتی برای مقابله با (Double Spend) استفاده میکنند. در این بلاکچینها، اعتبارسنجها (Validators) به جای ماینرها، مسئول تأیید تراکنشها هستند. اعتبارسنجها برای مشارکت، مقدار مشخصی از ارز شبکه را در وثیقه (Stake) قرار میدهند. اگر یک اعتبارسنج سعی در انجام یک تراکنش جعلی یا دو بار خرج کردن داشته باشد، وثیقه او از بین میرود. این مکانیزم، یک عامل بازدارنده قوی ایجاد میکند و نیاز به قدرت پردازش عظیم را از بین میبرد.
آینده Double Spend و تکامل بلاکچین

با پیشرفت فناوری بلاکچین، راهحلهای جدیدی برای مقابله با دو بار خرج کردن در حال ظهور است.
شبکههای لایه دوم و پرداختهای سریع
شبکههای لایه دوم مانند شبکه لایتنینگ (Lightning Network)، راهکاری برای حل مشکل مقیاسپذیری و سرعت تراکنشها ارائه میدهند. این شبکهها، تراکنشهای کوچک را خارج از بلاکچین اصلی انجام داده و تنها تراکنش نهایی را در بلاکچین اصلی ثبت میکنند. این فرآیند، سرعت را به شدت افزایش میدهد و امکان دو بار خرج کردن را به دلیل زمان کوتاه تراکنشها و قوانین قراردادهای هوشمند، به حداقل میرساند.
فناوریهای جدید و پروتکلهای پیشرفته
محققان و توسعهدهندگان به طور مداوم در حال بررسی پروتکلهای جدیدی برای افزایش امنیت و مقاومت در برابر (Double Spend) هستند. فناوریهایی مانند گرافهای غیرمتمرکز جهتدار (Directed Acyclic Graphs یا DAGs)، که در پروژههایی مانند آیوتا (IOTA) استفاده میشوند، رویکردی متفاوت برای تأیید تراکنشها دارند که میتواند به حل این مشکل کمک کند. این نوآوریها، نشان میدهند که جامعه بلاکچین به طور مداوم در تلاش است تا سیستمهای پرداخت دیجیتال را ایمنتر و قابل اعتمادتر سازد.
نتیجهگیری
دو بار خرج کردن (Double Spend)، از ابتدای عصر پولهای دیجیتال، یک چالش اساسی و فلسفی بوده است. ساتوشی ناکاموتو با معرفی بلاکچین، راهحلی انقلابی ارائه داد که بر مبنای دفتر کل توزیعشده، مکانیزم اجماع و رمزنگاری، به صورت غیرمتمرکز با این مشکل مقابله میکند. با وجود تهدیداتی مانند حمله ۵۱ درصد و سایر حملات، جامعه بلاکچین با توسعه مکانیزمهای جدید و پروتکلهای پیشرفته، مقاومت این فناوری را افزایش داده است. در نهایت، ماهیت شفاف و غیرمتمرکز بلاکچین، آن را به یک ابزار قدرتمند برای ایجاد یک سیستم پولی بدل کرده است که در آن، دو بار خرج کردن نه تنها یک خطای فنی، بلکه یک عمل غیرممکن و هزینهبر محسوب میشود.