التطبيق المبتكر ZK: Tornado Cash

2/28/2024, 5:40:33 AM
يقدم هذا المقال مشاريع الخصوصية التي تُمثلها الإعصار ، والتي تستخدم حقًا خاصية الصفر المعرفية لخوارزمية ZK-SNARK ، بينما يستخدم معظم المشاريع تحت راية ZK الإيجاز فقط لخوارزمية ZK-SNARK. في كثير من الأحيان ، يربك الناس الفرق بين دليل الصحة و ZK ، ويعتبر الإعصار مثالًا ممتازًا لفهم تطبيق ZK.

مقدمة: مؤخرًا، قام فيتاليك وبعض العلماء بنشر ورقة بحثية جديدة، حيث ذكروا كيف ينفذ Tornado Cash نظامًا لمكافحة غسيل الأموال (مما يسمح في الأساس للمسحوب أن يثبت أن سجل إيداعه ينتمي إلى مجموعة لا تحتوي على أموال قذرة)، لكن الورقة تفتقر إلى تفسير مفصل للمنطق التجاري ومبادئ Tornado Cash، مما يترك بعض القراء في حيرة.

يجدر بالذكر أن مشاريع الخصوصية التي يمثلها الإعصار هي تلك التي تستخدم حقًا خاصية عدم المعرفة الخاصة بخوارزمية ZK-SNARK، في حين أن معظم المشاريع المصنفة بـ ZK تستخدم فقط الاختصارات لـ ZK-SNARK. غالبًا ما يربك الناس الفرق بين دليل الصحة و ZK، ويعتبر الإعصار حالة ممتازة لفهم تطبيق ZK. كتب مؤلف هذه المقالة عن مبادئ الإعصار في عام 2022 لبحوث Web3Caff، واليوم يختار ويوسع في بعض الأقسام من تلك المقالة، وينظمها في هذا الجزء لفهم الإعصار بشكل منهجي.

الرابط الأصلي للمقال: https://research.web3caff.com/zh/archives/2663?ref=157

مبدأ "الإعصار"

يستخدم Tornado Cash بروتوكول خلط العملات يعتمد على براهين المعرفة الصفرية ، مع إطلاق نسخته القديمة في عام 2019 وإصدار تجريبي جديد في نهاية عام 2021. حقق الإصدار الأقدم من Tornado مستوى عال من اللامركزية ، حيث كانت عقودها على السلسلة مفتوحة المصدر ولا يتم التحكم فيها بواسطة أي آلية متعددة التوقيعات ، كما أن رمز الواجهة الأمامية الخاص بها مفتوح المصدر ومدعوم على شبكة IPFS. نظرا للهيكل الأبسط والأكثر قابلية للفهم للإصدار القديم من Tornado ، تركز هذه المقالة على شرحه. الفكرة الرئيسية وراء Tornado هي مزج عدد كبير من إجراءات الإيداع والسحب معا. بعد إيداع الرموز المميزة في Tornado ، يقدم المودعون إثبات ZK لإثبات قيامهم بالإيداع ثم السحب إلى عنوان جديد ، وبالتالي قطع الرابط بين عناوين الإيداع والسحب.


على وجه التحديد، يعمل Tornado على النحو الذي يشبه صندوق زجاجي مليء بالعملات التي يقوم العديد من الأشخاص بإيداعها. يمكننا رؤية من قام بإيداع العملات، ولكن نظرًا لأن العملات متجانسة تمامًا، من الصعب تتبع أي عملة تم إيداعها بواسطة من إذا قام شخص غير معروف بسحب عملة.


