حملهی دوبار خرج کردن (Double spending attack) چیست؟
بیت کوین روز به روز بیشتر در جهان مورد استفاده قرار میگیرد. چیزی که بستر این ارزدیجیتال را فراهم میکند بلاکچین است.
شاید برای شما تعجبآور باشد که حتی قبل از بیت کوین، تلاش برای ایجاد یک سیستم پولی دیجیتال وجود داشته است. اما تمام این تلاشها شکست خورده است؛ زیرا یک مشکل آشکار با پول دیجیتال این است که تراکنشها را می توان دوبار کپی و در نتیجه دو بار آن را خرج کرد. بیت کوین قادر به مقابله با حملهی «دوبار خرج کردن» است و این موضوع را حل کرده است.
مفهوم سادهی «حملهی دو بار خرج کردن»
دوبار خرج کردن به معنی خرج کردن یک پول در دو مرتبه است.
با این مثال این مفهوم را بهتر درک خواهید کرد:
تصور کنید که شما وارد کافیشاپی میشوید و ۵ دلار برای قهوه خرج میکنید؛ حال دیگر شما نمیتوانید با همان ۵ دلار یک قهوه دیگر بخرید مگر اینکه آن ۵ دلار را بدزدید!
وقتی شما ۵ دلار بابت قهوه خرج میکنید سرویسدهندهی کافی شاپ پرداخت شما را تائید میکند در عوضِ ۵ دلار به شما قهوه میدهد.
ولی بیت کوین ارزدیجیتال است و پول فیزیکی نیست پس میتوان آن را کپی کرد و دوباره از آن استفاده کرد! احتمال این وجود دارد که یک واحد بیت کوین توسط یک نفر دوبار خرج شود؛ اما چطور؟
در مثال بالا وقتی شما ۵ دلار را پرداخت میکنید، توسط سرویسدهندهی کافی شاپ تائید میشود ولی اگر در شبکهی بیت کوین مکانیسم تائید از دست رفته باشد احتمالا منجر به «دوبار خرج کردن» شود! هر کسی میتواند پول دیجیتال را کپی کند و جای دیگری خرج کند.
بیت کوین مشکل «دوبار خرج کردن» را حل کرده است
بیت کوین مشکل حملهی دوبار خرج کردن را با یک مکانیزم تائید تراکنش و و ثبت داراییها در یک دفترکل به نام بلاک چین حل میکند ؛ که شبیه به سیستم پول سنتی است.
بلاکچین بیت کوین همهی تراکنشها، از اولین تراکنشی که سال ۲۰۰۹ ثبت شد و تراکنشهایی که تا الان انجام میشود را نگهداری میکند.
در هر ۱۰ دقیقه یک بلاک (تعداد کثیری تراکنش) به دفتر کل اضافه میشود؛ و همهی گرهها (Node) در شبکهی بیت کوین کپی از این دفتر کل را دارند (بلاکچین).
بیت کوین چگونه در برابر «دوبار خرج کردن» مقابله میکند؟
باز هم برای درک سادهی مفاهیم برای شما مثالی میزنیم:
فرض کنید شما یک بیت کوین دارید و این بیت کوین را برای فردی ارسال میکنید و حالا دوباره قصد برای ارسال این بیت کوین برای فرد دیگری دیگری دارید و اقدام به تقلّب میکنید.
هر دو تراکنش شما وارد استخرهای استخراج میشوند؛ تراکنش اول شما در صف تائید توسط ماینرها (استخراج کنندگان بیت کوین) قرار میگیرد ولی فقط تراکنش اول شما تائید میشود و در بلاک بعدی قرار میگیرد سپس تراکنش بعدی شما توسط ماینرها غیرمعتبر میشود و از شبکه خارج میگردد زیرا در دفترکل ثبت شده است که کیف پول شما دارای چقدر بیت کوین است.
صبر کنید…اگر هر دو تراکنش همزمان با هم به دست ماینرها برسد چه میشود؟
اگر همزمان با هم دو تراکنش وارد شوند، تراکنشی که بیشترین تائید (Coinfirm) را داشته باشد انجام میشود و برای فروشندهی دوم تراکنش انجام نمیشود.
شاید بگویید این برای فروشندهی دوم عادلانه نیست که تراکنشش از شبکه خارج شود؛ ولی این اتفاق ممکن است بیفتد !
برای همین است که به فروشندهها توصیه میشود حداقل برای ۶ تائید صبر کنند.
در اینجا «۶ تائید» به این معناست که ۶ بلاک دیگر هر یک شامل چندین تراکنش پس از آن اضافه شدند. «تائیدها» چیزی جزء اضافه شدن بلاک بیشتر به زنجیرهی بلاک چین نیستند. هر تراکنش و بلاک با محاسبات پیچیدهی ریاضی به بلاکها و تراکنشهای قبلی خود وابسته است.
پس تمام این تائیدها بر روی بلاکها به صورت زنجیرهای ذخیره میشوند و برگشتپذیری هر یک را غیر ممکن میکند.
پس در صورتی میتوان این سکه را دو بار خرج کرد که فرستنده تمام معاملات را در ۶ بلاک که پس از معامله آنها اضافه شده است، معکوس کند؛ که به صورت محاسباتی غیرممکن است. پس اگر فروشنده به این تعداد از تائید رسید میتواند امید داشته باشد که خریدار دو بار بیت ۳کوین را خرج نکرده است.
چطور حملهی «دو بار خرج کردن» به وقوع میپیوندد؟
۱- حملهی ۵۱ درصدی
اگر یک نفر، ۵۱ درصد از «قدرت هش» شبکه را در دست بگیرد میتواند منجر به «دو بار خرج کردن» شود.
تا کنون چنین حملهای در بیت کوین رخ نداده است؛ زیرا کنترل ۵۱ درصد از شبکه قدرت سخت افزاری بسیار بالایی نیاز دارد. این قدرت بستگی به سختی شبکه (Difficulty), مصرف برق و سخت افزار دارد که انجام چنین کاری را غیرممکن میکند.
۲- حملهی رقابتی
وقتی شما سریع و همزمان یک بیت کوین را به دو آدرس میفرستید مسلماً یکی از آن تائید نمیشود. حال شما به عنوان یک فروشنده که منتظر دریافت بیت کوین میباشید اگر منتظر ۶ تائید نباشید، احتمال (ناچیزی) وجود دارد که بیت کوین به آدرس کیف پول شما وارد نشود. برای همین است که به فروشندهها توصیه میشود حداقل برای ۶ تائید صبر کنند.
در تاریخ ۹ سالهی بیت کوین چنین حملاتی ناموفق بوده است. مکانیسم بیت کوین برای نگهداری یک مبادله معامله جهانی براساس تائیدیه هنوز مورد فریب قرار نگرفته است.
درود
مقاله بسیار مفید و ارزنده ای بود
احتمالا متن نیاز به ویرایش داره شاید هم من اشتباه میکنم.