
معرفی و بررسی زی کش
zcash
زی کش (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 را نشان میدهد بیندازیم:

تصویر بالا چه چیزی به ما میگوید ؟
در
Zcash، شما یک حق انتخاب بین دو نوع تراکنش دارید، شما میتوانید تراکنش
معمولی را انجام دهید و یا تراکنش خصوصی را انتخاب کنید.
فرض
کنید شیرین میخواهد یک zec برای فرهاد ارسال کند. (zec نماد سکه زی کش میباشد).
اگر
فرهاد با شفافیت معامله خود و اینکه تراکنشش برای عموم قابل مشاهده باشد مشکلی
نداشته باشد، میتواند سکه خود را در آدرس شفاف و عمومی خود یا همان "T-addr" دریافت
کند، با این حال، اگر او به حریم خصوصی نیاز داشته باشد و نخواهد که جزئیات معامله
اش برای عموم باز باشد، او میتواند به سادگی پول را در آدرس محافظت شده و امنیتی خود
که " z - addr " نامیده میشود ، دریافت کند.
اگر
هر دو، شیرین و فرهاد از آدرس های محافظت شده خود برای تعامل با یکدیگر استفاده کنند،
تمام جزییات تراکنش ها خصوصی خواهند ماند. این شامل هویت شیرین، هویت فرهاد و جزئیات
مربوط به خود تراکنش خواهد بود.
دلیل
اینکه Z-Cash در سطح بالایی از حریم خصوصی قرار دارد، استفاده از
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 مورد به عنوان ورودی استفاده کند.
1
-کلید (Prover (pk
2- ورودی تصادفی (x)، که در دسترس عموم قرار دارد، و
3-
بیانیه خصوصی که آنها برای اثبات دانش بدون فاش کردن آنچه که در واقع است، استفاده
میکنند. بیایید آن بیانیه خصوصی را "w" بنامیم.
بنابراین
الگوریتم P یک اثبات را تولید میکند به طوری که: (prf = P(pk, x,w .
الگوریتم
تایید کننده V اساسا یک متغیر بولین را باز می کند. یک متغیر بولین
تنها دو گزینه برای انتخاب دارد، میتواند درست باشد یا میتواند نادرست باشد.
بنابراین،
تایید کننده کلید تایید، ورودی عمومی x و
اثبات prf را به عنوان ورودی استفاده میکند. مانند: (V(vk,x,prf و
اگر بیانیه ای که prover تسلیم کرده است صحیح باشد متغیر بولین تایید درست بودن را به prover باز میگرداند و
اگر هم غلط بود که خب متغیر نیز نادرست را برمیگرداند.
حالا، در مورد پارامتر lambda. مقدار " لامبدا " باید محرمانه نگهداشته
شود زیرا پس از آن هر کس میتواند از آن برای تولید نمونههای جعلی استفاده کند. این
نمونههای تقلبی ، بدون توجه به اینکه آیا Prover در واقع دانش بیانیه خصوصی را دارد یا نه ، یک متغیر
درست را باز میگرداند.
استخراج زی کش چگونه است؟
استخراج
بلوک در Zcash از طریق Equihash انجام میشود.
Equihash یک الگوریتم اثبات کار است که
توسط Alex Biryukov و Dmitry Khovratovich ابداع شده است که بر اساس
مساله "روز تولد" میباشد.
یک
دلیل بزرگ برای این که چرا equihash استفاده میشود این است که استخراج
معدن را تا حد امکان غیر خصمانه جلوه دهد. مشکل واحدهای پولی مثل Bitcoin این
است که اغلب استخرهای استخراج این بازی استخراج را با سرمایهگذاری زیادی از پول در
ASIC به حد امکان به انحصار خود درآورده است.
ساخت یک ASIC
mining
به این معنی است که معدنکاری بیشتر دموکراتیک و متمرکز خواهد بود و
این از ماهیت اصلی ارزهای رمزنگاری شده که باید غیرمتمرکز باشند به دور است.
وبلاگ Zchashدر مورد Equihash میگوید:
ما
همچنین فکر میکنیم برای معدنچیانی که بهینه سازی را یک مزیت میدانند احتمال کمی وجود
دارد که هرگونه بهینه سازی بزرگ از Equihash را برای مقاصد شخصی خود ایجاد
کنند. این به این دلیل است که مساله "تاریخ تولد" توسط دانشمندان کامپیوتر
و رمزنگارها به طور گستردهای مورد مطالعه قرار گرفته است و Equihash نزدیک
به مسئله "روز تولد" است. به این معنی است که به نظر میرسد یک بهینهسازی
موفق Equihash نیز میتواند بهینهسازی مسئله "روز تولد" را نیز به همراه داشته باشد.
احتمال
قوی شما در مورد این مساله" روز تولد " چیز کمی شنیدهاید.
بنابراین مساله روز تولد یا تناقض روز تولد چیست؟
اگر شما با هر غریبهای که در خیابان است ملاقات
کنید، احتمال اینکه هر دوی شما در یک روز متولد شده باشید ، بسیار پایین است. در حقیقت،
با فرض اینکه برای تمام روزهای سال، احتمال داشتن یک روز تولد را داشته باشید، احتمال
اینکه روز تولد یک فرد دیگر با روز تولد شما برابر باشد ۱ / ۳۶۵ برابر با ۰.۲۷ درصد خواهد بود. به عبارت
دیگر، واقعا پایین است.
با
این حال، با گفتن این مطلب، اگر حتی شما ۳۰ نفر را در یک اتاق جمع کنید، احتمال اینکه
دو فرد مختلف بتوانند افرادی را با روز تولد مشابه خود پیدا کنند یکسان است. در حقیقت
به عنوان مثال فردی که روز تولدش یکم فروردین است با فردی که در دوازدهم خرداد به
دنیا آمده است نسبت به هم یک شانس ۵۰ - ۵۰ دارند تا بتوانند در بین 28 نفر دیگر
شخصی را با روز تولد مشابه خود پیدا کنند.