(المصدر: المهارات النادرة)هذا السيناريو شائع إلى حد ما. على سبيل المثال ، عندما نقوم بمبادلة ETH في مجمع Uniswap ، لا يمكننا معرفة من نحصل على ETH لأن الكثيرين قدموا السيولة إلى Uniswap. ومع ذلك ، فإن الاختلاف هو أنه في كل مرة تقوم فيها بمبادلة الرموز المميزة على Uniswap ، تحتاج إلى استخدام الرموز المميزة الأخرى كتكلفة مكافئة ، ولا يمكنك تحويل الأموال "بشكل خاص" إلى شخص آخر ؛ بينما ، مع الخلاط ، ما عليك سوى إظهار إثبات الإيداع للسحب. لجعل إجراءات الإيداع والسحب تبدو متجانسة ، يتم الاحتفاظ بكل إيداع في مجمع Tornado وكل سحب منه ثابتا في المبلغ. على سبيل المثال ، إذا كان هناك 100 مودع و 100 سحب في مجموعة ، على الرغم من ظهورهم ، إلا أنهم يظهرون غير مرتبطين ، والمبلغ المودع والمسحوب من قبل كل منهم هو نفسه.


هذا يمكن أن يحجب قابلية تتبع تحويلات الأموال، مما يوفر راحة طبيعية لتجهيل المعاملات. السؤال الرئيسي هو: كيف يثبت السحب أنه قد قام بإيداع؟

العنوان الذي يقوم بالسحب غير مرتبط بأي عناوين إيداع، فكيف يمكن تحديد أهليتهم للسحب؟ يبدو أن الطريقة الأكثر مباشرة هي أن يكشف الشخص القائم بالسحب عن سجل الإيداع الخاص بهم، ولكن هذا سيكشف هويتهم مباشرة. هنا تأتي أدلة عدم المعرفة إلى اللعب. من خلال تقديم دليل عدم المعرفة أن لديهم سجل إيداع في عقد الإعصار الذي لم يتم سحبه بعد، يمكن للشخص القائم بالسحب بنجاح بدء عملية السحب. تحمي أدلة عدم المعرفة بشكل طبيعي الخصوصية، مكشفة فقط أن الشخص قام فعلاً بإيداع في صندوق الأموال، دون الكشف عن هوية الوديعة التي يتوافقون معها.


لإثبات "لقد قمت بإيداع في بركة صندوق الإعصار" يمكن ترجمتها إلى "يمكن العثور على سجل الإيداع الخاص بي في عقد الإعصار." إذا استخدمنا Cn لتمثيل سجل الإيداع، يصبح المشكلة: بفرض أن مجموعة سجلات الإيداع في الإعصار هي {C1، C2، ... C100 ...}، يثبت المسحوب، بوب، أنه استخدم مفتاحه لإنشاء بعض Cn في سجلات الإيداع دون الكشف عن الموقع المحدد لـ Cn. هذا يشمل الخاصية الخاصة لبرهان ميركل. تم دمج جميع سجلات الإيداع في الإعصار في شجرة ميركل مُنشأة على السلسلة، مع هذه السجلات كأوراق أسفل الطبقة. إجمالي عدد الأوراق حوالي 2^20 أكبر من مليون ورقة، معظمها في حالة فارغة (تم تعيين قيمة ابتدائية لها). كلما حدث إيداع جديد، يسجل العقد قيمته الفريدة، Commitment، في ورقة، ثم يحدث جذر شجرة ميركل.


على سبيل المثال، إذا كان إيداع بوب العاشرة ضمن تاريخ Tornado، فإن القيمة الخاصة Cn المرتبطة بهذا الإيداع ستُدخل في العقدة العاشرة من شجرة Merkle، أي C10000 = Cn. يقوم العقد بحساب جذر جديد تلقائيًا وتحديثه. من أجل توفير الموارد الحسابية، يقوم عقد Tornado بتخزين مؤقت للبيانات من مجموعة من العقد التي تم تغييرها مسبقًا، مثل Fs1، Fs2، و Fs0 في الdiagram أدناه.


(المصدر: RareSkills)

برهان ميركل، بطبيعته، موجز وخفيف الوزن، يستفيد من ببساطة هياكل البيانات الشجرية في عمليات البحث/التتبع. لإثبات خارجيًا أن صفقة TD موجودة في شجرة ميركل، يحتاج المرء فقط إلى تقديم برهان ميركل متوافق مع الجذر، وهو أمر بسيط للغاية. إذا كانت شجرة ميركل كبيرة بشكل خاص، مع 2^20 قاعدة أوراق في المستوى السفلي (أي سجلات إيداع مليون)، فإن برهان ميركل سيحتاج فقط لتضمين قيم 21 عقدة، وهو أمر قصير للغاية.


