شرح Dandelion++: ترحيل المعاملات بمرحلتي الساق والانتشار

· مدة القراءة: 5 د

Dandelion++ طريقة لترحيل المعاملات الجديدة عبر شبكة نظير إلى نظير بحيث لا يستطيع من يراقبون الشبكة معرفة الجهاز الذي أرسلها بسهولة. يشرح هذا الدليل المشكلة التي يحلها، وكيف تعمل مرحلتا الساق والانتشار فيه، وما أضافته ورقة 2018 البحثية إلى التصميم الأصلي، وكيف يستخدمه Blocknet في كل دفعة.

ما هو Dandelion++؟

إجابة مختصرة

Dandelion++ بروتوكول لترحيل المعاملات يخفي العقدة التي أنشأت المعاملة. تنتقل المعاملة الجديدة أولًا على طول «ساق» (stem)، فتُمرَّر من عقدة إلى عقدة واحدة تالية لعدة قفزات. ثم «تنتشر» (fluff) إلى الشبكة كلها، فتبدو كأنها بدأت من عقدة بعيدة عن المرسل الحقيقي.

يأتي الاسم من شكل المسار: ساق رفيعة، ثم نفخة من البذور تتطاير في كل اتجاه كزهرة الهندباء (dandelion). نُشر Dandelion++ عام 2018 على يد Giulia Fanti وShaileshh Bojja Venkatakrishnan وSurya Bakshi وBradley Denby وShruti Bhargava وAndrew Miller وPramod Viswanath في Proceedings of the ACM on Measurement and Analysis of Computing Systems (النسخة الأولية على arXiv)، وقُدّم في مؤتمر ACM SIGMETRICS 2018. وهو يحسّن مقترح المجموعة نفسها عام 2017، أي Dandelion.

لماذا يكشف بث المعاملة مصدرها؟

لا تحتوي رسالة المعاملة على عنوان IP الخاص بك. لكن طريقة انتشارها تكشفه. في شبكة العملات المشفرة المعتادة، ترسل العقدة التي تنشئ معاملة إلى جميع نظيراتها، ويرسلونها بدورهم إلى نظيراتهم، فتتموج من المصدر إلى الخارج في حلقات.

أظهر الباحثون أن هذا التموج يمكن قياسه. في 2014، شغّل Biryukov وKhovratovich وPustogarov، وبشكل منفصل Koshy وKoshy وMcDaniel، «عقدة فائقة» اتصلت بكل عقد Bitcoin الممكن الوصول إليها تقريبًا وسجّلت متى وصلت كل معاملة من كل نظير. وكثيرًا ما كانت العقدة التي سلّمت المعاملة أولًا هي التي أنشأتها. تسمي ورقة Dandelion++ ذلك مُقدِّر الجاسوس الأول: تخمين أن أول عقدة نزيهة تسلّم معاملة هي مصدرها. إنه بسيط ويعمل جيدًا ضد الإغراق.

إضافة تأخيرات عشوائية قبل أن تمرر كل عقدة المعاملة، وهو ما يفعله Bitcoin Core بمخطط يُسمى الانتشار التدريجي (diffusion)، تجعل التوقيت أكثر تشويشًا. أما أبحاث Dandelion فسلكت طريقًا مختلفًا وغيّرت شكل المسار نفسه.

كيف تعمل مرحلتا الساق والانتشار؟

إجابة مختصرة

في مرحلة الساق، تمرر كل عقدة المعاملة إلى نظير واحد بالضبط. وعند كل قفزة تقلب العقدة عملة مرجّحة: في الغالب تواصل الساق، وأحيانًا تنتقل إلى الانتشار. وفي مرحلة الانتشار تُبث المعاملة إلى جميع النظراء كالمعتاد، فيرى المراقبون انتشارها من العقدة التي بدأت الانتشار.

