ما هو الإنفاق المزدوج؟
الإنفاق المزدوج هو مشكلة محتملة الحدوث في النظام النقدي الرقمي عند إنفاق نفس المبلغ من الأموال وإرساله إلى شخصين في وقت واحد. دون اتخاذ أي تدابير مضادة كافية، فإن البروتوكول الذي يعجز عن توفير حل لهذه المشكلة، سيكون بروتوكولاً ضعيفاً – فلا توجد طريقة يستطيع المستخدمون من خلالها التحقق من أن الأموال التي حصلوا عليها لم يتم إنفاقها مرة أخرى.
عندما يتعلق الأمر بالنقود الرقمية، من الضروري للغاية التأكد من عدم نسخ وحدات معينة. قد يُضعف ذلك النظام بأكمله إذا حصلت أليس على 10 وحدات، وتم نسخ ولصق الوحدات 10 مرات لتكتشف أن بحوزتها 100 وحدة. وبالمثل، لن تنجح هذه الطريقة إذا قامت بإرسال الوحدات العشر نفسها إلى كل من بوب وكارول في وقتٍ واحد. لذلك، بالنسبة لاستخدام الأموال الرقمية، يجب تبني آليات تمنع مثل هذه السلوكيات.
كيف يمكن منع الإنفاق المزدوج؟
النهج المركزي
يعد تطبيق الأسلوب المركزي أيسر بكثير من البدائل اللامركزية. وعادةً ما يتضمن ذلك وجود مشرف لإدارة النظام والتحكم في إصدار الوحدات وتوزيعها. ويعد نظام eCash الذي قام بتطويره ديفيد شوم مثالاً جيداً على الحلول المركزية لمشكلة الإنفاق المزدوج.
في هذا السياق، إذا أراد المستخدم (لنطلق عليه اسم دان) تلقي 100 دولار في صورة نقود رقمية، فينبغي عليه إخطار المصرف أولاً. شريطة أن يكون لديه رصيد في حسابه الخاص، سيقوم بإصدار عدد عشوائي ( أو أكثر، للفئات الأصغر). لنفترض أنه سيقوم بإصدار خمسة أعداد، قيمة كل منها 20 دولار. لمنع المصرف من تتبع وحدات نقدية معينة، سيقوم دان بالتعتيم على الأرقام العشوائية عن طريق إضافة عناصر إخفاء لكل رقم.
بعد ذلك، يقوم بتحويل هذه البيانات إلى المصرف الذي سيخصم 100 دولار من حسابه، ويُوقع رسائل تؤكد قابلية استرداد كل جزء من المعلومات الخمسة مقابل 20 دولار. والآن، يستطيع دان إنفاق الأموال التي أصدرها المصرف، ويتجه إلى مطعم إرين ويشتري وجبة تبلغ تكلفتها 40 دولار.
يستطيع دان إزالة عامل الإخفاء للكشف عن الرقم العشوائي المرتبط بكل عملة رقمية "ورقة نقدية"، والتي تُستخدم كمعرف فريد لكل وحدة (تشبه إلى حد كبير الرقم المُسلسل ). ثم يكشف عن رقميين منهما لـ إرين، والتي يتعين عليها استردادهم على الفور بهدف منع دان من إنفاقهم مرة أخرى عند تاجر آخر. سيقوم المصرف بالتحقق من صحة التوقيعات، وفي حالة التأكد من صحة كل شيء، سيتم إضافة 40 دولار إلى حساب إرين.
يتم الآن حرق النقود المستخدمة، ويجب إصدار المزيد منها إذا أرادت إرين إنفاق رصيدها الجديد بنفس الطريقة.
قد يكون نظام eCash، من شوم، ذو فائدة بالنسبة للتحويلات الخاصة. ولكنه لا يصمد حيث إن المصرف يُعتبر نقطة فشل محورية. فالورقة النقدية الصادرة لا قيمة لها في حد ذاتها لأنها تستمد قيمتها فقط من رغبة المصرف في استبدالها بدولارات. وبذلك يكون العملاء تحت رحمة المصرف ويجب عليهم الاعتماد على سمعته الحسنة لضمان استخدام الأموال. وهذه بالتحديد المشكلة التي تهدف العملة الرقمية لمعالجتها.
النهج اللامركزي
عدم إنفاق الأموال مرتين في منظومة البلوكشين مع عدم وجود مُشرف يُمثل تحدياً كبيراً. ينبغي على المشاركين الذين لديهم نفس الصلاحيات التنسيق وفق مجموعة من القواعد التي تمنع الاحتيال وتحفز جميع المستخدمين على التصرف بأمانة.
لنعيد استخدام سيناريو المطعم كمثال. عاد دان للمطعم مرة أخرى، ولكنه لاحظ ملصق على النافذة يوضح قبول معاملات البيتكوين. ولأنه استمتع بتناول الوجبة المرة السابقة، سيقوم بطلبها مرة أخرى بتكلفة 0.005 BTC.
كما أوضحنا سابقاً، تكون المعاملة صحيحة فقط في حالة تضمينها في كتلة تم تأكيدها. قبول المعاملات غير المؤكدة يشبه كثيراً قبول مبلغ 40 دولار في نظام eCash المذكور في المثال السابق، دون سحب الأموال من المصرف مباشرةً – مما يتيح للمرسل إمكانية إنفاقها في مكان آخر. لذلك، يُنصَح بأن تنتظر إرين 6 تأكيدات للكتلة على الأقل (حوالي ساعة واحدة تقريباً) قبل قبول المدفوعات من دان.
الإنفاق المزدوج في البيتكوين
صُممت عملة البيتكوين بعناية لتمنع حدوث هجمات الإنفاق المزدوج، على الأقل عند استخدام البروتوكول على النحو المتوقع. أيّ، إذا انتظر الأفراد تأكيد المعاملات في إحدى الكتل، فإن ذلك يُصعِّب الأمر على المرسل بحيث لا يقوم بإلغاء المعاملة. من أجل القيام بذلك، قد يحتاج إلى "إبطال" سلسلة البلوكشين، الأمر الذي يتطلب مقدار غير واقعي من القدرة على التجزئة.
مع ذلك، هناك عدد صغير من هجمات الإنفاق المزدوج التي تستهدف الأطراف التي تقبل معاملات غير مؤكدة. فعند القيام بعمليات شراء بمبالغ قليلة، على سبيل المثال، قد لا يرغب التاجر في انتظار تضمين المعاملات في إحدى الكتل على السلسلة. ولا يستطيع مطعم وجبات سريعة مزدحم الانتظار حتى تقوم الشبكة بمعالجة كل عملية شراء. لذلك، إذا قام العمل التجاري بتفعيل المدفوعات "الفورية"، فإنه يجعل نفسه عُرضة إلى هجمات الإنفاق المزدوج. قد يطلب شخص ما ساندويتش برجر ويدفع مُقابله، ثم يرسل الأموال نفسها إلى العنوان الخاص به على الفور. وبسداد رسوم مُعالجة أعلى، من المرجح تأكيد هذه المعاملة الجديدة أولاً، وبالتالي إلغاء المعاملة السابقة.
هناك ثلاث طرق شائعة لتنفيذ هجمات الإنفاق المزدوج:
- هجمات بنسبة 51%: عندما تتمكن جهة أو مؤسسة من التحكم في أكثر من 50% من معدل التجزئة، سيكون بإمكانها استبعاد أو تعديل ترتيب المعاملات. ليس من المرجح حدوث هذا الهجوم على شبكة البيتكوين، ولكنه حدث في شبكات أخرى.
- هجمات التحويل: عند بث معاملتين متعارضتين على التوالي باستخدام الأموال نفسها –ولكن يتم تأكيد معاملة واحدة فقط. ويهدف المهاجم إلى إلغاء عملية الدفع من خلال اعتماد المعاملة التي يستفيد منها فقط (على سبيل المثال، إرسال الأموال نفسها إلى العنوان الذي يتحكم فيه). تتطلب هجمات التحويل قيام المستلم بقبول المعاملات غير المؤكدة على أنها عملية دفع.
- هجمات فيني: يقوم المهاجم بالتعدين الأولي لمعاملة واحدة في إحدى الكتل دون بثها على الشبكة فوراً. بدلاً من ذلك، ينفق العملات ذاتها في معاملة أخرى ثم يبث الكتلة التي تم تعدينها مسبقاً، مما قد يؤدي إلى إلغاء عملية الدفع. يتطلب هجوم فيني تسلسل محدد كي يحدث كما أنه يتوقف على قبول المستلم للمعاملات غير المؤكدة.
كما نرى، سيحد التاجر الذي ينتظر تأكيد الكتلة من مخاطر أن يصبح ضحية لهجمات الإنفاق المزدوج.
أفكار ختامية
يتيح الإنفاق المزدوج للمستخدم إمكانية التلاعب بنظام النقود الإلكتروني من أجل الحصول على مكاسب مالية، من خلال استخدام الأموال نفسها أكثر من مرة. ولطالما كان عدم توافر الحلول المناسبة لمعالجة هذه المشكلة بمثابة عائقاً لمسيرة التقدم في هذا المجال.