لإثبات أن عملية H3 موجودة فعلاً داخل شجرة ميركل، يجب على الشخص أن يثبت أنه باستخدام H3 وأجزاء أخرى من البيانات على شجرة ميركل، يمكن إنشاء الجذر، والبيانات اللازمة لإنشاء الجذر (بما في ذلك Td) تشكل دليلا ميركل. عندما يقوم بوب بالسحب، يحتاج إلى إثبات أن شهادته تتوافق مع تجزئة الإيداع Cn المسجلة على شجرة ميركل في دفتر الأمطار. بمعنى آخر، يجب عليه أن يثبت شيئين: Cn موجودة داخل شجرة ميركل الخيالية على سلسلة الكتل، على وجه الخصوص من خلال بناء دليل ميركل يحتوي على Cn؛ Cn مرتبطة بشهادة إيداع بوب.

تفسير منطق الأعمال للإعصار

في كود واجهة المستخدم الأمامية لواجهة مستخدم Tornado ، تم تنفيذ العديد من الوظائف مسبقًا. عندما يفتح المودع صفحة Tornado Cash وينقر فوق زر الإيداع، يقوم الكود الأمامي المرافق بتوليد رقمين عشوائيين، K و r، محليًا. ثم يقوم بحساب قيمة Cn=Hash(K, r) ويمرر Cn (المشار إليه كالالتزام في الرسم البياني أدناه) إلى العقد Tornado، الذي يدخله في شجرة Merkle المسجلة من قبل هذا الأخير. في الجوهر، تعمل K و r كمفاتيح خاصة. إنها حاسمة، ويطالب النظام المستخدمين بحفظها بشكل آمن. يتعين استخدام K و r مرة أخرى أثناء السحب.


(خيار encryptedNote يسمح للمستخدمين بتشفير الاعتماد K و r بمفتاح خاص وتخزينه على سلسلة الكتل لمنع النسيان) بشكل مهم، تحدث جميع هذه العمليات خارج السلسلة، مما يعني أن عقد Tornado والمراقبون الخارجيون غير على علم ب K و r. إذا تم تسريب K و r، فإنه يشبه سرقة مفاتيح المحافظ.


بمجرد استلام إيداع من المستخدم وتقديم Cn=Hash(K، r)، يسجل عقد الإعصار Cn في الطبقة السفلية لشجرة Merkle كورقة ورقة جديدة، مع تحديث قيمة الجذر أيضًا. وبالتالي، يرتبط Cn مباشرة بإجراء إيداع المستخدم، مما يسمح للأشخاص الخارجيين بمعرفة أي مستخدم يتوافق مع كل Cn، الذين قاموا بإيداع الرموز في الخلاط، وسجلات الإيداع Cn لكل مودع.

أثناء عملية السحب ، يقوم السحب بإدخال بيانات الاعتماد / المفتاح الخاص (الأرقام العشوائية K و r التي تم إنشاؤها أثناء الإيداع) على صفحة الويب الأمامية. يستخدم البرنامج في كود الواجهة الأمامية ل Tornado Cash K و r و CN = Hash (K ، r) و Merkle Proof المقابل ل Cn كمعلمات إدخال لإنشاء ZK Proof. هذا يثبت أن Cn موجود في Merkle Tree كسجل إيداع ، و K و r هما أوراق الاعتماد المقابلة ل Cn. تثبت هذه الخطوة بشكل أساسي: أعرف المفتاح المقابل لسجل الإيداع على شجرة ميركل. عندما يتم تقديم دليل ZK إلى عقد Tornado ، يتم إخفاء هذه المعلمات الأربعة ، مما يحمي الخصوصية. يتضمن إنشاء ZK Proof معلمات إضافية ، بما في ذلك جذر Merkle المسجل في عقد Tornado في وقت الانسحاب ، وعنوان مستلم مخصص A ، ومعرف nf لمنع هجمات إعادة التشغيل. يتم نشر هذه المعلمات الثلاثة علنا على blockchain ، والتي لا تعرض الخصوصية للخطر.


