تورنادو کش (Tornado Cash) با هدف حل مشکل حریم خصوصی بلاک چین ها از طریق استفاده از تراکنش های خصوصی ایجاد شده است. این پلتفرم مانند Samourai و Wasabi نیست زیرا سکه ها را به روشی کمی متفاوت ترکیب می کند اما در نهایت، تورنادو کش همان هدف را دارد که تراکنش های مالی را خصوصی نگه دارد.
تورنادو کش (TORN) چیست؟
Tornado Cash (TORN) یک راه حل غیرمتمرکز حفظ حریم خصوصی است که مبتنی بر اتریوم ساخته شده است. در حالی که تورنادو کش بر اساس تحقیقات منبع باز توسط تیم Zcash (یکی از سکه های حریم خصوصی) توسعه یافته است، این پروتکل به کاربران اجازه می دهد تا سپرده های ETH و ERC-20 را از طریق سرویس قرارداد هوشمند خود ارسال کنند.
پس از ارسال سپرده ETH یا ERC-20 به تورنادو کش، می توانید رمزارز خود را از طریق یک آدرس جدید برداشت کنید. هنگامی که دارایی توسط آدرس جدید برداشت می شود، هیچ راهی برای لینک برداشت با سپرده وجود ندارد و این موضوع به نوبه خود حفظ حریم خصوصی دارایی را تضمین می کند.
پروتکل TORN متعلق به جامعه است، در می 2020، تیم تورنادو کش، کنترل کیف پول multisig پروتکل را از طریق بهروزرسانی قراردادی که به عنوان Trusted Setup Ceremony شناخته میشود، کنار گذاشت. از آن زمان، بنیانگذاران هیچ کنترلی بر تورنادو کش ندارند و این یک پروتکل کاملاً غیرمتمرکز در نظر گرفته می شود.
توکن TORN یک توکن ERC-20 با یک منبع ثابت است که به دارندگان اجازه می دهد تا پیشنهادات خود را ارائه دهند و به تغییرات در پروتکل رأی دهند. کاربران Tornado Cash در هنگام تعامل با پروتکل، امتیاز ناشناس به دست میآورند که سپس این امتیاز به یک حساب محافظت شده سپرده میشود. هنگامی که آنها به اندازه کافی امتیاز ناشناس جمع آوری می کنند، می توانند آنها را در یک فرآیند محافظت شده مشابه به توکن های TORN تبدیل کنند.
مروری کلی بر عملکرد Tornado Cash
برای دستیابی به حریم خصوصی، تورنادو کش از قراردادهای هوشمندی استفاده می کند که سپرده های رمزی را از یک آدرس می پذیرد و امکان برداشت آنها را از آدرس دیگری فراهم می کند. این قراردادهای هوشمند بهعنوان مجموعههایی عمل میکنند که همه داراییهای سپردهشده را با هم ترکیب میکنند.
هنگامی که وجوه توسط یک آدرس کاملاً جدید از آن استخرها برداشت می شود، پیوند زنجیره ای بین منبع و مقصد از بین می رود. بنابراین دارایی های رمزنگاری برداشته شده ناشناس هستند.
در حالی که توکن ها در استخر تورنادو نقدی هستند، نگهبانی و مراقبت در دست کاربران باقی می ماند. بنابراین کاربران کنترل کاملی بر توکن های خود دارند.
استخرهای سنتی تورنادو کش با مقدار ثابت:
هنگامی که یک کاربر وجوه را در یک استخر (deposit یا سپرده) قرار می دهد، یک یادداشت خصوصی ایجاد می شود. این یادداشت خصوصی به عنوان یک کلید خصوصی برای کاربر عمل می کند تا بعداً به آن وجوه دسترسی پیدا کند. برای برداشت آنها، همان کاربر می تواند از آدرس دیگری (قدیمی یا جدید) استفاده کند و وجوه خود را به لطف این کلید خصوصی بازیابی کند.
استخرهای جدید تورنادو کش، استخر جدید ETH با مقادیر دلخواه و نقل و انتقالات محافظت شده:
وجوه به طور مستقیم به یک آدرس کیف پول داده شده مرتبط است. هیچ یادداشت یا کلید خصوصی وجود ندارد. کاربران می توانند با اتصال به استخر با آدرس مناسب به وجوه خود دسترسی داشته باشند.
حضانت یا با سپرده گذاری توکن ها به استخر، یا با ثبت نام در استخر و دریافت حواله های محافظت شده از آدرس دیگری به دست می آید.
قدرت چنین پروتکلی مستقیماً به تعداد کاربران و اندازه استخر آن مرتبط است. هرچه کاربران بیشتری به استخر واریز کنند بهتر است. با این حال، برای حفظ حریم خصوصی و ناشناس ماندن، کاربر باید برخی از قوانین اساسی را در نظر داشته باشد، مانند:
- استفاده از رله برای پرداخت گس در هنگام برداشت.
- سپری شدن زمان بین واریز و عمل برداشت؛
- مخلوط کردن وجوه خود با جمعیت با انتظار برای چندین تراکنش قبل از بازیابی دارایی های خود.
مشارکت zk-SNARK و فرآیند هش
تورنادو کش برای تأیید و اجازه دادن به تراکنش ها از برهان دانش غیر تعاملی یا به اختصاردانش صفر (که zk-SNARK نیز نامیده میشود) استفاده میکند.
تورنادو کش برای پردازش یک سپرده، یک منطقه تصادفی از بایت ها را تولید می کند، آن را از طریق Pedersen Hash محاسبه می کند (زیرا با zk-SNARK ها دوستانه تر است)، سپس توکن و (20 MiMC hash) را به قرارداد هوشمند می فرستد و قرارداد آن را در درخت مرکل قرار می دهد.
برای پردازش یک برداشت، همان ناحیه از بایت ها به دو قسمت جداگانه تقسیم می شود: رمز در یک طرف و باطل کننده در طرف دیگر. باطل کننده (nullifier) هش شده است. این باطل کننده یک ورودی عمومی است که به صورت زنجیره ای ارسال می شود تا با قرارداد هوشمند و داده های درخت مرکل بررسی شود. به عنوان مثال از خرج کردن مضاعف جلوگیری می کند.
به لطف zk-SNARK، می توان 20 MiMC hash سپرده اولیه و باطل کننده را بدون فاش کردن هیچ اطلاعاتی اثبات کرد. حتی اگر باطل کننده عمومی باشد، حریم خصوصی حفظ می شود زیرا هیچ راهی برای مرتبط کردن باطل کننده هش شده به تعهد اولیه وجود ندارد. علاوه بر این، حتی اگر اطلاعات مربوط به تراکنش در ریشه مرکل وجود داشته باشد، اطلاعات مربوط به مسیر دقیق مرکل و متعاقباً مکان تراکنش، همچنان خصوصی باقی میماند.
سپرده ها از نقطه نظر فنی ساده هستند اما از نظر گس گران هستند زیرا برای محاسبه به هش 20 MiMC و به روزرسانی درخت مرکل (Merkle tree) نیاز دارند. از سوی دیگر، فرآیند برداشت پیچیده و اما ارزان تر است زیرا گس فقط برای هش باطل کننده و اثبات دانش صفر مورد نیاز است.
همانطور که گفتیم با استفاده از تورنادو کش، تراکنشها با استفاده از اثبات با دانش صفر یا zero-knowledge proofs ترکیب میشوند. این الگوریتم اطلاعات تراکنش را کاملا مبهم میکنند. تورنادو کش نیز یک سرویس غیرمتمرکز است و از طریق قراردادهای هوشمند اجرا میشود، بنابراین هیچ شخص ثالث متمرکزی نمیتواند نگهبانی وجوه را در طول فرآیند اختلاط به عهده بگیرد، همانطور که در مورد سایر روشهای اختلاط وجود دارد.
نکته: درخت مرکل (ساختارهایی از دیتا به شکل درخت) یک معماری مبتنی بر هش ایجاد می کنند که باعث حفظ حریم خصوصی و همچنین حفظ تمامیت دیتا می شود.
برای کار با تورنادو کش، شما باید وجوهی را به Tornado Cash واریز کنید، پس از آن یک کلید تصادفی ایجاد میکند و توکنهای ERC-20 شما را واریز میکند. برای برداشت در آینده، باید مدرکی مبنی بر داشتن کلید معتبر ارائه دهید.
با سپرده گذاری شروع کنید و یک توکن ERC-20 و همچنین مقدار سپرده را انتخاب کنید. روی “سپرده” کلیک کرده و آن را تایید کنید.
می توانید با استفاده از کیف پول رمزنگاری مانند متامسک یا از طریق رله (Relayer) برداشت کنید. اگر تصمیم به استفاده از کیف پول دارید، مطمئن شوید که آدرس جدیدی ایجاد کرده اید تا همچنان از حریم خصوصی خود محافظت کنید. راه دیگر استفاده از Relayer است که از هرگونه امکان ثبت تراکنش که به صورت عمومی به شما در بلاک چین متصل شده است جلوگیری می کند. هنگامی که یک آدرس اتریوم جدید ایجاد کردید، Relayer وجوه شما را واریز می کند و هزینه شبکه را به صورت اتریوم از شما دریافت می کند.
وقتی تصمیم گرفتید که چگونه می خواهید وجوه خود را برداشت کنید، رمز سپرده (deposit’s secret) خود را وارد کنید و روی منوی “تنظیمات” در آنجا کلیک کنید. در اینجا، گزینه کیف پول را انتخاب کرده و آن را ذخیره خواهید کرد. سپس باید آدرس خود را وارد کرده و بر روی “برداشت” کلیک کنید.
چه چیزی تورنادو کش را منحصر به فرد می کند؟
تورنادو کش اساسا حریم خصوصی تراکنش ها را با شکستن پیوند زنجیره ای بین آدرس منبع و مقصد بهبود می بخشد. Tornado Cash همچنین از قراردادهای هوشمندی استفاده میکند که سپردههای ETH را میپذیرند که میتوانند توسط آدرسهای مختلف برداشت شوند و همانطور که در بالا ذکر شد، برای جلوگیری از حفظ حریم خصوصی، Relayer را می توان برای برداشت به آدرسی بدون موجودی ETH نیز استفاده کرد.
تورنادو کش به معنای واقعی کلمه به عنوان یک پروکسی عمل می کند که با اثبات zk-SNARK تراکنش ها را ناشناس نگه می دارد (مخفف استدلال اجمالی و غیر تعاملی دانش با دانش صفر یا zero-knowledge succinct non-interactive argument of knowledge).
با این پروتکل اثبات دانش صفر، دو طرف درگیر هستند:
Prover: که به دنبال اثبات یک فرضیه است.
تأیید کننده یا Verifier: که صحت ادعاهای اثبات کننده را تعیین می کند.
هنگامی که یک کاربر ETH را به قرارداد هوشمند تورنادو کش واریز می کند، یک رمز ایجاد کرده و یک هش همراه با مبلغ سپرده به قرارداد هوشمند ارسال می کند.
قرارداد هوشمند وجوه را به لیست سپردههای خود اضافه میکند و زمانی که کاربر میخواهد برداشت کند، کاربر باید رمز مربوطه را ارائه دهد که با سپرده خرج نشده از لیست سپرده تورنادو کش مطابقت دارد.
به منظور برداشت، می توانید از کیف پول رمزنگاری یا Relayer همانطور که در بالا توضیح داده شد استفاده کنید.
با این حال، تیم Tornado Cash توصیه هایی در مورد برداشت از پروتکل دارد. برای شروع، آنها توصیه می کنند قبل از برداشت وجوه خود، حداقل پنج تراکنش منتظر بمانید تا از هر گونه احتمالی که کسی ارتباطی بین سپرده ها و برداشت ها پیدا کند جلوگیری شود. آنها حتی توصیه می کنند که به عنوان یک قاعده حدود 24 ساعت صبر کنید، (فقط برای حفظ حریم خصوصی شما).
تیم تورنادو کش همچنین توصیه میکند هنگام استفاده از سرویس از ابزارهای ناشناس بودن اینترنت مانند VPN یا پروکسی استفاده کنید و قبل از استفاده از آدرس جدید برای برداشت، کوکیهای خود را برای DApps پاک کنید.
مردم درباره تورنادو کش چه می گویند؟
برخی افراد، بهویژه ویتالیک بوترین، در گذشته ادعا کردند که پروژههایی مانند تورنادو کش موفقیتآمیز هستند زیرا آنها صرفاً ابزارهایی هستند که مردم را میتوانند در جریان کار فعلی خود قرار دهند و نه اکوسیستم. به گفته بوترین، کاربران ارزهای دیجیتال به ابزارهای بیشتری در این زمینه نیاز دارند.
با در نظر گرفتن این موضوع، پس از اینکه تورنادو کش در فوریه 2021 یک ایردراپ از 500,000 توکن منتشر کرد که تقریباً 5٪ از 10،000،000 کل عرضه نهایی TORN از توکن های موجود را تشکیل می داد، برخی از مردم در مورد نیاز به یک توکن حاکمیتی شک داشتند، زیرا تورنادو کش ظاهراً قبلاً فقط به عنوان یک “ابزار” خوب کار می کرد. پس از این ایردراپ،توکن تورن (TORN) 200 درصد ارزش داشت.
به گفته وبلاگ تورنادو کش، این توکن ها به مدت 45 روز قفل هستند. 10 درصد اضافی از کل عرضه نیز برای یک برنامه استخراج ناشناس که مشابه استخراج نقدی است، 30 درصد برای تأمین مالی توسعه دهندگان و حامیان اولیه، که طی سه سال باز می شود و 55 درصد به پروتکل اختصاص داده شد. خزانه ای که به صورت خطی در طی یک بازه زمانی پنج ساله باز می شود.