دوبار خرج کردن چیست؟ – توضیح دابل اسپندینگ به زبان ساده
بیت کوین بهعنوان اولین رمزارز توانست راهکاری کاربردی برای مشکل دوبار خرج کردن ارائه دهد. البته خطر دابل اسپندینگ یا همان دوبار خرج کردن برای رمزارزها تحت شرایطی خاص همواره وجود دارد. هر گاه شما بتوانید یک کوین را بیش از یک بار خرج کنید Double spending روی میدهد. بیت کوین برای حل مشکل دوبار خرج کردن از بلاک چین و الگوریتم اثبات کار بهره میگیرد. بلاک چین از زنجیره بلاکهایی متصل تشکیل شده است که اطلاعات تراکنشها را بهصورت رمزنگاری شده در خود ذخیره میکنند. در این مطلب به دابل اسپندینگ و موضوعاتی مرتبط با آن خواهیم پراخت.
دوبار خرج کردن چیست ؟
«دوبار خرج کردن» (Double Spending) به احتمال و ریسک خرج شدن رمزارزی بیش از یک بار گفته میشود. دابل اسپند یا دابل اسپندینگ نیز به همین معنی است. دابل اسپندینگ ممکن است زمانی روی دهد که شخص یا گروهی خلافکار بتوانند اطلاعات نادرست و جعلی را تحت شرایطی داخل زنجیره بلاک قرار دهند. «دابل اسپندینگ» ممکن است تحت شرایطی انجام شود ولی معمولا نسبت به کلاهبرداری و سرقتهای دیگری که در حوزه رمزارزها وجود دارد از احتمال پیشآمد کمتری برخوردار است.
دابل اسپندینگ به زبان ساده
هنگامی که برای خرید به مغازهای مراجعه میکنید، هنگام پرداخت ممکن است به اختیار خود از پول نقد یا از کارت اعتباری استفاده کنید. با دادن پول نقد به شخص فروشنده شما کالای خود را دریافت میکنید. به دلیل اینکه پول کاغذی حالت فیزیکی دارد شما نمی توانید آن را دو بار خرج کنید. اما اگر بتوانید کاری کنید تا وقتی از کارت اعتباری خود استفاده میکنید، میزان اعتبار آن تغییر نکند در این حالت شما ممکن است بتوانید از اعتبار کارت خود بیش از یک بار استفاده کنید. این موضوع در حوزه ارزهای دیجیتال نیز ممکن است پیش بیاید که به آن دوبار خرج کردن یا دابل اسپندینگ میگویند. در این حالت شما توکن خود را بیش از یک بار خرج میکنید.
مثال هایی برای دوبار خرج کردن
دوبار خرج کردن تنها در بلاک چین مطرح نمیشود. به عنوان مثال شما اگر بلیت کنسرت یا مکان تفریحی خاصی را بتوانید به گونهای کپی کنید که با یک بلیت یا اعتبار بتوانید چندین مرتبه از خدمات آن استفاده کنید، دوبار خرج کردن اتفاق میافتد. در مثالی دیگر اگر با هک مجموعهای که خدمات پارکینگ به اتومبیلها ارائه میدهد این امکان را برای خود فراهم آورید که بدون هزینه اعتبار کارت ورود خود را شارژ کنید نیز نوعی از دابل اسپندینگ را خواهیم داشت. در واقع بیت کوین با استفاده از تکنولوژی بلاک چین توانست از دابل اسپندینگ جلوگیری کند.
دابل اسپندینگ در بانک داری
دابل اسپندینگ برای کارت اعتباری نیز ممکن است اتفاق بیافتد. بانکها وظیفه دارند تا قبل از انجام تأیید تراکنشها ابتدا از صحت حساب بانکی و موجودی داخل آن اطمینان حاصل نمایند. البته بانکداری نهادی متمرکز است و تمامی اطلاعات حسابهای کاربران در سرور یا کامپیوتری مرکزی ذخیره شده است.
نهادهای متمرکزی مثل بانکها نسبت به محیطهای غیرمتمرکز بلاکچینی نیاز به پروتکلهای پیچیده برای حفاظت و پردازش اطلاعات ندارند. ممکن است در نگاه نخست نظارت نهادی واسط در بسترهای متمرکز از نظر امنیت مطلوب به نظر آید اما با توجه به اینکه کل اطلاعات در یک سرور قرار دارد، احتمال هک و سرقت اطلاعات و سرمایه افراد بیشتر است.
Double spending در رمزارزها
شما وقتی در فضای مجازی به عنوان مثال ایمیلی ارسال میکنید بهراحتی میتوانید تصویری از ایمیل را در کامپیوتر خود ذخیره کنید. رمزارزها نیز به دلیل اینکه در فضای مجازی رد و بدل میشوند اگر مکانیزمی وجود نداشته باشد که از دو بار خرج شدن آنها جلوگیری کند، بهراحتی همانند ایمیل و دیگر تصاویر اینترنتی قابل کپیبرداری هستند. در ادامه به نحوه حل مشکل دابل اسپندینگ در بلاک چین میپردازیم.
حل مشکل دوبار خرج کردن توسط بلاک چین
برای اینکه درک درستی از چگونگی حل مشکل دابل اسپندینگ در بلاک چین پیدا کنیم. در ابتدا باید اطلاعاتی از نحوه عملکرد بلاک چین داشته باشیم. هر بلاک در بلاک چین حاوی اطلاعات تراکنشهای ذخیره شده در بلاک و هش بلاک قبلی است. هش بلاک قبلی که در هر بلاک وجود دارد باعث میشود تا بلاکها بهصورت زنجیروار بههم متصل شوند.
هیچ نهاد متمرکزی بر روی بلاک چین کنترل ندارد. بنابراین برای اینکه بلاک چین بتواند تراکنشهای درست را از غلط تشخیص دهد نیاز دارد تا نودهای شبکه تحت مکانیزم اجماعی خاص تراکنشها را تأیید کنند. در واقع مکانیزم اجماع در بلاک چین از مشکلاتی نظیر دوبار خرج کردن جلوگیری میکند.
دوبار خرج کردن در بیت کوین
بیت کوین در واقع با حل مشکل دابل اسپندینگ توانست خود را به عنوان واسطهای برای پرداخت معرفی کند. البته مشکل دوبار خرج کردن برای بیت کوین نیز تحت شرایطی خاص وجود دارد. در حالت عادی با توجه به ساز و کاری که بسترهای بلاکچینی دارند دابل اسپندینگ اتفاق نمیافتد.
تراکنشهای بیت کوین توسط نودها مورد بررسی قرار میگیرد و در صورتیکه اکثریت نودهای شبکه بر سر آن به توافق برسند به زنجیره بلاک اضافه میشود. بنابراین اقدام برای هک و یا دستکاری چنین سیستم غیرمتمرکزی نیاز به صرف انرژی بالایی دارد که عملا مقرون به صرفه نیست.
چگونه بیت کوین مشکل دابل اسپندینگ را حل کرده است ؟
بلاک چین بیت کوین نوعی دفتر کل توزیع شده است. اطلاعات در دفتر کل توزیع شده بین تمامی نودهای شبکه توزیع شده است. هر تراکنشی که در شبکه بیت کوین انجام میشود باید به تأیید نودهای دیگر نیز برسد. این نودها توسط الگوریتم اجماع اثبات کار (PoW) تمامی اطلاعات شبکه و تراکنشهای موجود را پردازش و ذخیره میکنند. بنابراین هرگونه مغایرت در تراکنشهای شبکه توسط کل نودهای شبکه رصد خواهد شد و به این ترتیب از هرگونه دوبار خرج کردن در شبکه جلوگیری میشود.
آیا بیت کوین کپی می شود ؟
ممکن است این سوال برای کاربران شبکه بیت کوین پیش بیاید که آیا میشود بیت کوین را کپی کرد. در جواب باید به این نکته اشاره کرد که تمامی تراکنشها در شبکه بلاک چین بیت کوین بهصورت رمزنگاریشده و هششده در بلاکهایی متصل بههم در زنجیره بلوک قرار میگیرند. هر بلاک در بلاک چین هش بلاک قبل از خود را در زنجیره بلاک دارد. بنابراین کوچکترین تغییر در اطلاعات ذخیره شده در آنها باعث تغییر در هش تمامی بلاکها خواهد شد. بنابراین در حالت عادی نمیتوان بیت کوین را کپی و آن را دو بار خرج کرد.
دوبار خرج کردن تحت چه شرایطی اتفاق می افتد ؟
دوبار خرج کردن معمولا زمانی روی میدهد که حملهای به شبکه انجام شود اینگونه حملات هر کدام تحت شرایطی خاص ممکن است صورت بگیرند. دابل اسپندینگ در بسترهای بلاکچینی که زیرساختهای ایمنتری دارند احتمال وقوع کمتری دارد. برخی از حملههایی که ممکن است موجب دابل اسپندینگ شوند را در فهرست زیر مشاهده میکنید.
- حمله ۵۱ درصدی
- حمله فینی (Finney Attack)
- «حمله رقابتی» (Race Attack)
- «حمله کسوف» (Eclipse Attack)
حمله 51 درصدی چیست ؟
اگر توان عدهای از ماینرهای شبکه به بیش از 50 درصد هش ریت شبکه برسد، در این صورت این ماینرها میتوانند کنترل شبکه را بهدست بگیرند که به این حالت حمله 51 درصدی یا هک 51 درصدی میگوییم. شبکه بیت کوین از الگوریتم اثبات کار استفاده میکند. طبق این الگوریتم ماینری که هش ریت بالاتری داشته باشد احتمال اینکه زودتر از ماینرهای دیگر بتواند به جواب مساله برسد و بلاک جدید را تولید کند بالاتر میرود.
شبکه به ماینرها برای تولید بلاک جدید بیت کوین پاداش میدهد. بنابراین ماینرها سعی میکنند تا آنجا که بتوانند قدرت هش ریت خود را افزایش دهند. یکی از این راهها ایجاد استخرهای ماینینگ است. نودهای شبکه با روی هم قرار دادن قدرت محاسباتی خود در استخرهای ماینینگ شانس خود را برای گرفتن پاداش افزایش میدهند.
توجه به این نکته ضروری است که اگر نودهایی که با هم در استخرهای ماینینگ متحد شدهاند بتوانند بیش از 50 درصد از هش ریت شبکه را بدست آورند، حمله 51 درصدی روی میدهد. در این صورت این نودها میتوانند تراکنشها را به میل خود تغییر دهند که در نتیجه آن دابل اسپندینگ خواهیم داشت.
Finney Attack چیست ؟
«حمله فینی» (Finney Attack) نوعی حمله به شبکه بیت کوین از نوع دابل اسپندینگ است. به احترام شخصی به نام «هال فینی» (Hal Finney) که برای اولین بار به احتمال وقوع این نوع از حملات به شبکه بیت کوین اشاره کرد، این حمله، Finney attack نامیده میشود. لازم به ذکر است هال فینی به عنوان اولین شخصی است که اولین تراکنش بیت کوین را از طرف ساتوشی ناکاموتو (خالق بیت کوین) دریافت کرده است.
Finney attack چه زمانی اتفاق میافتد؟
این حمله زمانی روی میدهد که شخصی که ماینر است در ابتدا تراکنشی را به آدرسی مشخص ارسال کند. این آدرس به خود شخص تعلق دارد و در این تراکنش تعداد مشخصی کوین را شخص ماینر به آدرس ارسال میکند. بعد از این ارسال این شخص تراکنش را در بلاکی که تولید کرده قرار میدهد ولی بلاک را به شبکه ارسال نمیکند. بلکه در عوض خریدی انجام میدهد. این خرید را دقیقا با همان تعداد کوین ارسالی قبلی انجام میدهد.
بعد از اینکه ماینر خرید را انجام داد، سپس بلاک حاوی تراکنش اولیه را به شبکه ارسال میکند. در این حالت بلاک شخص کلاهبردار تأیید و بلاک مربوط به تراکنش خرید باطل میشود. اگر شخص فروشنده - که از ماینر کلاهبردار به ازای خدمات یا محصول خود کوین دریافت کرده است - مدتی برای گرفتن تأیید تراکنش صبر کند و بعد از تأیید شدن تراکنش آن را قبول کند، ماینر کلاهبردار قادر نیست کوین را دو بار خرج کند و دابل اسپندینگ روی نمیدهد.
لازم به ذکر است برای انجام دوبار خرج کردن از نوع Finney attack زمانبندی بسیار اهمیت دارد. برای جلوگیری از اینگونه کلاهبرداریها هنگام قبول و دریافت کوین قبل از انجام معامله حتما باید چندین بلاک منتظر بمانیم تا از تأیید شدن تراکنش مطمئن شویم.
Race attack چیست ؟
یکی از روشهایی که برای دابل اسپندینگ استفاده میشود «حمله رقابتی» (Race attack) نام دارد. این نوع حمله در واقع رقابتی است میان دو تراکنش که تقریبا در یک زمان و با مقداری برابر ارسال میشوند. هدف شخص کلاهبردار در این روش این است که قبل از اینکه تراکنش اول در بلاک چین ثبت شود تراکنشی دیگر را با آن به طریقی جابهجا کند که کوین به کیف پول شخص کلاهبردار ارسال شود.
در این روش معمولا تراکنشی که کلاهبردار میخواهد به کیف پول خود ارسال کند، با کارمزدی بالاتر انجام میشود. بنابراین تراکنش با کارمزد بالاتر توسط ماینرهای شبکه انتخاب میشود و تراکنش قبلی باطل میشود.
Eclipse Attack چیست ؟
«حمله کسوف» (Eclipse Attack) نوعی از حملههای سایبری است که در آن هکرها محیطی مصنوعی و دستکاری شده پیرامون نود مورد نظر تشکیل میدهند. در این حمله هکرها با دادن اطلاعات نادرست، ارتباط نود مورد نظر را از بقیه نودهای شبکه قطع میکنند. با این روش هکرها میتوانند خواستههای خود را از طریق نود مورد نظر انجام دهند. یکی از مواردی که از طریق حمله کسوف میتوان انجام داد دوبار خرج کردن است.
جمعبندی
دابل اسپندینگ به معنای بیش از یک بار یا دوبار خرج کردن است و در حوزههای مختلف مالی احتمال رخداد آن وجود دارد. مثالهای مختلفی از دوبار خرج کردن را میتوان ذکر کرد که به برخی از آنها در ابتدای این مطلب اشاره شد. تکنولوژی بلاکچین امکانی را فراهم کرده تا حد امکان از دوبار خرج کردن جلوگیری شود. دوبار خرج کردن در بیت کوین نیز تحت شرایطی روی میدهد. در این مطلب بعد از توضیح نحوه حل مشکل دوبار خرج کردن توسط بلاک چین، حملههای مختلفی که منتهی به دابل اسپندینگ میشود توضیح داده شده است.