بیت کوین این روزها زبانزد همه محافل است و در محیط کار و تحصیل و حتی بین دوستان، حرف از این ارز رمزنگاری شده جالب و هیجان انگیز است. شاید بتوان در حالت کلی گفت که این شهرت به دلیل تحولی است که بیت کوین در سیستم پولی ایجاد کرده است. یک سیستم قدیمی و پر هزینه را به یک حالت کاملا دیجیتال تبدیل کرده است.ممکن است از دانستن اینکه قبل از بیت کوین نیز تلاش هایی برای ایجاد یک سیستم پولی دیجیتال پایدار به عمل آمده بود، شگفت زده شوید. اما تمام این تلاش ها با شکست مواجه شدند زیرا یک مشکل آشکار با پول دیجیتال این بود که تراکنش ها را می توان دو بار کپی و یک مقدار پول مشخص را دوبار خرج کرد. به این اتفاق دوبار خرج کردن یا Double spending می گویند. بگذارید کمی موضوع را باز کنیم.
دوبار خرج کردن
با یک مثال شروع می کنم. شما به استارباکس می روید و یک قهوه به ارزش 10 دلار سفارش می دهید. پول قهوه خود را به صورت نقد به صندوقدار می دهید. به محض پرداخت اسکناس به صندوقدار، او تایید می کند که شما پرداخت خود را انجام داده اید و معامله صورت گرفته است. حالا که 10 دلار پول نقد در صندوق پول استارباکس قرار دارد، شما دیگر به آن پول دسترسی ندارید و نمی توانید همان 10 دلار را در جای دیگری صرف خرید دیگری کنید. مگر اینکه آن را بدزدید!
اما بیت کوین یک پول دیجیتال است و ماهیت فیزیکی ندارد. از این رو در معاملات امکان کپی کردن و انجام مجدد آن وجود دارد و این احتمال وجود دارد که همان بیت کوین را بتوان دوبار خرج کرد. در مثال استارباکس، شما پول نقد می دهید، بنابراین پرداخت فورا توسط یک انسان دیگر تایید می شود. اما با استفاده از ارز دیجیتال مانند BTC، این مکانیسم دیجیتالی انجام می شود و اگر در حال تایید پرداخت شما باشد، هر کسی می تواند فقط آن پول دیجیتال را کپی کرده و به جای دیگری بپردازد. اینجاست که تخلف صورت می گیرد. بیت کوین اولین ارز دیجیتالی بود که ادعا کرد می تواند این مشکل را حل کند.
بیت کوین چگونه مشکل دوبار خرج کردن را حل می کند؟
بیت کوین از سیستمی استفاده کرد تا بتواند تراکنش ها را در آن ثبت کرد. در این سیستم تراکنش ها باید حتما به صورت زنجیروار و در یک دفتر کل توزیع شده ثبت شوند. ( این همان بلاکچین است که می توانید برای مطالعه کامل به اینجا مراجعه کنید.) این سیستم یک دفتر ثبت دیجیتال است که مانند سیستم های سنتی رکورد تمام تراکنش ها را در خود ذخیره می کند. برای مثال برای بیت کوین از سال 2009 تا بحال تمام تراکنش ها موجود است. اطلاعات داخل بلوک ها قرار می گیرد. هر 10 دقیقه یک بلوک به دفترکل اضافه می شود و همه گره ها در شبکه بیت کوین یک کپی از این دفتر جهانی دارند.
خب شاید سوال کنید چگونه این موضوع از دوبار خرج کردن جلوگیری می کند؟
فرض کنیم شما یک بیت کوین دارید که می خواهید دو برابر آن را خرج کنید. شما تراکنش را با یک شخص انجام دادید، آن را امضا کردید و می خواهید همان بیت کوین را به آدرس دیگری بفرستید تا شخص دیگری را گول بزنید. هر دو تراکنش ها به مجموعه تراکنش های تایید نشده وارد می شوند. اما فقط اولین تراکنش شما تایید شده و توسط ماینرها در بلوک بعدی قرار می گیرد. تراکنش دوم شما تایید نخواهد شد چرا که ماینرها آن را نامعتبر دانستند، بنابراین از شبکه بیرون کشیده خواهد شد.
اگر دو ماینر هم زمان دو تراکنش شما را تایید کنند. در این شرایط چه اتفاقی می افتد؟
در اینصورت تراکنشی که حداکثر تعداد تاییدیه های شبکه را دریافت کند قبول خواهد شد و داخل بلوک قرار می گیرد و دیگری دور ریخته خواهد شد. حالا شاید تراکنش اول که شما برای خرید استفاده کرده بودید و تراکنش درست بوده مورد تایید شبکه قرار نگیرد و این به ضرر شخص دوم خواهد بود. بنابراین همیشه پیشنهاد می شود که حداقل تا 6 بلوک بعدی برای تایید قطعی منتظر بمانید. این تایید و ایجاد بلوک یعنی تراکنش هایی بعد از تراکنش شما انجام شده و همه توسط ماینرها تایید شده، به دلیل اینکه تمام تراکنش هایی که بعد از تراکنش شما اضافه شده اند غیر قابل بازگشت و از نظر محاسباتی غیر ممکن است که به عقب برگردند، مطمئن خواهید شد که همه چی درست است. با مفهوم دوبار خرج کردن و راهکار جالب بیت کوین برای جلوگیری از آن آشنا شدید، حمله دوبار خرج کردن به شبکه از طریق حمله 51 درصد می تواند اتفاق بی افتد. البته تاکنون در تاریخ 8 ساله بیت کوین، چنین حمله ای موفقیت آمیز نبوده است.