دو بار خرج کردن (Double Spending) چیست؟ عبارت «دو بار خرج کردن» یا Double Spending یکی از واژههای گیج کننده برای اغلب افراد تازه وارد به بازار کریپتوکارنسیها میباشد چرا که این مفهوم در امور مالی سنتی وجود ندارد. به طور کلی نمیتوان یک ارز فیات، سهام یا طلا را دو بار خرج کرد. در واقع، سیستم مالی سنتی شامل مجموعهای از دفاتر است که توسط بانکها، صرافیها و کارگزاریها نگهداری میشود. آنها جریان پول و دارایی را پیگیری کرده و مالکیت افراد را تأیید میکنند. بهطورمثال، اگر حساب بانکی شما میگوید که شما ۱۰۰۰۰ دلار پول دارید، به این دلیل است که بانک با این موضوع که شما ۱۰۰۰۰ دلار پول دارید، موافق است.
جالب است بدانید که در هنگامی که اولین توسعهدهندگان بازار کریپتوکارنسی در تلاش برای راهاندازی پول دیجیتال بودند، با مشکل خرج مضاعف مواجه شدند چرا که رمزارزها اساساً فایلهای دیجیتالی هستند که به راحتی میتوان از آنها کپی ایجاد کرد. بنابراین، آنها باید راهی برای حل این مشکل پیدا میکردند چون در غیر این صورت، یک فرد میتوانست رمزارز خود را کپی کرده و آن را در دو مکان و به طور همزمان خرج کند. در این مقاله قصد داریم تا شما را با تمام جنبههای دابل اسپندینگ یا همان دو بار خرج کردن آشنا کنیم. اگر شما هم به یادگیری این موضوع علاقهمند هستید تا انتهای این مقاله همراه ما باشید.
چگونه بیتکوین از خرج مضاعف جلوگیری میکند؟
در زمان راهاندازی بلاکچین بیتکوین توسط ساتوشی ناکاموتو، به نظر میرسید که راه حل این مشکل مشخص شده است. بهطورکلی میتوان گفت که بلاکچین بیتکوین، دفتری است که حاوی سوابق استخراج تمام بیتکوینهای جدید، تراکنشهای همه بیتکوینهای در گردش و بالانس بیتکوین در هر آدرس بیتکوین است. این دفتر کل توسط یک شبکه غیرمتمرکز از ماینرها نگهداری میشود که هر کدام از آنها یک کپی از این دفتر را در اختیار دارند. اگر در زمینه بلاکچین اطلاعات کافی ندارید، میتوانید مقاله: بلاکچین چیست؟ را مطالعه نمایید.
ساتوشی، سیستمی را برای نگهداری دفتر کل بیتکوین ابداع کرد که مبتنی بر تئوری بازی (Game Theory) بوده و ماینرها را تشویق میکند تا صادق باشند و فقط تراکنشهای قانونی را وارد دفتر کنند. به عنوان مثال، وقتی آلیس یک بیتکوین برای باب میفرستد، تراکنش ارسال این بیتکوین به همراه تمام تراکنشهای تأیید نشده دیگر وارد یک استخر میشود.
ماینرها بر اساس مکانیسم اجماع اثبات کار با یکدیگر رقابت میکنند تا بلاک بعدی را تولید کنند. اولین ماینری که معما را حل میکند، گروهی از تراکنشها را از استخر انتخاب کرده و بلاک جدید را میسازد.سپس ماینر راهحل و بلاک خود را به بقیه ماینرهای شبکه ارائه میکند. ماینرها، راه حل و همچنین قانونی بودن تراکنشهای موجود در بلاک را تأیید میکنند. آلیس برای موفقیت تراکنش باید یک آدرس بیتکوین معتبر داشته باشد که حاوی حداقل یک بیتکوین باشد. با فرض انجام این کار، تراکنش تأیید شده و به دفتر کل بیتکوین اضافه میشود.
هر بلاک از نظر رمزنگاری به نسخه قبلی خود گره خورده است و یک دنباله قابل تأیید از تراکنشها ایجاد میکند. بنابراین در این شرایط تنها زمانی مشکل خرج مضاعف ایجاد میشود که آلیس بعد از ارسال یک بیتکوین به باب، بتواند به نحوی شبکه را متقاعد سازد که او هنوز آن یک بیتکوین را در حساب خود دارد. اما بهتر است بدانید که همه چیز به این سادگی نیست و برای این اتفاق تنها تعداد محدودی راه وجود دارد که هیچ کدام از آنها ساده نیستند.
بهطور کلی، دو بار خرج کردن زمینه تکنولوژیکی را که یک بلاکچین بر اساس آن پایهگذاری شده است، از بین میبرد. متخصصین این حوزه معتقدند که بلاکچین یک پایگاه داده میباشد که ضد دستکاری بوده و هر تراکنشی را که تا به حال در شبکه انجام شده، ثبت میکند. بنابراین، پتانسیل اجرای double spending، اساساً اعتماد به یک رمزارز مانند بیتکوین یا هر شبکه بلاکچین دیگری را تضعیف میکند.
یک مثال مشابه مرتبط برای توضیح خرج مضاعف، «مسئله ژنرالهای بیزانس» است، این مسئله به زمانی اشاره دارد که افرادی که با یکدیگر یک همکاری مشترک دارند، به یکدیگر اعتماد ندارند. مسئله ژنرالهای بیزانس یک آزمایش فکری برای نشان دادن موضوع اختلاف نظر بین بازیکنان در یک سیستم غیرمتمرکز است.
در این مقایسه، تنها یک حمله هماهنگ توسط همه ژنرالهایی که هر کدام ارتش خود را کنترل میکنند، منجر به پیروزی میشود. به محض اینکه یک ژنرال مشکل پیدا کند یا به ژنرال دیگری حمله کند، نبرد شکست میخورد.با توجه به همه مطالب گفته شده، کریپتوکارنسیها باید تحمل خطای بیزانس (Byzantine Generals Problem) که به اختصار BFT نامیده میشود را در پروتکل خود داشته باشند. تحمل خطای بیزانسی (BFT) به این معنی است که یک سیستم کامپیوتری باید در صورت بروز خطا یا خرابی، عملکرد خود را تا حد قابل قبولی حفظ کند، حتی اگر برخی از کاربران طبق برنامه رفتار نکرده و سعی کنند سیستم را فریب دهند.
حمله دابل اسپندینگ ( دو بار خرج کردن ) چگونه کار میکند؟
شناخته شدهترین نوع حمله خرج مضاعف، حمله ۵۱ درصدی (۵۱% Attack) است. در این سناریو، یک یا چند نهاد موفق میشوند، حداقل ۵۱ درصد از کل توان محاسباتی شبکه را که به آن قدرت هش نیز میگویند، در اختیار بگیرند. هنگامی که آنها این کار را انجام دهند، کنترل کافی بر شبکه برای شروع تأیید تراکنشهای نامعتبر و دابل اسپندینگ دارند.
نوع دیگر حمله خرج مضاعف، حمله ریس (Race Attack) است. برای درک این نوع حمله بهتر است به معامله بین آلیس و باب برگردیم. فرض کنید آلیس یک فرد خرابکار است و میخواهد خرج مضاعف انجام دهد. در این شرایط او یک بیتکوین خود را برای باب میفرستد اما بلافاصله قبل از اینکه پرداخت او به باب توسط شبکه بیتکوین تأیید شود، یک تراکنش معکوس میفرستد.
یک نسخه پیچیدهتر از این نوع حمله، حمله فینی (Finney attack) است که در آن یک ماینر شرکت دارد. اگر آلیس ماینر باشد و قصد دو بار خرج کردن داشته باشد، یک بلاک با پرداختی که به باب انجام میدهد، پیش ماین میکند، اما قبل از اینکه بلاک از پیش استخراج شده در شبکه پخش شود، تراکنش دیگری میزند و در نتیجه، شبکه، تراکنش به باب را ریجکت میکند.
آیا شما در معرض خطر حمله دابل اسپندینگ ( دو بار خرج کردن ) هستید؟
هر دو سناریوی آخر در صورتی اتفاق میافتد که باب تراکنش را قبل از تأیید در شبکه بلاکچین بیتکوین به عنوان یک تراکنش انجام شده بپذیرد. به همین دلیل، اکثر بازرگانانی که بیتکوین را میپذیرند، تا زمانی که تراکنشها نهایی نشود، کالا یا خدمات خود را صادر نمیکنند. منظور از تأیید نهایی تراکنش این است که کاربر باید تا تأیید چند بلاک دیگر پس از تراکنش خود منتظر بماند تا احتمال دو بار خرج کردن را به حداقل برساند.
شبکه بیتکوین نسبتاً کند است. بنابراین نهایی شدن یک تراکنش ممکن است تا یک ساعت زمان ببرد. عدم مقیاس پذیری مهمترین مشکل پیش روی بیتکوین میباشد و همین امر دلیل بر این است که چرا بیتکوین هنوز به یک دارایی مشابه یک کالا یا یک رسانه جهانی مبادلات تبدیل نشده است. با این حال، هم اکنون کارهای زیادی روی راهحلهای لایه ۲ مانند شبکه لایتنینگ به منظور افزایش مقیاسپذیری بیتکوین در حال انجام است. اگر چه شما به عنوان یک کاربر شبکه بیتکوین باید نسبت به خطرات دابل اسپندینگ آگاه باشید، واقعیت این است که این نوع حمله در بلاکچین بیتکوین نسبتاً کمیاب است البته به شرطی که کاربران از نیاز به انتظار برای نهایی شدن تراکنشها اطلاع داشته باشند.
جمعبندی
با دو بار خرج کردن یا خرج مضاعف، کاربران میتوانند از سیستمهای نقدی الکترونیکی کلاهبرداری کرده و از یک وجه، دو یا چند بار استفاده کنند. در ابتدا راه حلهای مناسبی برای حل این مشکل وجود نداشت و این موضوع، چالش قابل توجهی برای رشد و پیشرفت داراییهای دیجیتال و بیتکوین ایجاد کرد. خوشبختانه، امضاهای کور (Blind Signatures) و همچنین پروتکلهای دقیق و شفاف، راهحلی نوآورانه برای طرحهای مالی غیرمتمرکز ارائه کردهاند. علاوه بر این، شکلگیری مکانیسم PoW و فناوری بلاکچین، بیتکوین را به یک سیستم دارایی دیجیتال قدرتمند و غیرمتمرکز تبدیل کرده که امکان تقلب و حملات خرج مضاعف ( دو بار خرج کردن ) در آن به میزان قابل توجهی کاهش پیدا کرده است.