رونمایی از قدرت زی کش: دنیای شگفتانگیز یک ارز دیجیتال خصوصی و امن را کاوش کنید، زی کش به شما این امکان را میدهد تا کنترل کامل تراکنشهای مالی خود را در دست بگیرید و از حریم خصوصی و محرمانگی خود محافظت کنید.
زی کش (Zcash) چیست؟
همانطور که کریپتوکارنسی ها یا ارزهای رمزنگاری شده با استقبال گسترده تری از سوی مردم مواجه می شوند و جهان هر چه بیشتر به سمت غیر متمرکز شدن گام برمیدارد به همان اندازه حریم خصوصی افراد به خطر می افتد،این اتفاق لزوما به این دلیل پیش می آید که چون ارزهای رمز نگاری شده هنوز در ابتدای راه خود هستند.
مساله این است که بلاک چین ها مثل یک دفتر باز عمل میکند و هر تراکنشی که یک کاربر انجام میدهد را می توان در آن ردیابی کرد. در حالی که این مساله از شیوههای مخرب جلوگیری می کند و فساد را کاهش میدهد، به طور کامل می تواند حریم خصوصی را به خطر بیاندازد.
- آیا برای کسی لازم است که هر قسمت از زندگی خود را به تمام دنیا نشان دهد؟
- آیا اشتباه است که فردی کمی حریم خصوصی نیاز داشته باشد؟
مسلما خیر … به همین دلیل برای پاسخ به این سوالات و نیازهای کاربران، بسیاری از ارزهای دیجیتال و رمزنگاری شده طراحی شدند و کاربران آنها میتوانند حریم خصوصی خود را مدیریت کنند. پرچمداران ژانر سینمای حریم خصوصی عبارتند از: زی کش ZCash، مونرو Monero و دش Dash…
ما قبلا در کلیکسوری به معرفی و بررسی مونرو و دش پرداخته ایم و در این مقاله “زی کش” را مورد تحلیل و بررسی قرار می دهیم.
Zcash یک ارز رمزنگاری شده همتا به همتا و غیر متمرکز است. این پلتفرم به عنوان یک هارد فورک از Bitcoin متشکل شده است و کاملا شبیه به بیت کوین است که دارای حدود ۲۱ میلیون سکه است. اما این همان جایی است که مقایسه و شباهت این دو ارز تمام میشود. برخلاف بیت کوین، زی کش از طریق استفاده از یک رمز نگاری هوشمندانه و انحصاری حریم خصوصی کلی و کاملی را برای کاربران خود فراهم میکند. بنابراین، بیایید نگاهی بیاندازیم و ببینیم در پشت صحنه چه اتفاقی می افتد.
ریشههای زی کش:
همان طور که قبلا گفتیم، زی کش در ۲۸ اکتبر ۲۰۱۶ به عنوان یک چنگال از بلاک چین بیت کوین آغاز به کار کرد. در ابتدا این پروتکل Zerocoin نام داشت و در ادامه بهبود یافت و به سیستم Zerocash تبدیل شد و سپس در نهایت Zcash نام گرفت. توسعه پروتکل و پیادهسازی آن توسط شرکت Zerocoin Electric Coin هدایت میشود که عموما به عنوان شرکت Zcash شناخته میشود. بنیانگذار و مدیر عامل شرکت زی کش Zooko Wilcox-O’Hearn است و تیم بنیانگذار آن، رمز نگار Matthew D. Green از دانشگاه جانز هاپکینز را شامل میشود و Roger Ver نیز یکی از سرمایه گذاران اولیه این پلتفرم بود است. zooko بیش از ۲۰ سال تجربه در، رمزنگاری و راه اندازی سیستمهای غیر متمرکز و امنیت اطلاعات دارد.
زی کش چگونه کار میکند؟
زی کش یکی دیگر از ارزهای رمزنگاری شده است که اجازه میدهد تبادلات در یک بلاک چین باز بصورت خصوصی و با حفظ اطلاعات محرمانه شخصی انجام شود. با این حال این به سازمانها، خریداران و برنامههای جدید اجازه میدهد که بتوانند معاملات افرادی را که علاقه مند به شفاف سازی معاملات خود هستند کنترل کنند، حتی اگر از این پلتفرم در سطح جهانی استفاده شود.
پرداخت های Zcash بر روی یک بلوک عمومی منتشر می شوند، اما کاربران می توانند از یک ویژگی خصوصی اختیاری برای مخفی کردن فرستنده، گیرنده و مبلغ در نظر گرفته شده استفاده کنند. درواقع زی کش برای طرفین معاملات با استفاده از گزینه ” افشای گزینشی ” بستری را بوجود میآورد که به یک کاربر اجازه میدهد برای اهداف حسابرسی پرداخت های خود را اثبات کند. یکی از دلایل این امر این است که اجازه دهیم تراکنش های خصوصی را با مقررات ضد پولشویی یا مالیات مطابقت دهند. بطور کل در زی کش معاملات می توانند مورد سنجش قرار گیرند، اما افشای آن تحت کنترل شرکت کنندگان است.
چگونه یک تراکنش معمولی در بیت کوین انجام میشود؟
فرض کنیم که شیرین میخواهد 1 بیت کوین برای فرهاد بفرستد، خب چه کار خواهد کرد ؟ او ۱ بیت کوین را به آدرس عمومی فرهاد ارسال خواهد کرد. پس از آن معدنچیان جزئیات معامله را در میان بلوکهای خود قرار میدهند و معامله کامل تلقی میشود.
اما تفاوت معاملات زی کش با معاملات نرمال بیت کوین چیست؟
اول، بیایید نگاهی به یک تصویر زیر که یک تراکنش Zcash را نشان میدهد بیندازیم:

تصویر بالا چه چیزی به ما میگوید؟
در زی کش، شما یک حق انتخاب بین دو نوع تراکنش دارید، شما میتوانید تراکنش معمولی را انجام دهید و یا تراکنش خصوصی را انتخاب کنید.
فرض کنید شیرین میخواهد یک zec برای فرهاد ارسال کند. (zec نماد سکه زی کش میباشد). اگر فرهاد با شفافیت معامله خود و اینکه تراکنشش برای عموم قابل مشاهده باشد مشکلی نداشته باشد، میتواند سکه خود را در آدرس شفاف و عمومی خود یا همان “T-addr” دریافت کند، با این حال، اگر او به حریم خصوصی نیاز داشته باشد و نخواهد که جزئیات معامله اش برای عموم باز باشد، او میتواند به سادگی پول را در آدرس محافظت شده و امنیتی خود که ” z – addr ” نامیده میشود ، دریافت کند.
اگر هر دو، شیرین و فرهاد از آدرس های محافظت شده خود برای تعامل با یکدیگر استفاده کنند، تمام جزییات تراکنش ها خصوصی خواهند ماند. این شامل هویت شیرین، هویت فرهاد و جزئیات مربوط به خود تراکنش خواهد بود.
دلیل اینکه زی کش در سطح بالایی از حریم خصوصی قرار دارد، استفاده از zk-Snark یا همان Zero-Knowledge Succinct Non-Interactive Arguments of Knowledge نیست. قبل از اینکه ما به این موضوع بپردازیم، بسیار مهم است که ابتدا درک کنیم که Zero-knowledge proofs و zk-Snark چیست.
Zero-Knowledge Proofs چیست؟
Zero-Knowledge Proofs در سال 1980 به لطف کار محققان MIT Shafi Goldwasser، Silvio Micali و Charles Rackoff به وجود آمد. آنها بر روی مشکلات مربوط به سیستمهای اثبات تعاملی کار میکردند، در سیستم های اثبات تعاملی، “Prover” پیامهایی را به یک “verifier” مبادله و ارسال میکند به شیوه ای که “verifier” بدون اینکه بداند آن پیام ها چه چیزی است، متقاعد شود که یک مدرک قطعی به همراه دارد.
قبل از این که آنها کشف تاریخی خود را انجام دهند ، اکثر سیستمهای اثبات براساس ویژگیهای “soundness” سیستم های اثبات بودند. همیشه فرض بر این بود که “prover” در وضعیتی که آنها تلاش کنند “verifier” را فریب دهند میتواند مخرب باشد. این سه محقق این ایده را با زیر سوال بردن اخلاقیات “verifier” به جای “prover” ، بررسی کردند. سوالی که پرسیده شد این بود که چگونه کسی میتواند مطمئن شود که “verifier” محتویات را فاش نمیکند و همچنین نگرانی هایی در مورد مقدار محتویات موجود در “prover” وجود دارد که “verifier” در طول فرآیند تایید به دست خواهد آورد. در دنیای واقعی و مجازی موارد مختلفی از این نگرانی ها وجود دارد که معروف ترین آنها محافظت از گذرواژه های عبور میباشد.
فرض کنید میخواهید با استفاده از گذرواژه به یک وب سایت وارد شوید. پروتکل استاندارد این است که شما گذرواژه خود را تایپ میکنید و آن را به کارگزار خود یا سایت مورد نظر ارسال میکنید، در این فرایند سرور گذرواژه را درهم می پیچد و به اصطلاح آن را هش میکند و سپس هش را در کنار هشی که در سیستم خود ذخیره کردهاند قرار میدهد. اگر مقادیر با هم مطابقت داشته باشند، شما میتوانید وارد سیستم شوید.
شما می توانید نقص بزرگی که در این سیستم وجود دارد را ببینید؟
کارگزار نسخه ساده رمز عبور شما را دارد و حریم خصوصی شما در اختیار سرور است. اگر سرور به خطر بیفتد و یا مورد حمله قرار گیرد، گذرواژه شما به دست افراد سودجو و خرابکار خواهد افتاد و عواقب آن ممکن است وخیم باشد. برای مقابله با این مشکلات، نمونههای Zero-Knowledge Proofs مطلقا ضروری هستند و هرگونه مشکل احتمالی را از بین میبرند.
همانطور که در بالا ذکر شد در Zero-Knowledge Proofs دو قطب وجود دارد. “prover” که ارسال کننده شواهد است و “verifier” که بررسی و تایید کننده آن. درواقع تکنولوژی Zero-Knowledge Proofs بیان میکند که یک prover میتواند به verifier ثابت کند که آنها دارای یک محتویات خاص هستند ، بدون اینکه به آنها بگویند که این محتویات در واقع چه چیزی است.
فرض کنید Zero-Knowledge Proofs یک وکیل، prover یک مظنون و verifier یک قاضی است،حال مظنون میتواند با بهره گیری از وکیل بدون اینکه مدارک و مستندات محرمانه خود را به دادگاه نشان دهد به قاضی اثبات کند که کاملا بی گناه است و قاضی بدون اینکه حتی بداند ادله او چیست بی گناهی او را اعلام کند. عجب تکنولوژیه جالبی…!
ویژگیهای یک Zero-Knowledge Proofs
برای کارآمد بودن ZKP (مخفف Zero-Knowledge Proofs) نیاز به برآورده شدن پارامترهای خاصی دارد:
- کمال (Completeness): اگر این گفته صحیح باشد ، یک verifier امین را می توان توسط یک prover صادق متقاعد کرد.
- عقلانیت (Soundness): اگر محتویات نادرست است، نمیتوانند صحت اظهارات را با دروغ گفتن به verifier ثابت کنند.
- دانش-صفر (Zero-Knowledge): اگر این حرف درست باشد ، verifier هیچ ذهنیتی ندارد که در واقع مستندات چه چیزی است.
(در این مبحث Zero-Knowledge به معنی عدم اطلاع از محتویات یک سند میباشد)
بنابراین اکنون که ما میدانیم یک Zero-Knowledge Proofs چه چیزی است ، بیایید برخی از نمونه های آن را قبل از غرق شدن در عمق zk-snark و کاربرد آن در بلاک چین بررسی کنیم.
مثال هزارتو:
در این مثال، Prover به Verifier می گوید که مسیر درست عبور از هزارتو را می داند و می خواهد آن را به verifer ثابت کند بدون اینکه در واقع به او بگوید که مسیر درست کدام است. پس این چیزی است که به نظر میرسد:

Prover از هر کدام از مسیرهای A و B میتواند حرکت کند، فرض کنید که آنها در ابتدا تصمیم گرفته بودند از مسیر B عبور کنند و به در بسته برسند. هنگامی که این کار را انجام میدهند ، Verifier بررسی را در ورودی انجام میدهد و هیچ دانشی از مسیری که Prover در واقع بعد از آن میتواند طی کند ندارد و Prover میتواند بعد از اینکه اعلام کرد در مسیر B حرکت خواهد کرد خود را در مسیر A بیاندازد.
در تصویر بالا، همانطور که میتوانید ببینید،این احتمال نیز وجود دارد که prover در مسیر A وارد شود.
- اما اگر این بخت و اقبال را نداشت چه ؟
- اگر prover مسیر درست را نمیشناخت و بطور اتفاقی مسیر A یا همان مسیر درست را انتخاب میکرد چه؟
- اگر verifer مسیر درست را بداند و به Prover بگوید که از مسیر A وارد شود چه؟
بنابراین برای آزمایش اعتبار، و برای اینکه Prover بدون اینکه به Verifier بگوید مسیر درست کدام است،برای ثابت کردن آن به Verifier این آزمایش را چندین بار انجام میدهند که اگر Prover بتواند هر بار در مسیر درست یعنی مسیر A وارد شود، این نشان میدهد که Prover در واقع مسیر درست را میشناسد حتی با این که Verifier دقیقا نداند که مسیر درست چیست و Prover نیز به او نگوید از کدام مسیر توانسته عبور کند.
بنابراین به Verifier با مشاهده Prover بعد از هزارتو ثابت شده است که Prover مسیر درست را میداند بدون آنکه به او گفته باشد. بیایید ببینیم که چگونه سه ویژگی Zero-Knowledge Proofs در این مثال صدق میکنند:
- کمال: از آنجا که این حرف درست بود، prover صادق توانست Verifier امین را متقاعد کرد.
- عقلانیت: اگر Prover مسیر درست را نمیدانست، و بطور اتفاقی در مسیر درست وارد میشد باز هم نمیتواند Verifier را گول بزنند چون این آزمایش چندین بار انجام شد
- دانش-صفر: Verifier هرگز نفهمید که مسیر درست چیست، اما متقاعد شد که prover مسیر درست را میداند.
مثال یافتن پدرام:
خب شما میتوانید پدارم را در تصویر زیر پیدا کنید ؟