من التفاصيل التي يجب ملاحظتها استخدام رقمين عشوائيين ، K و r ، لإنشاء Cn بدلا من رقم عشوائي واحد ، مما يوفر أمانا متزايدا ضد الاصطدامات. A يمثل عنوان مستلم السحب ، الذي اختاره المسحوب. يتم حساب المعرف nf ، المصمم لمنع هجمات إعادة التشغيل ، على أنه nf = Hash (K) ، حيث K هو أحد الرقمين العشوائيين المستخدمين في خطوة الإيداع لإنشاء Cn. هذا يربط nf مباشرة ب Cn ، مما يؤدي إلى إنشاء ارتباط واحد لواحد بين كل Cn و nf المقابل له. يرجع الغرض من منع هجمات إعادة التشغيل إلى ميزة تصميم الخلاط ، والتي تحافظ على الارتباط بين مبالغ السحب وأوراق شجرة Merkle المحددة (Cn) غير معروفة ، مما يسمح بإساءة الاستخدام المحتملة لعمليات السحب المتكررة حتى يتم استنفاد مجمع الأموال.


يعمل معرف nf بشكل مماثل للعدم السري المرتبط بكل عنوان Ethereum ، مما يمنع إعادة تشغيل المعاملات. عند حدوث سحب ، يتأكد الفحص من أن nf المقدم لم يتم استخدامه من قبل ؛ إذا لم يتم استخدامه ، فإن السحب صالح ، ويتم تسجيل nf. أي محاولة لإنشاء nf غير مرتبط بأي إيداع مسجل Cn ستفشل في إنتاج دليل ZK صالح ، مما يجعل السحب غير ناجح.

إذا قام شخص ما بإنشاء عقد غير قابل للاستبدال (nf) غير مسجل بشكل عشوائي ، فهل سينجح؟ بالطبع لا. عندما يقوم الساسحب بإنشاء دليل على المعرفة الصفرية (ZK Proof) ، يجب عليه التأكد من أن nf يساوي التجزئة (K) ، حيث يرتبط الرقم العشوائي K بسجل الإيداع Cn. هذا يعني أن nf مرتبط بإيداع مسجل Cn. إذا قام شخص ما بتلفيق nf بشكل تعسفي ، فلن يتطابق nf هذا مع أي سجلات إيداع ، مما يجعل من المستحيل إنشاء دليل ZK صالح. وبالتالي ، لا يمكن إكمال عملية السحب بنجاح ، وستفشل عملية السحب. قد يسأل البعض: هل من الممكن المتابعة بدون nf؟ نظرا لأن المنسحب يحتاج إلى تقديم دليل ZK أثناء السحب لإثبات ارتباطه ب CN معين ، فلماذا لا تتحقق فقط مما إذا كان قد تم تقديم دليل ZK المقابل إلى blockchain في كل مرة يحدث فيها سحب؟ ومع ذلك ، فإن هذا النهج مكلف للغاية لأن عقد Tornado Cash لا يخزن بشكل دائم ZK Proofs السابقة بسبب إهدار مساحة التخزين الكبيرة. إن مقارنة كل دليل ZK جديد يتم إرساله إلى blockchain مع البراهين الحالية أقل كفاءة من تعيين معرف صغير مثل nf وتخزينه بشكل دائم.

وفقًا لمثال كود وظيفة السحب، البارامترات المطلوبة والمنطق التجاري هي كما يلي: يقدم المستخدم دليل ZK و nf (NullifierHash) = Hash (K)، ويحدد عنوان المستلم للسحب، ويخفي دليل ZK قيم Cn و K و r، مما يجعل من المستحيل على الأشخاص الخارجيين تحديد هوية المستخدم. المستلم يستخدم في كثير من الأحيان عنوانًا جديدًا ونظيفًا، والذي لا يكشف عن المعلومات الشخصية.


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

