در دنیای بلاکچین و شبکههای غیرمتمرکز، متخصصان کریپتو گرافی و برنامه نویسان نرم افزاری دائما در حال توسعه روشهای جدیدی برای بهبود شبکههای غیرمتمرکز بدون نیاز به واسطه و امن هستند.
روش zkSNARK نیز یکی از روشهای جالب توجه در این تحقیقات است.
در یک شبکه بلاکچینی غیرمتمرکز، مهمترین مسئله در مورد اطلاعات، روش تایید آنها است.
عناوین مطلب:
چگونه باید اطلاعات ارائه شده از سوی یک سرور در داخل شبکه را تایید کنیم؟ چگونه مطمئن شویم اطلاعات صحیح هستند؟ آیا راهی وجود دارد بدون نیاز به تکیه به عوامل واسطه و متمرکز یک داده را تایید کنیم؟
روش اثبات با دانش صفر یکی از الگوریتمهای چالش برانگیز در زمینه تایید دادهها بدون نیاز به ارائه اطلاعات بیشتر و حساس است که در آن میتوان اطلاعات یک تراکنش را بدون نیاز به آشکار کردن اطلاعات حساس، تایید کرد.
البته الگوریتمهای مختلفی برای اثبات با دانش صفر وجود دارد که در این مقاله، به صورت اختصاصی به بررسی zkSNARK میپردازیم.
روش zkSNARK چیست؟
الگوریتم zk-SNARK یک سیستم اثبات با دانش صفر (Zero-Knowledge Proof) است که در آن به کاربر (یا همان اثبات کننده) اجازه میدهد تا هویت یا مالکیت خود را به دیگران (تایید کننده) اثبات کند.
در این روش تایید، هیچ اطلاعاتی در مورد داراییهای مذکور ارائه نمیشود و کل فرآیند تایید حتی بدون ارائه اطلاعات حساس مانند سند ملکی شما از یک خانه انجام میپذیرد.
اگر بخواهیم نمونه واقعی آن را در دنیای بلاکچین مثال بزنیم، فرض کنید شما بتوانید بدون ارائه مقدار موجودی حساب خود، اثبات کنید که موجودی کافی برای خرید یک سرویس یا محصول را دارید.
این مثال را میتوان برای هویت مردم و کالاها نیز به کار برد. یک کاربر در روش zkSNARK میتواند بدون ارائه اطلاعات شخصی، هویت خود را در هنگام ارتباط با یک اپلیکیشن تایید کند.
به عبارت دیگر سیستم zkSNARK به شما این امکان را میدهد تا با طرف مقابل بدون نیاز به ارائه اطلاعات حساس، تاییدیه آن اطلاعات را ارائه کنید.
بیشتر بخوانید: ZK-Rollup؛ راهکاری برای بهبود مقیاسپذیری اتریوم!
دلیل اهمیت zkSNARK چیست؟
احتمالا بدون پرداختن به توضیح بیشتر میدانید چنین روشی چقدر برای تعامل با سایر سرویسها یا وبسایتها مفید است.
برای نمونه شما میتوانید بدون ارائه اطلاعات حساس، مالکیت خود را بر روی یک حساب تایید کنید.
این موضوع زمانی اهمیت بیشتری پیدا میکند که ما در حال استفاده از بلاکچینهای با قابلیت حریم خصوصی هستیم. برای مثال مونرو و زدکش، نمونههایی از بلاکچینهای حریم خصوصی هستند که اطلاعات کاربران خود را فاش نمیکنند.
بیشتر بخوانید: همه چیز درباره پرایوسی کوین (Privacy Coin) + معرفی 6 مورد از آنها
در این بلاکچینها شما بدون اجازه صاحب حساب به اطلاعات آنها دسترسی نخواهید داشت.
در طرف دیگر، بلاکچینهای عمومی مانند بیتکوین و اتریوم را در نظر بگیرید، زمانی که یک تراکنش در چنین بلاکچینهایی ارسال و تایید میشود، آدرس فرستنده و گیرنده به همراه سایر اطلاعات مهم مانند مقدار تراکنش و موجودی ولتها پس از این تراکنش کاملا آشکار خواهند بود.
با تکیهبر الگوریتم zkSNARK، یک شبکه مانند زدکش (Zcash) میتواند بدون ارائه اطلاعات حساس تراکنش، مورد تایید بودن آن را اثبات کند.
تعریف zkSNARK از نگاه Horizen
اگر هنور در مورد ماهیت و کاربرد این روش اثبات اطلاعات مطمئن نیستید، در اینجا مطمئنا به ماهیت آن پی خواهید برد.
پلتفرم Horizen یک اکوسیستم چند زنجیرهای متکیبر تکنولوژی zkSNARK است به ما نگاه بهتری از این سیستم ارائه میدهد.
آنها از این روش اثبات اطلاعات برای حفظ حریم خصوصی بلاکچینها و اپلیکیشنهای غیرمتمرکز مستقر بر روی پلتفرم خود استفاده میکنند. در این پلتفرم برای شرح این مکانیزم از بازی به نام Waldo استفاده کردهاند.
در این بازی شما باید والدو را در یک تصویر بیابید. اما پس از یافتن Waldo، شما باید بدون گفتن محل آن یا ارائه هر گونه راهنمایی، دیگران را از این که شما میدانید Waldo در کجا قرار دارد، مطلع کنید.
البته اگر این بازی را نمیشناسید باید بدانید که محیط این بازی یک شهر بازی است که مردم با چهرههای مختلف در آن حضور دارند. شما باید یک پسرک با نام Waldo را در آن شناسایی کنید.
حالا فرض کنید شما این بازی را با سه نفر از دوستانتان انجام میدهید و کسی که بتواند بازی را برنده شود، یک پاداش دریافت میکند. شما و دوستانتان دور یک میز جمع میشوید و به همه شما تعداد برگه کاغذ داده میشود که بر روی یکی از آنها تصویر Waldo وجود دارد.
مسلما شما باید در کوتاهترین زمان ممکن تصویر Waldo را در تصویر پیدا کنید و پس از یافتن آن، باید بدون گفتن محل آن، بقیه را از این کشف مطلع کنید. اتفاقی که در اینجا رخ میدهد این است که شما میخواهید آگاهی خود را نسبت به یک حقیقت بدون ارائه اطلاعات فراتر از ادعا، اثبات کنید.
در اینجا نیز ما ادعا میکنیم که پسرک مورد نظر را یافتهایم، اما بدون ارائه اطلاعاتی در مورد موقعیت آن یا این که در کنار کدام شخصیت ایستاده، باید آن را اثبات کنیم.
در این تشبیه، شما برای این که بتوانید ادعای خود را اثبات کنید، یک کاغذ سفید با همان اندازه تصویر را انتخاب میکنید و محل او را با قرار دادن یک نقطه در کاغذ سفید مشخص میکنید.
پس از آن، شما این کاغذ را درون یک جعبه پازل مخفی میکنید. پس از حل پازل توسط دوستانتان، آنها میتوانند محل Waldo را که بر روی کاغذ علامت گذاری کردهاید ببینند.
سیستم zkSNARK چگونه کار میکند؟
اکنون باید کمی به مباحث فنی این الگوریتم اثبات دانش صفر بپردازیم.
کلمه zkSNARK از دو بخش تشکیل شده است که در کنار هم روش zkSNARK را در دنیای شبکههای غیرمتمرکز بلاکچینی به ما معرفی میکند.
در این سیستم امضاهای دیجیتال اهمیت زیادی دارند. در امضاهای دیجیتال، با استفاده از الگوریتمهای رمزنگاری، اطلاعات حساس به هش تبدیل میشوند که این موضوع باعث مخفی ماندن آنها از طرف دیگر شبکه خواهد بود.
این امضای دیجیتال در عین مخفی کردن اطلاعات حساس مانند گیرنده، فرستنده و مقدار وجه تراکنش، امکان ارائه اثبات مورد نیاز را برای تایید تراکنش فراهم میکند.
اما این فرآیند چگونه انجام میشوند؟ قبل از پرداختن به مراحل تایید اطلاعات در zkSNARK، باید کمی با مفاهیم رمزنگاری و کلیدهای دوگانه آشنا باشید.
در مکانیزم zkSNARK، اثبات کننده ابتدا یک جفت کلید ایجاد میکند که شامل یک کلید عمومی و یک کلید خصوصی برای امضای اطلاعات و تراکنشها است.
در گام بعد اثبات کننده دادههای تراکنش را به الگوریتم zkSNARK ارسال میکند. این الگوریتم یک اثبات ریاضی است که به ما میگوید تراکنش معتبر است.
اثبات تولید شده توسط این الگوریتم به همراه کلید عمومی به تایید کننده ارسال میشود. در اینجا تایید کننده هیچ اطلاعات دیگری از تراکنش ندارد و فقط با تکیهبر کلید عمومی و فرمولهای ریاضی به کار رفته میتواند تراکنش را تایید کند.
نکته جالب توجه در فرآیند بالا این است که کل مراحل تایید تراکنش با روش اثبات با دانش صفر در مدت زمانی کوتاهی انجام میشود چرا که حجم دادههای رد و بدل شده بسیار اندک است و تایید کننده صرفا با داشتن یک کلید خصوصی و خروجی الگوریتم zkSNARK میتواند تراکنش را در شبکه تایید کند.
البته به دلایل مسائل فنی و پیچیدگیهای آن، در اینجا به الگوریتمهای رمزنگاری درگیر در فرایند اشارهای نکردهایم اما به طور کلی درک مفهوم zkSNARK اهمیت بیشتری دارد.
چه کسی الگوریتم zkSNARK را توسعه داده است؟
الگوریتم zkSNARK توسط یک تیم کریپتو گرافی شامل Nir Bitansky، Alessandro Chiesa و Eran Tromer توسعه یافته است.
بیشتر بخوانید: کریپتوگرافی (Cryptography) چیست و چه کاربردی در کریپتو دارد؟
آنها این الگوریتم را در ابتدا در یک مقاله منتشر کردند که پس از آن کدهای این سیستم توسط تیمها و پروژههای زیادی به کار گرفته شد و در نهایت کارایی و عملکرد آن بهبود یافت.
مخفف کلمه zkSNARK چیست؟
این کلمه در زبان انگلیسی معنای خاصی ندارد چرا که هر کدام از حروف آن تشکیل دهنده حرف اول یک کلمه دیگر هستند. البته این موضوع در مورد اغلب الگوریتمهای کریپتوگرافی و ریاضی صدق میکند.
در ادامه به بررسی مخفف عبارت zkSNARK میپردازیم:
حروف ZK
ZK در دنیای کریپتو مخفف Zero-knowledge به معنای دانش صفر است که در آن کسی که تراکنش یا اطلاعات مورد نظر را تایید میکند نمیتواند در فرایند تایید هیچ اطلاعات جدیدی از آن استخراج کند.
در واقع اطلاعات اولیه همان است که به تایید کننده ارائه شده است و برای تایید اطلاعات دیگری در کار نیست.
در این حالت اثبات کننده (Verifier) فقط میتواند بگوید اطلاعات درست هستند یا غلط. اما چیز دیگری در مورد اطلاعات ارائه شده نمیداند.
حرف S
حرف S مخفف کلمه Succinct به معنای “مختصر” است که به دلیل ساده و کوتاه بودن روش تایید اطلاعات در zk-SNARK به آن گفته میشود.
البته روش اثبات با دانش صفر رایج کاملا در تضاد با این الگوریتم هستند چرا که در سایر الگوریتمها معمولا از مکانیزمهای پیچیده و اغلب طولانی استفاده میشود که حتی پردازش همه معادلات ریاضی مورد نیاز برای کامپیوترها نیز کمی زمان میبرد.
اما در طرف دیگر روش اثبات SNARK در عرض چند میلی ثانیه میتواند اطلاعات را تایید کند.
حرف N
حرف N مخفف کلمه Non-Interactive به معنای “غیرتعاملی” است. در الگوریتم zkSNARK هیچ نیازی به تعامل بین اثبات کننده و تایید کننده وجود ندارد.
این موضوع بدان معناست که در فرایند تایید اطلاعات فقط یک پیام از اثبات کننده (Prover) به تایید کننده (Verifier) ارسال میشود و گفتگویی میان این دو وجود ندارد.
البته در بین الگوریتمهای اثبات دانش صفر، حالت تعاملی نیز وجود دارد که در آن اثبات کننده و تایید کننده باید دائما با یک دیگر در ارتباط باشند تا فرایند اثبات صورت گیرد.
حروف AR
حروف AR نیز مخفف Argument به معنای “بحث و جدل” است. در این الگوریتم بحث و گفتگو با استناد به یک سری دلایل انجام میشود.
در واقع برای تایید یک داده باید دلایلی ارائه شود که در الگوریتم zkSNARK، این کار توسط تعدادی عملیات ریاضی برای تایید بیانیه استفاده میشود.
حرف K
حرف K مخفف Knowledge است که به ما در مورد ایده اثبات کننده در داشتن اطلاعات مورد نیاز میگوید.
در این سیستم، اثبات کنندهای که دادهای را برای تاییدیه ارسال میکند، برای انجام اثبات نیاز به اطلاعات خاصی دارد. برای مثال داشتن کلید خصوصی یک ولت برای امضای یک تراکنش ضروری است.
کدام ارزهای دیجیتال از zkSNARK استفاده میکنند؟
کاربرد یک الگوریتم به استفاده از آن در راه حلهای دنیای واقعی است. الگوریتمهای روی کاغذ کاربردی در حل مشکلات ندارند.
خوشبختانه نمونههای قدرتمندی در استفاده از الگوریتم zkSNARK در بین ارزهای دیجیتال وجود دارد.
به خاطر داشته باشید این الگوریتم صرفا برای ارزهای دیجیتال نیست بلکه در سایر شبکههای بلاکچینی نیز کاربرد دارد. ارزهایی که از این سیستم استفاده میکنند دارای ویژگیهای حریم خصوصی هستند که در آن بخشی یا همه اطلاعات تراکنشها مخفی میشوند.
در این لیست برخی از نامها موجود عبارتاند از:
- Zcash با نماد ZEC
- Verge با نماد XVG
- Monero با نماد XMR
- Dash با نماد DASH
- Beam با نماد BEAM
- Horizen با نماد ZEN
- Bytecoin با نماد BCN
اغلب پروژههای مذکور در دنیای ارزهای دیجیتال و حتی بلاکچینهای حریم خصوصی نامهای بزرگی محسوب میشوند.
سایر کاربردهای zkSNARK چیست؟
همان طور که گفته شد، این الگوریتم در شبکههای غیرمتمرکز و بلاکچینی استفاده میشود که فقط محدود به ارزهای دیجیتال نیست.
سایر کاربردهای zkSNARK را در ادامه مشاهده میکنید:
- تایید هویت: گواهینامههای امنیتی کاربری را میتوان بدون نیاز به استفاده از رمزهای عبور تایید کرد. این موضوع نیاز به ثبات اسنادی مانند پاسپورت را نیز حذف میکند. حتی گواهیهای تولد و فوت یا سایر موارد مشابه که دارای اطلاعات حساس هستند را میتوان در این سیستم مورد تایید قرار داد.
- سیستمهای رای گیری: سیستمهای رای گیری که از zkSNARK بهره میبرند نیازی به ارائه اطلاعات شخصی نخواهند داشت. شما میتوانید در این سیستمها فقط با داشتن مشخصههای کلی به رای گیری بپردازید. در چنین سیستمی حتی اگر برگههای رای نیز افشا شود، اطلاعات کاربران محفوظ است و کسی نمیتواند به هویت آنها پی ببرد.
- ذخیره سازی دادهها: شعار اصلی مکانیزم zkSNARK تکیه به یک روش ساده و سریع است. در این مسیر نیاز کمی به ارائه داده برای تایید اطلاعات احساس میشود که از این مزیت میتوان در حریم خصوصی و امنیت دادههای کاربران بهره برد.
کاربرد zkSNARK در پروژه Filecoin چیست؟
پروژه FileCoin را همه میشناسیم. این پروژه یک شبکه غیرمتمرکز ذخیره سازی فایل است که میتوان گفت نمونهای از Dropbox محسوب میشود اما از نوع بلاکچینی.
در این سیستم اجزای مختلفی درگیر فعالیتهای شبکه هستند که باید به بررسی هر یک از آنها بپردازیم.
اولین مفهومی که در هنگام بررسی پروژه Filecoin مشخص میشود این است که در این شبکه، کامپیوترهایی با نام ارائه دهنده فضای ذخیره سازی (Storage provider) وجود دارد.
کار آنها ساده است، فایلهای کاربران را در زنجیره ذخیره میکنند. البته آنها در ازای فضایی که در اختیار شبکه قرار میدهند پاداشهایی نیز دریافت میکنند.
نکته جالب در مورد ارائه دهنده فضای ذخیره سازی در این است که آنها باید اثبات کنند که در حال ذخیره دادهها به شکل صحیح بر روی زنجیره هستند. با مطابقت آنها با الگوریتم zkSNARK، میتوان گفت هر یک از این عناصر، یک اثبات کننده محسوب میشوند.
اما در طرف دیگر تایید کنندگان وجود دارند. آنها نودهایی هستند که باید ذخیره سازی دادهها توسط ارائه دهندگان فضای ذخیره سازی و ایمن سازی دادهها به شکل صحیح را تایید کنند.
مسلما این تایید کنندگان در نقش ناظر باید از اثبات ارائه شده از سوی نودهای ذخیره کننده راضی باشند در غیر این صورت آنها برای ادامه فعالیت ذخیره دادهها با مشکل جدی مواجه خواهند شد.
از نظر تئوری، در این فرایند تایید دادهها، نودهای تایید کننده و ارائه دهنده فضای ذخیره سازی باید با یک دیگر ارتباط برقرار کنند.
مسلما این کار مستلزم مصرف منابع زیادی است که چندان مقرون به صرفه نیست، پس راه حل مناسب برای تایید دادههای ذخیره شده از سوی سایر عناصر شبکه در Filecoin چیست؟
با توجه به گفتههای پروژه Filecoin، حجم دادههایی که هر نود ذخیره کننده به صورت منحصر به فرد باید برای نودهای تایید کننده اثبات کند چشمگیر است. این دادهها با گذشت زمان افزایش پیدا میکنند.
شبکه Filecoin برای هر بلاک 30 ثانیه زمان نیاز دارد. بنابراین برای رعایت این محدودیت و ارائه یک رویکرد مقیاس پذیر، شبکه فایل کوین باید از یک راه حل سریع، کارآمد و ایمن در تایید دادهها استفاده کند.
در اینجا نیز الگوریتم zkSNARK، به کمک پروژه Filecoin آمده تا مقیاس پذیری و عملکرد آن را بهبود دهد. در این روش نودهای تایید کننده و اثبات کننده در کوتاهترین زمان ممکن میتوانند دادههای ذخیره شده را تایید کنند.
در سمت ارائه دهندگان فضای ذخیره سازی، الگوریتم zkSNARK این امکان را به آنها داده است تا حجم دادههایی که باید برای اثبات به نودهای تایید کننده ارسال کنند را به شکل قابل توجهی کاهش داده و مدت زمان عملیات و هزینههای آن نیز کاهش پیدا کنند.
نقطه ضعف zkSNARK چیست؟
مسلما هر الگوریتمی مشکلات و نقاط ضعف خود را دارد اما این که این نقاط ضعف در کجا قرار دارند و چگونه باعث از بین رفتن الگوریتم میشود را باید بررسی کنیم.
در الگوریتم zkSNARK، اثبات کننده دادههای مورد نظر را با استفاده از کلید خصوصی امضا میکند. در این حالت اگر کلید خصوصی مورد استفاده توسط اثبات کننده مورد نظر افشا شود، اثباتهای جعلی ثبت میشوند.
به خاطر داشته باشید نمیتوان با یک کلید تقلبی دادهها را برای تایید کننده ارسال کرد چرا که او مسلما این دادهها را رد میکند.
اما در صورتی که کلید خصوصی یک نود اثبات کننده افشا شود، امکان سو استفاده از آن در جهت تقلب و کلاهبرداری وجود دارد.
برای مثال در یک شبکه بلاکچینی ارز دیجیتال حریم خصوصی، افشا شدن کلید خصوصی اثبات کننده، امکان ایجاد و خرج کردن کوینهای تقلبی وجود دارد.
سوالات متداول
zkSNARK چیست؟
الگوریتم zk-SNARK یک سیستم اثبات با دانش صفر (Zero-Knowledge Proof) است که در آن به کاربر (یا همان اثبات کننده) اجازه میدهد تا هویت یا مالکیت خود را به دیگران (تایید کننده) اثبات کند. در این روش تایید، هیچ اطلاعاتی در مورد داراییهای مذکور ارائه نمیشود و کل فرآیند تایید حتی بدون ارائه اطلاعات حساس انجام میپذیرد.
الگوریتم zkSNARK در کدام ارزهای دیجیتال استفاده شده است؟
Zcash با نماد ZEC ،Verge با نماد XVG ،Monero با نماد XMR ،Dash با نماد DASH ،Beam با نماد BEAM ،Horizen با نماد ZEN و در نهایت Bytecoin با نماد BCN.
نقطه ضعف zkSNARK چیست؟
از آن جایی که اثبات کننده برای امضای دادهها از یک کلید خصوصی استفاده میکند، در صورت افشا شدن کلید خصوصی، امکان جعل اثبات در این سیستم وجود خواهد داشت.
نتیجه گیری
سیستمهای اثبات دانش صفر مورد استفاده در بلاکچینها یک زمینه کاملا جدید است که هنوز سوالات بسیاری در مورد آنها وجود دارد.
الگوریتم zkSNARK یک سیستم اثبات دانش صفر است که در آن اثبات کننده باید استنادات کافی را برای تایید کننده ارسال کند.
بلاکچینهای مونرو و زدکش از جمله ارزهای دیجیتال محبوبی هستند با استفاده از این الگوریتم برای ایمن سازی تراکنشهای خود بهره میبرند. در zkSNARK، دادهها بدون نیاز به ارائه اطلاعات هویتی حساس یا غیرضروری تایید میشوند که این موضوع در آینده بلاکچینها و شبکههای غیرمتمرکز درهای جدیدی باز میکند.
قصد خرید یا فروش ارز دیجیتال در ایران را دارید؟ در این سایت میتوانید با اطمینان و با چند کلیک خرید کنید:
نام | ویژگیها | امتیاز | لینک ثبتنام |
---|---|---|---|
نوبیتکس |
| ||
صرافی خارجی MEXC |
|