خطوة بخطوة:

  1. تبدأ عقدتك الساق. ترسل المعاملة الجديدة إلى نظير واحد فقط.
  2. يقرر كل مرحِّل. يمرّرها النظير إما إلى نظير واحد آخر (ساق) أو يبثها (انتشار).
  3. ينشرها الانتشار في كل مكان. من العقدة التي بدأت الانتشار، تغمر المعاملة الشبكة بالطريقة المعتادة وتصل إلى المعدِّنين.

الجاسوس الذي يراقب عقدًا كثيرة يرى الآن التموج يبدأ من العقدة التي بدأت الانتشار، والتي قد تبعد عنك قفزات كثيرة. وطول الساق عشوائي، فلا يستطيع الجاسوس ببساطة العدّ رجوعًا عددًا ثابتًا من القفزات. وتحدد الورقة الطول المتوقع للساق بـ 1/q، حيث q احتمال الانتشار عند كل قفزة. ومع q = 0.1، يبلغ متوسط الساق نحو عشر قفزات.

ما الذي غيّره Dandelion++ عن Dandelion؟

أرسل تصميم Dandelion لعام 2017 السيقان عبر خط واحد من المرحِّلات وأثبت نتائج قوية في ظل ثلاثة افتراضات: كل عقدة تتبع القواعد، وكل عقدة ترسل معاملة واحدة، وكل عقدة تشغّل Dandelion. وأظهرت ورقة 2018 كيف يمكن للجواسيس الذين يخالفون هذه الافتراضات معرفة المزيد، ثم غيّرت التصميم بحيث تصمد الضمانات أمامهم. يعمل التصميم على حقب، تنتقل فيها كل عقدة إلى حقبة جديدة «في حدود 10 دقائق»، ويستخدم داخل كل حقبة أربع آليات:

الآلية ما تفعله
رسم بياني للترحيل منتظم تقريبًا من الدرجة 4 تختار كل عقدة ما يصل إلى اثنين من اتصالاتها الصادرة كمرحِّلين، فتنشأ شبكة من المسارات المتشابكة بدلًا من خط واحد.
حافة واحدة لمعاملاتك الخاصة ترسل العقدة كل معاملة تنشئها عبر الحافة الصادرة نفسها، فلا يكشف إرسال عدة معاملات مزيدًا من المعلومات.
ترحيل شبه عشوائي في كل حقبة، تكون العقدة إما مرحِّلًا أو ناشرًا لجميع المعاملات التي تستلمها في مرحلة الساق، وتربط كل حافة واردة بحافة صادرة.
مؤقتات احتياطية العقدة التي أرسلت معاملة ساق أو رحّلتها تنتظر وقتًا عشوائيًا لترى انتشارها، وتبثها بنفسها إن لم يحدث ذلك.

لاختيار q، وجدت محاكاة الورقة أن إبقاء q عند 0.2 أو أقل يحدّ مما يمكن للجاسوس كسبه بالتلاعب برسم الترحيل البياني. وشغّل المؤلفون تطبيقهم على شبكة Bitcoin الحية واختاروا q = 0.1 أو q = 0.2 لإبقاء الانتشار ضمن هدفهم البالغ 4.5 ثانية.

اقتُرح Dandelion لـ Bitcoin بوصفه BIP 156. وأضاف Monero تقنية Dandelion++ في الإصدار 0.16 الصادر في مايو 2020.

كيف يستخدم Blocknet تقنية Dandelion++؟

ترحّل كل عقدة في Blocknet المعاملات عبر Dandelion++، ولا يوجد ما يجب تفعيله. عندما ترسل BNT، تتحقق عقدتك أولًا من المعاملة وتضيفها إلى مجمع الذاكرة (mempool) الخاص بها، ثم تسلّمها إلى موجّه Dandelion++. إليك الإعدادات في برنامج العقدة:

الإعداد القيمة معناه
احتمال الساق 0.9 يواصل كل مرحِّل الساق في 90% من الحالات وينتقل إلى الانتشار في 10% منها (q = 0.1)، وهي قيمة q نفسها التي اختبرتها الورقة.
الحقبة 10 دقائق يُعاد خلط مسارات الساق كل 10 دقائق.
مؤقت الحظر 45 ثانية إذا لم تعد معاملتك إلى عقدتك في مرحلة الانتشار بحلول ذلك الوقت، تبثها عقدتك بنفسها.