في الختام، يمكن لـ Tornado Cash أن يحجب الاتصال بين السحب والودائع. في حالات وجود قاعدة مستخدمين كبيرة، يشبه الأمر الجناة الاندماج في حشد في منطقة مزدحمة، مما يجعل من الصعب على الشرطة تتبعه. ينطوي عملية السحب على استخدام ZK-SNARKs، مع جزء الشاهد المخفي يحتوي على معلومات حرجة حول السحب، وهو جانب رئيسي من المزج بأكمله. حاليًا، يبدو أن Tornado هو أحد أكثر مشاريع طبقة التطبيقات العبقرية المتعلقة بـ ZK.

إخلاء المسؤولية:

  1. تم نشر هذه المقالة من [ المبدع ويب 3], جميع حقوق النشر تنتمي إلى الكاتب الأصلي [فاوست، الجيك ويب 3إذا كانت هناك اعتراضات على هذا النشر مراسلة بوابة تعلمفريق، وسيتم التعامل معها على الفور.
  2. تنصل المسؤولية: الآراء والآراء المعبر عنها في هذه المقالة هي فقط تلك للكاتب ولا تشكل أي نصيحة استثمارية.
  3. يتم إجراء ترجمات المقالة إلى لغات أخرى من قبل فريق Gate Learn. ما لم يذكر غير ذلك ، فإن نسخ أو توزيع أو نسخ المقالات المترجمة ممنوع.

مشاركة

تقويم العملات الرقمية

تحديثات المشروع
Etherex ستطلق عملة REX في 6 أغسطس.
REX
22.27%
2025-08-06
يوم الحوكمة والمطورين النادر في لاس فيغاس
ستستضيف Cardano يوم التطوير النادر والحكم في لاس فيغاس، من 6 إلى 7 أغسطس، ويشمل ورش العمل، hackathon ، ومناقشات جماعية تركز على التطوير الفني ومواضيع الحكم.
ADA
-3.44%
2025-08-06
البلوكتشين .Rio في ريو دي جانيرو
ستشارك Stellar في مؤتمر Blockchain.Rio، المقرر عقده في ريو دي جانيرو، من 5 إلى 7 أغسطس. سيتضمن البرنامج كلمات رئيسية ومناقشات جماعية تضم ممثلين عن نظام Stellar البيئي بالتعاون مع الشركاء Cheesecake Labs و NearX.
XLM
-3.18%
2025-08-06
ندوة عبر الإنترنت
أعلنت Circle عن ندوة مباشرة بعنوان "عصر قانون GENIUS يبدأ"، المقرر عقدها في 7 أغسطس 2025، الساعة 14:00 بتوقيت UTC. ستستكشف الجلسة تداعيات قانون GENIUS الذي تم تمريره حديثًا - الإطار التنظيمي الفيدرالي الأول لعملات الدفع المستقرة في الولايات المتحدة. سيقود دانيتي ديسبارتي وكوري ثين من Circle النقاش حول كيفية تأثير التشريع على ابتكار الأصول الرقمية، والوضوح التنظيمي، وقيادة الولايات المتحدة في البنية التحتية المالية العالمية.
USDC
-0.03%
2025-08-06
AMA على X
ستستضيف Ankr AMA على X في 7 أغسطس الساعة 16:00 بتوقيت UTC، مع التركيز على عمل DogeOS في بناء طبقة التطبيقات لـ DOGE.
ANKR
-3.23%
2025-08-06

المقالات ذات الصلة

ما هو Tronscan وكيف يمكنك استخدامه في عام 2025؟
مبتدئ

ما هو Tronscan وكيف يمكنك استخدامه في عام 2025؟

Tronscan هو مستكشف للبلوكشين يتجاوز الأساسيات، ويقدم إدارة محفظة، تتبع الرمز، رؤى العقد الذكية، ومشاركة الحوكمة. بحلول عام 2025، تطورت مع ميزات أمان محسّنة، وتحليلات موسّعة، وتكامل عبر السلاسل، وتجربة جوال محسّنة. تشمل النظام الآن مصادقة بيومترية متقدمة، ورصد المعاملات في الوقت الحقيقي، ولوحة معلومات شاملة للتمويل اللامركزي. يستفيد المطورون من تحليل العقود الذكية الذي يعتمد على الذكاء الاصطناعي وبيئات اختبار محسّنة، بينما يستمتع المستخدمون برؤية موحدة لمحافظ متعددة السلاسل والتنقل القائم على الإيماءات على الأجهزة المحمولة.
11/22/2023, 6:27:42 PM
كل ما تريد معرفته عن Blockchain
مبتدئ

كل ما تريد معرفته عن Blockchain

ما هي البلوكشين، وفائدتها، والمعنى الكامن وراء الطبقات والمجموعات، ومقارنات البلوكشين وكيف يتم بناء أنظمة التشفير المختلفة؟
11/21/2022, 9:15:55 AM
ما هي كوساما؟ كل ما تريد معرفته عن KSM
مبتدئ

ما هي كوساما؟ كل ما تريد معرفته عن KSM

أما كوساما، التي توصف بأنها ابنة عم" بولكادوت البرية"، فهي عبارة عن منصة بلوكتشين مصممة لتوفير إطار قابل للتشغيل المتبادل على نطاق واسع وقابل للتوسعة للمطورين.
12/23/2022, 9:35:09 AM
ما هو كوتي؟ كل ما تحتاج إلى معرفته عن COTI
مبتدئ

ما هو كوتي؟ كل ما تحتاج إلى معرفته عن COTI

Coti (COTI) عبارة عن منصة لامركزية وقابلة للتطوير تدعم المدفوعات الخالية من الاحتكاك لكل من التمويل التقليدي والعملات الرقمية.
11/2/2023, 9:09:18 AM
ما هي ترون؟
مبتدئ

ما هي ترون؟

TRON هو مشروع سلسلة عامة تم إنشاؤه بواسطة Justin Sun في عام 2017. وهي تحتل المرتبة الأولى بناءً على شبكتها الفعالة وقابلية التوسع ورسوم المعاملات المنخفضة للغاية. عندما نتحدث عن TRON، قد تكون الكلمات الرئيسية الأولى المتعلقة بها هي جاستن صن و TRC-20 و dPoS. ولكن كسلسلة عامة ذات قيمة سوقية عالية وسيناريوهات تطبيق واسعة النطاق، هناك الكثير مما يستحق معرفته، بما في ذلك آلية الإجماع والنموذج الاقتصادي والتاريخ ومؤسسها.
11/21/2022, 9:53:41 AM
ما هو بولكادوت؟
مبتدئ

ما هو بولكادوت؟

يعد Polkadot حاليًا مشروعًا رائعًا في مجال blockchain. مع التقدم التدريجي لترقية Ethereum، عانى أداء Polkadot ومزاياها المعمارية كثيرًا، لكنها لا تزال واحدة من أقوى المنافسين من حيث البنية التحتية للسلسلة العامة. فإذا كانت بيتكوين تمثل بلوكتشين ١٫٠ التي فتحت عالم العملات المشفرة، وتمثل إيثريوم بلوكتشين ٢.٠ التي عززت تطبيقات التكنولوجيا. في هذه الحالة، عندما يتعلق الأمر بـ blockchain 3.0، يتم تمثيله بالتأكيد من خلال المشروع الشهير عبر السلاسل - Polkadot (DOT). لا تقوم Polkadot بتحميل العقود الذكية ولا تشغيل برامج بلوكتشين، ولكنها تحاول إنشاء سلسلة وسيطة (Relay Chain) يمكنها الاتصال بالسلاسل العامة الأخرى وتسمح لها بتحقيق تمرير موثوق للرسائل بين السلاسل (ICMP). "كان والد بولكادوت» جافين وود ينوي استخدام Polkadot لتحقيق الترابط بين السلاسل العامة المختلفة، وبالتالي جعلها إنترنت البلوكشين. # فريق بولكادوت المنظم الرئيسي
11/21/2022, 8:50:07 AM
ابدأ التداول الآن
اشترك وتداول لتحصل على جوائز ذهبية بقيمة
100 دولار أمريكي
و
5500 دولارًا أمريكيًا
لتجربة الإدارة المالية الذهبية!