البته، شما باید پدرام را در جایی دیده باشید تا بتوانید آن را پیدا کنید، چه در زندگی واقعی و چه به صورت آنلاین. برای آنهایی که نمیدانند، باید بگوییم که یافتن پدرام یک نوع بازی است که شما باید “پدرام” را در میان دریایی از مردم پیدا کنید. این یک بازی ساده است. فقط برای اینکه کمی سرگرم بشویم و درک بهتری هم از این مقاله بدست بیاوریم میتوانید تلاش کنید و پدرام را در تصویر بالا پیدا کنید. برای پیدا کردن او باید بگوییم که تصویر زیر متعلق به شخص پدارم است:
به نظر می رسد خیلی ساده باشد، درست است؟ پیدا کردن این مرد در میان دریایی از افراد دیگر که در تصویر بالا مشاهده می کنید بله با کمی دقت ساده به نظر میرسد.
اما خب، مفهوم Zero Knowledge در این مثال کجاست؟
تصور کنید که شیرین و فرهاد در این بازی شرکت میکنند. شیرین به فرهاد می گوید که او می داند پدارم کجا است، اما او نمی خواهد به فرهاد نشان دهد که دقیقا پدرام کجا است. بنابراین، چگونه می تواند به او ثابت کند که او پدرام را بدون نشان دادن موقعیت دقیقش پیدا کرده است؟
خب کمی پیچیده شد، درست است؟ شما حتی اگر پدرام را هم بتوانید پیدا کنید،چطور میتوانید بدون آنکه به شخص دیگری مکان دقیقش را نشان دهید ثابت کنید که توانسته اید او را پیدا کنید!؟
Zero Knowledge دو راه حل برای این مشکل ارائه میدهد، یکی استفاده از تکنولوژی پایه و ساده و دیگری بهره بردن از یک تکنولوژی متوسط.. بیایید هر دوی آنها را مورد بحث قرار دهیم:
تکنولوژی متوسط
دلیل اینکه چرا این راهحل ” تکنولوژی متوسط ” است این است که تسلیم و تأییدکننده ما (Prover وVerifier ) نیاز به دسترسی به یک دستگاه فتوکپی برای انجام این کار دارند. پس این روشی است که اتفاق میافتد.:
اول، شیرین و فرهاد یک کپی از تصویر اصلی درست میکنند. سپس شیرین، در حالی که مطمئن میشود فرهاد او را نمیبیند ، پدرام را از فوتوکپی بیرون میآورد و باقی ماندههای تصویر را نابود میکند. بعد از آن، او میتواند تصویر قطع شده پدرام را به فرهاد نشان دهد و ثابت کند که او دقیقا میدانست که پدرام کجا بود بدون اینکه محل دقیق او را برای فرهاد فاش کند.
در این راهحل مشکلاتی وجود دارد. در حالی که این کار معیارهای “دانش-صفر ” را برآورده میکند، معیار ” عقلانیت ” را برآورده نمیکند. راه های زیادی وجود دارد که شیرین در اینجا می توانست فرهاد را فریب دهد. او می توانست از همان ابتدا یک عکس تصادفی از پدرام را با خود به همراه داشته باشد و می توانست آن را به فرهاد نشان دهد و بدون اینکه خودش بداند پدارم در کجای تصویر قرار دارد، فرهاد را فریب دهد. بنابراین پذیرفتن این راه حل از طرف فرهاد عقلانی نیست.
پس راه حل چیست؟
راه حل این امر آزمایش دقیق و محتاطانه است. در درجه اول، شیرین و فرهاد یک کپی از تصویر اصلی تهیه میکنند. سپس ( فرهاد ) یک الگوی متمایز را در پشت فوتوکپی میکشد. بعد از آن، فرهاد، شیرین را به اتاق دیگری می برد که در آن به منابع بیرونی دسترسی نداشته باشد و هیچ شانسی برای تقلب و فریب دادن نداشته باشد.
حال اگر شیرین با یک برش که تصویر پدرام در آن است و پشت آن نیز بخشی از الگوی متمایز است بیرون بیاید، فرهاد میتواند متقاعد شود که او واقعا میداند پدرام کجاست. آنها می توانند این آزمایش را چند بار تکرار کنند و فرهاد می تواند برش های مختلف پدرام را با هم مقایسه کند تا اطمینان بیشتری نسبت به اعتبار ادعای شیرین داشته باشد.
تکنولوژی ساده
این راه حل نیازمند تجهیزات بسیار سادهای است و در کل ایده ی ساده ای هم دارد، یک تکه مقوای بزرگ بردارید، دو سه برابر اندازه تصویر و مستطیل کوچکی روی آن برش دهید. اکنون، هنگامی که فرهاد نگاه نمیکند، شیرین میتواند مقوا را به شکلی که مستطیل به طور مستقیم بر فراز پدرام قرار گیرد، مقوا را حرکت دهد. حالا او میتواند به فرهاد بگوید که از مستطیل میتواند پدرام را نگاه کند و این چیزی است که او میبیند:

بنابراین، در حالی که فرهاد ممکن است یک ذهنیت بسیار ساده از جاییکه پدرام واقعا میتواند باشد ، بدست آورد، اما قطعا مکان دقیق را نمیداند. از این رو شیرین ثابت کرده است که او میداند پدارم کجاست و محل دقیق او کجاست.
چگونه اثبات دانش صفر غیر تعاملی انجام دهیم؟
در سیستم های تأیید zero-knowledge قبلی، یک مشکل بزرگ وجود داشت. برای آنکه شیوه هایی که در دو مثال بالا زدیم کار کنند، تسلیم کننده و تأیید کننده باید همزمان آنلاین باشند به عبارت دیگر، این فرایند “تعاملی” بود. این کار باعث میشود که کل سیستم ناکارآمد و تقریبا غیرممکن باشد. تأیید کننده ها نمی توانند همزمان در همان زمانی که تسلیم کنندگان آنلاین هستن آنلاین باشند همانطور که تسلیم کنند ها نمیتوانند بصورت تمام وقت آنلاین باشند، باید سیستمی وجود داشته باشد که این عمل را کارآمدتر کند.
در سال 1986، فیات و شامیر اختراع ابتکاری Fiat-Shamir را اختراع کردند و با موفقیت، اثبات دانش صفر تعاملی را به اثبات دانش صفر غیر تعاملی تغییر دادند. این کار بدون هیچ گونه تعامل به به انجام تمامی کارهای پروتکل کمک کرد. روش ابتکاری پشت این اختراع بسیار ساده است. بنابراین برای اینکه بدانید چگونه اثبات دانش صفر برای کارها قبل از اختراع فیات و شامیر به کار میرود برای شما یک مثال میزنم.
بیایید این را با استفاده از لگاریتم گسسته ساده اثبات کنیم:
شیرین می خواهد به فرهاد ثابت کند که او یک مقدار x را می داند مثل y = g ^ x به طوری که پایه g فرض شده و ثابت میباشد. شیرین یک مقدار تصادفی V را از مجموعه ای از مقادیر Z (اعداد صحیح) انتخاب می کند و t = g ^ v را محاسبه می کند و t را به فرهاد می فرستد. فرهاد یک مقدار تصادفی c را از همان مجموعه Z انتخاب می کند و آن را به شیرین می فرستد.
- شیرین r = v-c * x را محاسبه می کند و r را به فرهاد می فرستد.
- فرهاد چک میکند که t = g ^ r * y ^ c را در اختیار دارد یا نه. از آنجا که r= v-c*x, y= g^x و با جایگزینی ساده، g^(v-c*x)* g ^ c*x = g^v = t فرهاد این بررسی را انجام میدهد.
- فرهاد ارزش x را نمی داند، تنها با چک کردن t = g^r * y^c او می تواند تأیید کند که شیرین در واقع ارزش x را می داند.
حال ، در حالیکه مثال بالا یک دانش صفر تعاملی است، مشکل با این مساله این است که شیرین و فرهاد نیاز دارند که همزمان آنلاین باشند و مقادیری را برای کار مبادله کنند. چگونه شیرین به فرهاد اثبات کند که او چیزی در مورد چیزی دارد بدون اینکه فرهاد برای تایید آنلاین باشد؟ او می تواند این کار را با استفاده از یک تابع رمزنگاری ساده انجام دهد، مانند تئوری که فیات و شامیر ارائه دادند.
بیایید ببینیم که مثال بالا چگونه در یک روش غیر تعاملی کار میکند:
- شیرین میخواهد ثابت کند که یک مقدار x را میشناسد که y = g ^ x با پایه g.
- شیرین مقدار تصادفی v از مجموعهای از مقادیر Z انتخاب میکند و t = g ^ v را محاسبه میکند.
- شیرین (g,y,t)ا c = H ,را محاسبه میکند که در آن H ( ) یک تابع هش است.
- شیرین r = v – c * x را محاسبه میکند.
- سپس فرهاد یا هر کسی می تواند t = g ^ r * y ^ c را بررسی کند.
بنابر این، همانطور که میبینید، نمونههای دانش صفر غیر تعاملی ایجاد شدهاند. و این چیزی بود که شالوده zk – Snarks را پیریزی کرد.
چگونه از Zk-Snark استفاده میشود؟
ZK-Snark مخفف “Zero-Knowledge Succinct Non-Interactive Argument of Knowledge” است. استفاده از آن در تکنولوژی مدرن بلاک چین بسیار زیاد است. برای درک کاربرد آن، مهم است که بدانیم چگونه یک قرارداد هوشمند کار می کند. یک قرارداد هوشمند اساسا سپرده ای از وجوه است که هنگامی که یک کار خاص انجام می شود پرداخت می گردد.
به عنوان مثال شیرین 100 اتریوم را در یک قرارداد هوشمند قرار می دهد که به فرهاد پرداخت گردد. فرهاد نیز باید یک کار خاص را انجام دهد و در پایان آن، فرهاد از قرارداد هوشمند 100 ETH دریافت خواهد کرد. این زمانی پیچیده میشود که کارهایی که فرهاد باید انجام دهد چند لایه و محرمانه باشد.
فرض کنید شما با شیرین وارد یک قرارداد هوشمند شدهاید. حالا، زمانی وجوه خود را دریافت میکنید که به عنوان مثال کارهای A، B و C را انجام دهید.اما نمیخواهید جزئیات A، B و C را فاش کنید چون برای شرکت شما محرمانه هستند و نمیخواهید هیچ رقیبی از فعالیت های شما با خبر شود.
خب، باید چه کار کنید؟ آنچه که Zk-Snark انجام می دهد این است که ثابت می کند که این مراحل در قرارداد هوشمند صورت گرفته بدون اینکه مشخص شود که این مراحل واقعا چه هستند. این بسیار مفید است که از شما و حریم خصوصی شرکت تان محافظت شود. این میتواند بخشی از فرآیند را بدون نشان دادن کل فرآیند نشان دهد و ثابت کند که شما در مورد ادعاهای خود صادق هستید.
Zk-Snark چگونه کار می کند؟
یک Zk-Snark شامل 3 الگوریتم G، P و V است. G یک ژنراتور تولید کلید است که یک ” lambda” را وارد میکند(که باید محرمانه نگه داشته شود و تحت هیچ شرایطی نباید نشان داده شود) و همچنین یک برنامه C را وارد می کند. سپس شروع به تولید دو کلید عمومی در دسترس، یکی کلید اثبات pk، و یک کلید تایید vk میکند. این کلیدها هر دو در دسترس عموم و در دسترس هر یک از طرفین مربوطه قرار دارند.
P یک Prover است که می خواهد از 3 مورد به عنوان ورودی استفاده کند.
- کلید (Prover (pk
- ورودی تصادفی (x)، که در دسترس عموم قرار دارد،
- بیانیه خصوصی که آنها برای اثبات دانش بدون فاش کردن آنچه که در واقع است، استفاده میکنند. بیایید آن بیانیه خصوصی را “w” بنامیم.
بنابراین الگوریتم P یک اثبات را تولید میکند به طوری که: (prf = P(pk, x,w. الگوریتم تایید کننده V اساسا یک متغیر بولین را باز می کند. یک متغیر بولین تنها دو گزینه برای انتخاب دارد، میتواند درست باشد یا میتواند نادرست باشد. بنابراین، تایید کننده کلید تایید، ورودی عمومی x و اثبات prf را به عنوان ورودی استفاده میکند. مانند: (V(vk,x,prf و اگر بیانیه ای که prover تسلیم کرده است صحیح باشد متغیر بولین تایید درست بودن را به prover باز میگرداند و اگر هم غلط بود که خب متغیر نیز نادرست را برمیگرداند.
حالا، در مورد پارامتر lambda. مقدار ” لامبدا ” باید محرمانه نگهداشته شود زیرا پس از آن هر کس میتواند از آن برای تولید نمونههای جعلی استفاده کند. این نمونههای تقلبی ، بدون توجه به اینکه آیا Prover در واقع دانش بیانیه خصوصی را دارد یا نه ، یک متغیر درست را باز میگرداند.
استخراج زی کش چگونه است؟
استخراج بلوک در زی کش از طریق Equihash انجام میشود. Equihash یک الگوریتم اثبات کار است که توسط Alex Biryukov و Dmitry Khovratovich ابداع شده است که بر اساس مساله “روز تولد” میباشد. یک دلیل بزرگ برای این که چرا equihash استفاده میشود این است که استخراج معدن را تا حد امکان غیر خصمانه جلوه دهد. مشکل واحدهای پولی مثل Bitcoin این است که اغلب استخرهای استخراج این بازی استخراج را با سرمایهگذاری زیادی از پول در ASIC به حد امکان به انحصار خود درآورده است. ساخت یک ASIC mining به این معنی است که معدنکاری بیشتر دموکراتیک و متمرکز خواهد بود و این از ماهیت اصلی ارزهای رمزنگاری شده که باید غیرمتمرکز باشند به دور است.
وبلاگ زی کش در مورد Equihash میگوید:
ما همچنین فکر میکنیم برای معدنچیانی که بهینه سازی را یک مزیت میدانند احتمال کمی وجود دارد که هرگونه بهینه سازی بزرگ از Equihash را برای مقاصد شخصی خود ایجاد کنند. این به این دلیل است که مساله “تاریخ تولد” توسط دانشمندان کامپیوتر و رمزنگارها به طور گستردهای مورد مطالعه قرار گرفته است و Equihash نزدیک به مسئله “روز تولد” است. به این معنی است که به نظر میرسد یک بهینهسازی موفق Equihash نیز میتواند بهینهسازی مسئله “روز تولد” را نیز به همراه داشته باشد. احتمال قوی شما در مورد این مساله” روز تولد ” چیز کمی شنیدهاید.
بنابراین مساله روز تولد یا تناقض روز تولد چیست؟
اگر شما با هر غریبهای که در خیابان است ملاقات کنید، احتمال اینکه هر دوی شما در یک روز متولد شده باشید ، بسیار پایین است. در حقیقت، با فرض اینکه برای تمام روزهای سال، احتمال داشتن یک روز تولد را داشته باشید، احتمال اینکه روز تولد یک فرد دیگر با روز تولد شما برابر باشد ۱/۳۶۵ برابر با ۰.۲۷ درصد خواهد بود. به عبارت دیگر، واقعا پایین است.
با این حال، با گفتن این مطلب، اگر حتی شما ۳۰ نفر را در یک اتاق جمع کنید، احتمال اینکه دو فرد مختلف بتوانند افرادی را با روز تولد مشابه خود پیدا کنند یکسان است. در حقیقت به عنوان مثال فردی که روز تولدش یکم فروردین است با فردی که در دوازدهم خرداد به دنیا آمده است نسبت به هم یک شانس ۵۰ – ۵۰ دارند تا بتوانند در بین 28 نفر دیگر شخصی را با روز تولد مشابه خود پیدا کنند.

بنابراین هر چه یک فرد بتواند شیوه انتخاب کردن یک فرد با روز تولد یکسان خودش را بهینه سازی کند با فردی که این کار را انجام نداده است شانس یکسان دارند تا بتوانند فردی را که روز تولدش با آنها یکسان میباشد پیدا کنند. به این ترتیب تلاش برای بهینه سازی فرایند انتخاب سودی برای شخص نخواهد داشت.
پس در این سناریو معدنچیانی که پول بیشتری دارند نمیتوانند با بهینه سازی سیستم های استخراج خود شانس بیشتری برای استخراج بلوک ها بدست بیاورند اما در ارزی مانند بیت کوین کارخانجات ماینینگ و استخرهای استخراج توانسته اند با سرمایه گذاری کلان در این حوضه استخراج این ارز را به انحصار خود درآورند.
توزیع سکه Zcash
از آنجا که Zcash یک چنگال Bitcoin است، شباهت هایی بین این دو وجود دارد. Zcash همچنین دارای حداکثر 21 میلیون سکه است و انتظار می رود که تا سال 2032 این معدن استخراج شود. هر چهار سال، پاداش بلوک به نصف کاهش می یابد تا منبع تغزیه از کنترل خارج نشود. با این وجود، بر خلاف اکثر سکه های دیگر، Zcash از پیش استخراج نشده و نه از طریق ICO تامین مالی شده است.
Zcash یک گروه از سرمایه گذاران خصوصی داشت که در آن یک میلیون دلار سرمایه گذاری کردند تا توسعه خود را شروع کند. پس از آن به سرمایه گذاران وعده داده شد تا 10٪ از مجموع سکه ها را در یک دوره افزایشی 4 ساله به عنوان پاداش دریافت کنند. این پاداش “جایزه بنیانگذار” نامیده می شود. بعضی از این سرمایه گذاران خصوصی نام های قابل توجهی از جمله بری سیلبرت، اریک وورهیز، راجر ور و ناوال راویکانت داشتند.
آیا مقررات زی کش سخت است؟
با توجه به اقدامات امنیتی اضافه شده، مقررات Zcash به وضوح دشوار است، با این وجود، راهکار برای اجرای قانون برای بررسی مقررات در صورت نیاز وجود دارد. این کار از طریق دو روش انجام می شود:
- کلید نمایش
- یادداشت ها
هر کاربر در زی کش دارای “کلید نمایش” خود است. هنگامی که مورد نیاز است، کاربر می تواند کلید نمایش خود را با شخص دیگری به اشتراک بگذارد. کلید نمایش، در اصل، تمام معاملات پنهان را نادیده می گیرد. با کلید نمایش، هر کسی قادر به دیدن معاملات شخصی خاص و آدرس گیرنده خواهد بود. معاملات زی کش همچنین با یک فیلد یادداشت همراه خواهد بود. فیلد یادداشت می تواند اطلاعات اضافی را که فقط برای گیرنده قابل مشاهده است حمل کند. به گفته زوکو ویلکاکس: “این یادداشت می تواند داده ها را بین موسسات مالی هر کجا که طبق قانون مورد نیاز است حمل کند”
مشکل جعل سکه های زی کش!
زی کش با یک مشکل جعل جدی رو به رو بود که یک شاخه مستقیم از برنامهنویسی zk-snark بود. در Zcash 1.0 ، تراکنش های خصوصی بر پارامترهای عمومی SNARK برای ایجاد و تأیید zero-knowledge proofs تکیه می کنند. تولید این پارامترها نیازمند ایجاد یک جفت کلید عمومی / خصوصی است که بعد از انجام تراکنش کلید خصوصی را نابود کرده و کلید عمومی را نگه میدارد، این دقیقا جایی است که همه چیز پیچیده میشود.
اگر کسی بتواند این کلید خصوصی را نگه دارد ، پس آنها میتوانند سکههای تقلبی درست کنند ! این معمولا یک مشکل در بلاک چین های باز مانند bitcoin نیست که در آن همه تراکنش ها برای دنیا قابل مشاهده هستند. با این حال، در زی کش، حریم خصوصی هر شخصی را از چک کردن وضعیت سکه بازمیدارد.
Zooko Wilcox کلید خصوصی را اینگونه توصیف میکند:
او دوست دارد آن را “ضایعات سمی” بنامد، ما کلید خصوصی را “زبالههای سمی” میخوانیم و پروتکل ما برای حصول اطمینان از اینکه زبالههای سمی هرگز به وجود نیایند طراحی شده است. تصور کنید یک مشت محصولات جانبی شیمیایی مختلف در کارخانه دارید که هر کدام به طور جداگانه بیضرر هستند، اما اگر اجازه بدهید همه آنها با هم ترکیب شوند، یک ماده خطرناک را شکل خواهند داد که مدیریت صحیح آن دشوار است. رویکرد ما این است که مواد شیمیایی بیضرر را تا زمانی که نابود شوند ، جدا نگه داریم، بنابراین مواد زاید سمی هرگز به وجود نمیآیند. بنابراین، برای کاهش شانس اینکه مهاجم بتواند “ضایعات سمی” را بدست بیاورد یک فرایند بسیار استادانه انجام شد. هدف این فرایند به شرح زیر است:
ایجاد یک محاسبه چند حزبی ایمن که در آن چندین نفر هر کدام یک ” تکهای ” از جفت کلید عمومی / خصوصی تولید میکنند. زمانی که این کار ایجاد شد ، هر یک از اعضا تکه ی متعلق به خود که مربوط به کلید خصوصی است را از بین میبرد و سپس با هم برای ادقام کردن قطعات کلید عمومی برای ایجاد کلید عمومی جمع میشوند. بنابراین، اگر تنها یک شرکتکننده ، بخش اصلی کلید خصوصی شان را از بین ببرد، بازسازی کل آن غیر ممکن است. این آزمایش تنها در صورتی شکست میخورد که تمام شرکت کنندگان متقلب باشند.
Zooko s Wilcox در اینباره میگوید:
“ما یک شاهکار بسیار قابلتوجه از مهندسی infosec و رمزنگاری را به منظور ایجاد پارامترهای عمومی snark برای Zcash 1.0 اجرا کردهایم. طراحی کلی این فرایند براساس محاسبه چند حزبی است بطوریکه شش نفر مختلف هر کدام یک تکه از فرایند را در دست دارند.
محاسبات چند حزبی تضمین میکند که حتی اگر تکه های ۵ نفر به خطر بیفتند، یا مخفیانه با هم تبانی کنند، نفر ششم که صادقانه رفتار کرده است و تکهای از پسماند سمی را حذف کرده است ، مانع از بوجود آمدن آن خواهند شد. علیرغم مقاومت قابلتوجه این فرایند، من قصد دارم در سال آینده ارتقا بزرگی به پروتکل زی کش ارائه کنم که علاوه بر لایه کنونی پیشگیری، لایهای از تشخیص را نیز اضافه خواهد کرد.”
ادغام اتریوم و زی کش
زی کش یک کریپتوکارنسی است که توسط شرکت Zerocoin electic Coin در نهم سپتامبر ۲۰۱۶ راهاندازی شد و اولین نمونه از ارزهای رمزنگاری شده است که مفاهیم فنآوری بلاک چین را با zk – Snarks ادقام می کند. هدف آن فراهم کردن فضای ارتباطی کاملا امن و حفاظ دار برای کاربران خود بدون افشای جزئیات ( مانند آدرس آنها ) به هر شخصی است.
اتریوم می خواهد Zk-Snark را به عنوان یک مرحله متروپلیس وارد کند و روشی که آنها در حال برنامهریزی برای انجام آن هستند، با ایجاد اتحادی با زی کش است که شامل تبادل متقابل ارزش خواهد بود. توسعه دهنده اصلی زی کش، Zooko Wilcox، در DevCon2 در شانگهای سخنرانی کرد ارائه کرد و آینده این اتحاد را مورد بررسی قرار داد. به گفته وی، 3 راه وجود دارد که Z-Cash و پس از آن،zk-snark می تواند با اتریوم ادغام شود.
اولین روش Baby Zoe نامیده می شود Zoe = Zcash on Ethereum.
این یک پیش ساز کامپایلر zk-snark در اتریوم می باشد و یک قرارداد هوشمند کوچک زی کش را در اتریوم ایجاد می کند. ایده این است که ببینیم آیا سیستم اتریوم میتواند dApp را در بالای بلوک زنجیره ای خود فعال کند یا خیر.
روش دوم این است که محاسبات اتریوم را درون بلاک چین زی کش بسازیم و هماهنگ کنیم.
همانطور که ویلکاکس می گوید، بزرگترین دارایی اتریوم محاسبات آن است و مردم میخواهند ببینند که آیا میتوانند آن را در یک بلاک چین مبتنی بر snark مانند زی کش ادغام کنند یا خیر. آیا مردم می توانند dApps را بر روی یک بلاک چین ساخته شده روی zero knowledge proofs ایجاد کنند؟ این چیزی است که آنها منتظر دیدنش هستند.
سومین و هیجان انگیز ترین بخش پروژه، کیمیاگری است.
این اساسا اتصال و همکاری این دو بلاک چین محسوب می شود، به طوری که می توان بدون درز بین این دو حرکت کرد. روشی که زی کش قصد انجام آن را دارد این است که ، کلونینگ رله BTC را شبیه سازی کند. این یک اسکریپت Ethereum است که برای ایجاد یک سرویس Light Bitcoin در Ethereum نوشته شده است.
همانندسازی زی کش از یک مفهوم مشابه برای ایجاد یک مشتری نوری Zcash در داخل Ethereum استفاده میکند. اگر این کار عملی شود ، ما اولین سیستم پول غیر متمرکز را در جهان خواهیم داشت که ایجاد dApps را به وسیله zero knowledge proofs تسهیل میکند. dApps ها برنامههای کاربردی غیر متمرکزی هستند که به جای یک کامپیوتر واحد ، در یک شبکه P۲P اجرا میشوند. dApps، از زمان ظهور شبکههای P۲P ، وجود داشتهاند. آنها نوعی برنامه نرمافزاری هستند که برای حضور در اینترنت به گونهای طراحی شدهاند که توسط هیچ نهاد منفرد کنترل نمیشود.
با نگاه به آینده
زی کش قطعا یکی از داغترین و هیجانانگیزترین سکههای موجود در حال حاضر است. این برنامه از زمان شروع به خوبی اجرا شدهاست.
در زمان نگارش این مقاله ،بازار سرمایه زی کش در ۶۸۵،۲۸۷،۷۳۳ دلار قرار دارد. قیمت ۱ zec برابر با ۱۹۰. دلار است و رتبه ۲۵ را بین ارزهای دیجیتال به خود اختصاص داده است با نگاه به این موارد مشخص است که چرا مردم به حریم خصوصی ارایهشده توسط زی کش در دنیایی که به طور فزایندهای شفاف است ، ارزش میبخشند.