كيف تنتقل دفعة Blocknet:

كيف يتكامل Dandelion++ مع ميزات الخصوصية الأخرى في Blocknet؟

يعمل Dandelion++ على طبقة الشبكة: فهو يحمي الصلة بين المعاملة والجهاز الذي أرسلها. أما الخصوصية على السلسلة التي تجعل Blocknet عملة خصوصية فتحمي ما تقوله المعاملة: حلقة CLSAG من 16 على كل مُدخل تخفي المرسل، والعناوين الخفية لمرة واحدة تخفي المستلم، والتزامات Pedersen مع إثباتات نطاق Bulletproofs تخفي المبالغ. وهذه الحمايات إلزامية، فتبدو كل معاملة مثل غيرها حتى قبل أن يحملها Dandelion++.

تكمل الطبقتان بعضهما. فالتوقيعات الحلقية تخفي المُخرَج الذي دفع، وDandelion++ يخفي العقدة التي بثت الدفعة. يستعرض مقال كيف يحافظ Blocknet على خصوصية المدفوعات كل طبقة على السلسلة، ويقدم مقال ما هو Blocknet؟ نظرة عامة، بما في ذلك الدفع بالاسم عبر Blocknet ID.

للحصول على BNT خاصة بك لترسلها، يمكنك تعدينها في المنزل. اتبع دليل تعدين Blocknet لتنزيل seine، وتوجيهه إلى bntpool.com، واستلام الدفعات على عنوان محفظتك أو على @name الخاص بك.

الأسئلة الشائعة

هل يخفي Dandelion++ عنوان IP الخاص بي؟

يخفي العقدة التي بدأت المعاملة عن المراقبين المنتشرين في أنحاء الشبكة. لا تنتشر المعاملة على نطاق واسع إلا بعد مرحلة الانتشار، على بُعد عدة قفزات منك. يرى أول نظير في الساق المعاملة قادمة من عقدتك، لكن رسائل الساق تبدو متماثلة سواء أنشأت العقدة المعاملة أو كانت تمررها فقط، فلا يستطيع التمييز بين الحالتين.

ما الفرق بين Dandelion وDandelion++؟

قدّم Dandelion (2017) مرحلتي الساق والانتشار عبر خط واحد من المرحِّلات. ويحتفظ Dandelion++ (2018) بالمرحلتين ويحصّنهما ضد الجواسيس الذين يخالفون القواعد. فهو يستخدم شبكة تختار فيها كل عقدة مرحِّلين، وترسل معاملاتها الخاصة عبر حافة ثابتة واحدة، وتختار مرحِّلات جديدة في كل حقبة، ويضيف مؤقتًا احتياطيًا.

ما العملات المشفرة التي تستخدم Dandelion++؟

أضاف Monero تقنية Dandelion++ في الإصدار 0.16 الصادر في مايو 2020، ويرحّل Blocknet كل معاملة بها. واقتُرح Dandelion أول مرة لـ Bitcoin بوصفه BIP 156 من مجموعة البحث نفسها. ويمكن لأي عملة مبنية على شبكة نظير إلى نظير اعتماده، لأنه لا يغيّر سوى طريقة تمرير العقد للمعاملات الجديدة فيما بينها.

ما إعدادات Dandelion++ التي يستخدمها Blocknet؟

تواصل عقد Blocknet الساق باحتمال 0.9 عند كل قفزة، فتنتقل المعاملة إلى مرحلة الانتشار باحتمال 10% عند كل مرحِّل. وتتغير مسارات الساق كل 10 دقائق. وإذا لم تعد معاملتك إلى عقدتك في مرحلة الانتشار خلال 45 ثانية، تبثها عقدتك بنفسها، فتصل دائمًا إلى الشبكة.