دوبار خرج کردن
تیم بحث آراد | 1398.10.21

دوبار خرج کردن به چه معناست؟

یکی از مشکلاتی که ارزهای دیجیتالی با آن روبرو هستند مسئله دوبار خرج کردن است. در این پست قصد داریم به صورت کامل به بررسی آن بپردازیم و نحوه پیشگیری از بروز آن را بیان کنیم.

دوبار خرج کردن (Double Spending) تلاشی برای استفاده دوباره از یک رمزارز بوسیله ایجاد معاملات تکراری است.  این مشکل یکی از موانع اصلی است که یک ارز دیجیتال باید آن را حل کند تا از بروز سوء استفاده جلوگیری کند و ارزش و اعتماد را در جامعه حفظ کند.

بیت کوین توانسته از طریق استفاده از لجر عمومی این مشکل را رفع کند. در لجر عمومی مشارکت کنندگان با استفاده از مکانیزم اثبات کار به صورت همیشگی بر شبکه نظارت دارند.

البته این یک تعریف مختصر از دوبار خرج کردن بود برای کسب اطلاعات کامل تر توصیه می شود به ادامه متن توجه کنید.

معنای دوبار خرج کردن

از آنجائیکه معاملات بیت کوین به صورت دیجیتالی انجام می شوند، امکان معاملات کپی شده در آن وجود دارد. مسئله کپی-پیست یکی از نقاط ضعف ارزهای دیجیتالی می باشد. موارد ایجاد کپی ارزهای دیجیتالی شامل:

  1. می توانید یک سکه را کپی کنید و آن را برای شخصی ارسال کنید درحالیکه سکه اصلی را در اختیار دارید.
  2. می توانید به صورت همزمان سکه یکسانی را برای دو نفر بفرستید.
  3. می توانید پس از انجام معامله و دریافت کالا معامله را برگردانید و پول پرداختی را دریافت کنید، یعنی بدون پرداخت پول صاحب کالا شوید.

مشکل دوبار خرج کردن یک مشکل عمده برای همه ارزهای دیجیتالی است. این مشکل می تواند بر موجودی عرضه پول تأثیر بگذارد که منجر به کاهش ارزش ارز و عدم اطمینان به آن خواهد شد.

جلوگیری از Double Spending:

دو راه برای مقابله با دوبار خرج کردن وجود دارد (متمرکز و نامتمرکز).

راهکار متمرکز:

این راهکار ساده و براساس یک قدرت مورد اطمینان می باشد که نسخه ای از بالانس حساب هر شخصی در سیستم نگهداری می کند.

برای مثال، وقتی آلیس برای باب پول ارسال می کند، معامله برای یک واحد مورد اطمینان (مثلاً بانک) فرستاده می شود. آن واحد لجر را بررسی می کند تا مطمئن شود که آلیس پولی که می خواهد برای باب بفرستد را دارد. اگر این چنین باشد، واحد مورد امکان ارسال انتقال پول را می دهد.

راهکار نامتمرکز:

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

جلوگیری از معاملات خلافکارانه:

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

یعنی اگر آلیس یک بیت کوین برای باب ارسال کند، هر کامپیوتری که کپی از بلاک چین دارد (نود) تاریخچه معاملات آلیس را برای اطمینان از داشتن این مقدار بیت کوین تأیید می کند.

اگر آلیس تلاش کند تا با فریبکاری بیت کوین خود را بالاتر نشان دهد، بسرعت توسط نودها شناسایی می شود.

جلوگیری از معاملات همزمان:

اگر آلیس سکه های ثابت را همزمان برای دو نفر بفرستد چه اتفاقی خواهد افتاد؟

فرض کنید 50 درصد از نودها در ابتدا معامله A و بقیه معامله B را دریافت کرده باشند. چطور می توان تشخیص داد که کدام معتبر و کدام نامعتبر است؟ پاسخ ساده است، معامله ای که زودتر وارد لجر شده است معتبر است.

به همین دلیل توصیه می شود تا قبل از آنکه یک معامله بیت کوین را تمام شده فرض کنید حداقل یک تأیید دریافت کنید.

در مورد ترتیب معاملات در بیت کوین، بیت کوین از یک مکانیزمی به نام POW (Proof of Work) استفاده می کند. این مکانیزم نقش افرادی را که لجر معاملات بیت کوین را آپدیت می کنند را توصیف می کند. در غیاب یک واحد مرکزی باید بدانید چه افرادی قصد ایجاد تغییر در لجر معاملات را خواهند داشت. فرآیند بروزرسانی لجر معاملات را استخراج بیت کوین می گویند.

اگر فرآیند استخراج برای معامله A و B همزمان باشد چه اتفاقی می افتد؟

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

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

پیشگیری از معاملات معکوس:

نوعی از حمله دوبار خرج کردن که به حمله 51%  معروف است وقتی اتفاق می افتد که یک واحد بیش از 50 درصد از قدرت استخراج شبکه را در دست بگیرد و می تواند به صورت کارآمد تشخیص دهد کدام نسخه از لجر قانونی است.

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

تنها راه جلوگیری از حمله 51% اطمینان از عدم تمرکز شبکه می باشد همچنین شبکه باید قدرت محاسباتی کافی داشته باشد تا امکان تجمع نرخ هش را کاهش دهد.

در مورد بیت کوین، احتمال حمله 51% بسیار ضعیف است، اما با سکه های کمتر، این حمله اتفاق افتاده است.

Legit Double Spending:

یکی از مدل های دوبار خرج کردن، جایگزینی با هزینه یا RBF می باشد. RBF تابعی است که در کیف پول های بیت کوین خاص وجود دارد (مثل کیف پول اتریوم). این تابع به شما اجازه می دهد تا معاملاتی را که هنوز تأیید نشده است را دوباره منتشر کنید (rebroadcast)، تا بتوانید تأیید آن را سریعتر دریافت کنید.

در برخی موارد، معاملات بیت کوین توسط هزینه شبکه بسیار پائین ارسال می شوند تا ماینرها را ترغیب به انجام آن کنند. این فرآیند منجر به در انتظار ماندن طولانی معامله شما در صف تأیید می شود.

RFB به شما اجازه می دهد تا بتوانید معاملات را با هزینه بالاتر دوباره منتشر کنید، به صورت مؤثر سعی در دوبار خرج کردن پول شما می کند، بنابراین ماینرها معامله جدید را انتخاب می کنند و معامله قدیمی کنسل می شود.

نتیجه گیری:

دوبار خرج کردن یکی از مشکلات عمده در مورد ارزهای دیجیتالی می باشد که باید برطرف شود. خوشبختانه، به نظر می رسد، Satoshi Nakamoto، مؤسس بیت کوین، مکانیزمی را برای جلوگیری از بروز آن حتی در یک شبکه نامتمرکز کرده است.

اگر همچنان سؤالی دارید می توانید با ما در میان بگذارید.