دوبار خرج کردن (Double spending) چیست؟ + ویدیو

بیت کوین این روزها زبانزد همه محافل است و در محیط کار و تحصیل و حتی بین دوستان، حرف از این ارز رمزنگاریشده جالب و هیجان انگیز است. شاید بتوان در حالت کلی گفت که این شهرت به دلیل تحولی است که بیت کوین در سیستم پولی ایجاد کرده است. یک سیستم قدیمی و پر هزینه را به یک حالت کاملا دیجیتال تبدیل کرده است.
ممکن است از دانستن اینکه قبل از بیت کوین نیز تلاشهایی برای ایجاد یک سیستم پولی دیجیتال پایدار بهعملآمده بود، شگفتزده شوید. اما تمام این تلاشها با شکست مواجه شدند زیرا یک مشکل آشکار با پول دیجیتال این بود که تراکنشها را می توان دو بار کپی و یک مقدار پول مشخص را دوبار خرج کرد. به این اتفاق دوبار خرج کردن یا Double spending میگویند. بگذارید کمی موضوع را باز کنیم.
دوبار خرج کردن
با یک مثال شروع میکنم. شما به استارباکس میروید و یک قهوه به ارزش ۱۰ دلار سفارش میدهید. پول قهوه خود را به صورت نقد به صندوقدار میدهید. به محض پرداخت اسکناس به صندوقدار، او تایید میکند که شما پرداخت خود را انجام دادهاید و معامله صورت گرفته است. حالا که ۱۰ دلار پول نقد در صندوق پول استارباکس قرار دارد، شما دیگر به آن پول دسترسی ندارید و نمیتوانید همان ۱۰ دلار را در جای دیگری صرف خرید دیگری کنید. مگر اینکه آن را بدزدید!
اما بیت کوین یک پول دیجیتال است و ماهیت فیزیکی ندارد. از این رو در معاملات امکان کپی کردن و انجام مجدد آن وجود دارد و این احتمال وجود دارد که همان بیت کوین را بتوان دوبار خرج کرد. در مثال استارباکس، شما پول نقد میدهید، بنابراین پرداخت فورا توسط یک انسان دیگر تایید میشود. اما با استفاده از ارز دیجیتال مانند BTC، این مکانیسم دیجیتالی انجام میشود و اگر در حال تایید پرداخت شما باشد، هر کسی میتواند فقط آن پول دیجیتال را کپی کرده و به جای دیگری بپردازد. اینجاست که تخلف صورت میگیرد. بیت کوین اولین ارز دیجیتالی بود که ادعا کرد میتواند این مشکل را حل کند.
بیت کوین چگونه مشکل دوبار خرج کردن را حل میکند
بیت کوین از سیستمی استفاده کرد تا بتواند تراکنشها را در آن ثبت کرد. در این سیستم تراکنشها باید حتما به صورت زنجیروار و در یک دفتر کل توزیع شده ثبت شوند. ( این همان بلاکچین است که می توانید برای مطالعه کامل به اینجا مراجعه کنید.) این سیستم یک دفتر ثبت دیجیتال است که مانند سیستمهای سنتی رکورد تمام تراکنشها را در خود ذخیره میکند. برای مثال برای بیت کوین از سال ۲۰۰۹ تا بحال تمام تراکنشها موجود است. اطلاعات داخل بلوک ها قرار میگیرد. هر ۱۰ دقیقه یک بلوک به دفترکل اضافه میشود و همه گرهها در شبکه بیت کوین یک کپی از این دفتر جهانی دارند.
خب شاید سوال کنید چگونه این موضوع از دوبار خرج کردن جلوگیری میکند؟
فرض کنیم شما یک بیت کوین دارید که میخواهید دو برابر آن را خرج کنید. شما تراکنش را با یک شخص انجام دادید، آن را امضا کردید و میخواهید همان بیت کوین را به آدرس دیگری بفرستید تا شخص دیگری را گول بزنید. هر دو تراکنشها به مجموعه تراکنش های تایید نشده وارد میشوند. اما فقط اولین تراکنش شما تایید شده و توسط ماینرها در بلوک بعدی قرار میگیرد. تراکنش دوم شما تایید نخواهد شد چرا که ماینرها آن را نامعتبر دانستند، بنابراین از شبکه بیرون کشیده خواهد شد.
اگر دو ماینر هم زمان دو تراکنش شما را تایید کنند. در این شرایط چه اتفاقی میافتد؟
در اینصورت تراکنشی که حداکثر تعداد تاییدیههای شبکه را دریافت کند قبول خواهد شد و داخل بلوک قرار میگیرد و دیگری دور ریخته خواهد شد. حالا شاید تراکنش اول که شما برای خرید استفاده کرده بودید و تراکنش درست بوده مورد تایید شبکه قرار نگیرد و این به ضرر شخص دوم خواهد بود. بنابراین همیشه پیشنهاد میشود که حداقل تا ۶ بلوک بعدی برای تایید قطعی منتظر بمانید. این تایید و ایجاد بلوک یعنی تراکنشهایی بعد از تراکنش شما انجام شده و همه توسط ماینرها تایید شده، به دلیل اینکه تمام تراکنشهایی که بعد از تراکنش شما اضافه شدهاند غیر قابل بازگشت و از نظر محاسباتی غیر ممکن است که به عقب برگردند، مطمئن خواهید شد که همه چی درست است.
با مفهوم دوبار خرج کردن و راهکار جالب بیت کوین برای جلوگیری از آن آشنا شدید، حمله دوبار خرج کردن به شبکه از طریق حمله ۵۱ درصد میتواند اتفاق بیافتد. البته تا کنون در تاریخ ۸ ساله بیت کوین، چنین حملهای موفقیتآمیز نبوده است.