راهنمای کامل الگوریتم zk SNARK به زبان ساده

عبارت “zk-SNARK” (زِدکِی اسنارک) به هر پروتکلی نسبت داده میشود که بر اساس اثبات مبتنی بر دانش صفر (Zero-Knowledge) عمل میکند. در این پروتکلها، کاربران یا نودها میتوانند دادهها را بدون نیاز به افشاشدن آنها پردازش کنند و هیچ تعاملی میان نهادهای اعتبارسنج و اطلاعات مربوطه صورت نمیگیرد.
با وجود اینکه تراکنشهای ارز دیجیتال به هویت کاربرها وابسته نیستند، بهدلیل ثبت در مرورگر یا اکسپلورر بلاک چین قابلیت ردیابی دارند.
البته که برای جلوگیری از این موضوع، کاربران میتوانند از نوعی رمزارزهای خاص تحت عنوان پرایوسی کوین (Privacy Coin) استفاده کنند. یکی از تکنیکهایی که پرایوسی کوینها جهت اجرای تراکنشها بهصورت ناشناس بهکار میبرند، استفاده از الگوریتم zk SNARK است.
در این مقاله از صرافی ارز دیجیتال او ام پی فینکس، تصمیم گرفتیم نگاهی دقیق به ماهیت و نحوه عملکرد الگوریتم zk SNARK داشته باشیم و با مفهوم «دانش صفر» آشنایی کامل پیدا کنیم.
مفهوم اثبات دانش صفر (Zero-Knowledge Proof)
اولین قدم برای شناخت الگوریتم zk SNARK، رسیدن به درکی کلی درباره پایه و اساس اثبات دانش صفر است. از طریق این نوع اثبات، فرد میتواند اعتبار یک داده، سند یا هرچیزی را برای فردی دیگر اثبات کند و در این بین، هیچ جزئیاتی در مورد داده یا سند مربوطه فاش نکند.

شاید این مثال برای درک بهتر مفهوم اثبات دانش صفر خوب باشد؛ فرض کنید میخواهید دوستتان را متقاعد کنید که یک پازل را شما تکمیل کردهاید. در جریان این متقاعدسازی، شما به دوستتان چیزی در مورد نحوه چیدمان تکههای پازل نمیگویید و شیوه رسیدن به این دستاورد را توضیح نمیدهید. این جریان درواقع کلیت عملکرد اثبات دانش صفر است.
مفهوم اثبات دانش صفر برای اولین بار در دهه هشتاد میلادی معرفی شد و تا به امروز، در نقش یکی از ستونهای اصلی حوزه رمزنگاری عمل کرده است. طبق این روش، عامل اعتماد برقرار بوده و فرآیند اعتبارسنجی یک موضوع، بدون نیاز به افشای هویت انجام میشود.
اثبات دانش صفر به سیستمهای آنلاین کمک کرده که بدون نیاز به اطلاعات کاربر مثل نام و آدرس، هویت و حساب کاربری او تایید شود. این تکنیک رمزنگاری برای اپلیکیشنهایی که امنیت و حریم خصوصی را اولویت امور خود قرار داده، بیشترین کاربرد را دارد.
قدرت اثبات دانش صفر در تایید اطلاعات بدون نیاز به افشای آنها، کمک فوقالعادهای را به ساخت محیطهایی کرده که در آنها محافظت از اطلاعات حساس هنگام انجام تراکنش یا برقراری ارتباط بهصورت امن و خصوصی اهمیت زیادی دارد.
اکنون که با ماهیت اثبات دانش صفر آشنا شدیم، بهتر است به سراغ الگوریتم zk SNARK در قالب یک شاخه منحصربهفرد از این تکنیک برویم.
الگوریتم zk SNARK چیست؟

در ابتدا بهتر است بدانید که zk-SNARK کوچکشده عبارت “Zero-Knowledge Succinct Non-Interactive Argument of Knowledge” است. این عبارت در لغت بهمعنی «شناسه مختصر و غیرتعاملی اطلاعات با دانش صفر» است.
اما این عبارت کمی گیجکننده بهنظر میرسد. پس بهتر است جزءبهجزء آن را بهترتیب بررسی کنیم تا درک کاملی از زِدکِی اسنارک بهدست آوریم.
- دانش صفر (Zero-Knowledge): دانش صفر یعنی شما میتوانید بدون افشای اطلاعات، ثابت کنید که یک چیزی را میدانید. مثلاً میتوانید اثبات کنید که رمز عبور یک حساب را بلد هستید، بدون اینکه آن را نمایش دهید.
- مختصر (Succinct): سند اثبات شما کمحجم و بهینه است؛ یعنی فضای زیادی برای ذخیره لازم ندارد و زمان زیادی هم جهت اعتبارسنجی آن نیاز نیست.
- غیرتعاملی (Non-Interactive): الگوریتم zk SNARK از طریق ارسال مستقیم یک پیام از نهاد اثباتگر به اعتبارسنج عمل میکند.
- شناسه اطلاعات (Argument of Knowledge): این ویژگی اطمینان حاصل میکند که اثباتگر از اطلاعات مد نظر واقعاً آگاه است و ادعای دروغ یا دادههای جعلی ارائه نمیدهد.
با وجود اینکه شکل کامل zk SNARK یک عبارت فنی و پیچیده به نظر میرسد، درواقع یک روش ساخت سند اثبات بهصورت بهینه و مستقیم با رعایت حریم خصوصی است. این الگوریتم از تکنیکهای مدرن رمزنگاری استفاده کرده تا توان عملیاتی بالا و حریم خصوص را بهطور همزمان داشته باشد.
در اثبات دانش صفر، حریم خصوصی همه چیز است. فرض کنید میخواهید به دوستتان ثابت کنید که رمز یک گاوصندوق را میدانید، اما بدون اینکه رمز را به او بگویید.
شما میتوانید در حضور او گاوصندوق را باز کنید، اما دستتان را روی دکمههای ورود رمز بگیرید تا دیگران آن را نبینند. به این ترتیب، دوستتان بدون اینکه از رمز باخبر شود، مطمئن میشود که شما به گاوصندوق دسترسی دارید.
اما در تعاریف فنی، الگوریتم zk SNARK باید ۳ ویژگی زیر را داشته باشد:
- کاملبودن: اعتبارسنج باید متقاعد شود که اثبات ارائهشده، اطلاعات واقعی و معتبر را نشان میدهد.
- صحت و سلامت فرآیند: اعتبارسنج را نمیتوان گول زد که یک سند اثبات اشتباه و دارای خطا، واقعی و درست است.
- دانش صفر: طی فرآیند ارائه اثبات و اعتبارسنجی، اطلاعات اضافی در مورد دادههای موجود نباید فاش شود.
این ویژگیها، درواقع امنیت و محرمانگی اثباتهای دانش صفر در الگوریتم zk SNARK را نشان میدهند و بیشتر برای سیستمهایی کاربرد دارند که در آنها اطلاعات حساسی ردوبدل میشوند.
اهمیت الگوریتم zk SNARK در رمزنگاری و دنیای واقعی
در دنیای دیجیتال امروز، حریم خصوصی و امنیت حرف اول را میزنند. در سیستمهای اعتبارسنجی سنتی، معمولاً کاربر باید یک داده حساس مثل رمز عبور یا اطلاعات شخصی خود را ارائه دهد. در اینجا استفاده از تکنیکهای دانش صفر مثل زدکی اسنارک، این الزام برای افشای اطلاعات حساس را از بین میبرد.
مثلاً در رأیگیریهای آنلاین، با استفاده از اثبات دانش صفر میتوان تایید کرد که شما رأی دادهاید، اما نیاز نیست که نشان دهید رأی شما چه کسی بوده است. به همین شکل، میتوان اعتبار یک تراکنش را بدون نیاز به نمایش مقدار ارز یا طرفین تراکنش تایید کرد.
الگوریتم zk SNARK برای سیستمهای مبتنی بر اثبات دانش صفر در دنیای واقعی کاربرد ایجاد میکند. در سیستمهای مبتنی بر بلاک چین مثل پرایوسی کوینها، این الگوریتم کاربرد فوقالعادهای دارد؛ چراکه حریم خصوصی در این سیستمها همیشه در اولویت است.
- از این طریق میتوان اطمینان حاصل کرد که حریم خصوصی دادههای تراکنش و امنیت آن حفظ شدهاند و در عین حال، امکان اعتبارسنجی وجود دارد.
- نودهای اعتبارسنج میتوانند بدون نیاز به نمایش اطلاعات حساس نظیر فرستنده، گیرنده و مقدار تراکنش، صحت و اعتبار آن را تایید کنند.
- الگوریتم zk SNARK عملکرد بهینهای دارد؛ به این معنی که برای استفاده از آن، منابع سختافزاری سنگینی نیاز نیست و اثباتهای مربوطه را در مدتزمانی کوتاه ارائه میدهد.
کاربردهای الگوریتم zk SNARK تنها به دنیای بلاک چین و ارز دیجیتال محدود نشده و در حوزههایی مثل رأیگیری آنلاین، اشتراکگذاری اطلاعات محرمانه و تایید هویت دیجیتالی بهکار گرفته میشود.
ویژگی انعطافپذیری و عملکرد بهینه این الگوریتم بوده که آن را به روشی فوقالعاده جهت ارتقای سطح حریم خصوصی و امنیت در حوزههای گوناگون تبدیل کرده است.
۴ مرحله کلیدی در اجرای الگوریتم zk SNARK

مکانیزم اجرای الگوریتم zk SNARK، شامل ۴ مرحله کلی میشود که آشنایی با آنها، درک نحوه عملکرد این فناوری را آسانتر میکند.
تولید کلید امنیتی: فرآیند ساخت کلیدهای رمزنگاریشده جهت ایجاد و اعتبارسنجی اسناد اثبات از طریق الگوریتم zk SNARK، ابتدا نیاز به یک مرحله نصب و راهاندازی دارد. این مرحله بسیار حساس و خطرناک است؛ زیرا در صورتی که کلیدهای رمزنگاریشده بهصورت امن تولید نشوند، سیستم مربوطه دچار آسیب جدی خواهد شد.
این فرآیند به مسئله «پسماند سمی» (Toxic Waste) هم معروف است که طی آن، دادههای باقیمانده از مراحل تولید کلید ممکن است مورد سوءاستفاده قرار گیرند.
ساخت سند اثبات: کاربر اثباتگر از اطلاعات محرمانه خود (مثل راهحل یک معما) و کلید ویژه اثبات استفاده کرده تا سند مورد نظر را ایجاد کند. این سند نشان میدهد که اثباتگر راهحل مربوطه را بلد است؛ بدون نیاز به اینکه آن را فاش کند.
اعتبارسنجی: نود اعتبارسنج از کلید اعتبارسنجی خود استفاده کرده تا سند اثبات را مورد بررسی قرار دهد. در صورتی که سند معتبر باشد، اعتبارسنج متقاعد میشود که اثباتگر راهحل مذکور را میداند. به این ترتیب، نیازی به دیدن اطلاعات مربوطه هم نیست.
کارایی: الگوریتم zk SNARK طوری طراحی شده که بهصورت فشرده عمل کند؛ یعنی اثباتهای آن کمحجم با فرآیند اعتبارسنجی سریع است. این ویژگی برای سیستمهای بلاک چینی که در آنها توان عملیاتی بالا و بهینه اهمیت زیادی دارد، یک گزینه ایدهآل محسوب میشود.
الگوریتم zk SNARK چه مزایایی دارد؟

اکنون که با نحوه عملکرد سیستمهای دارای الگویتم zk SNARK آشنا شدیم، بهتر است نگاهی به مزایای این تکنیک بیاندازیم.
- حفظ حریم خصوصی: فناوری انقلابآفرین زدکی اسنارک، به کاربران هر سیستم اجازه داده بدون نیاز به افشا یا نمایش اطلاعات حساس، هویت خود را احراز و تایید کنند. بهعلاوه، کاربران در عین برخورداری از این ویژگی، میتوانند در سیستم مربوطه به انجام تراکنش نیز بپردازند و امنیت اطلاعات خود را حفظ کنند.
- عملکرد بهینه: اثباتهای دانش صفر سنتی، بار عملیاتی سنگین و سرعت پایینی دارند. اما الگوریتم zk SNARK بهگونهای طراحی شده که سندهای اثبات آن حجم کمی داشته باشند و برای استفاده روزمره بهترین عملکرد را ارائه دهند. در سیستمهای بلاکچینی که سرعت و مدیریت منابع بسیار حیاتی است، این راندمان بالا فوقالعاده ارزشمند محسوب میشود.
- مقیاسپذیری: الگوریتم zk SNARK در یک بلاک چین، از طریق کاهش بار محاسباتی نودها مقیاسپذیری شبکه را بهبود میبخشد. با توجه به اینکه سندهای اثبات حجم کمی داشته و اعتبارسنجی آنها بهراحتی انجام میشود، شبکه مربوطه میتواند بدون کاهش سرعت تراکنشهای بیشتری را پردازش کند که این قابلیت برای هر بلاک چین یک برگ برنده بهشمار میآید.
- امنیت: الگوریتم zk SNARK یک فناوری با سطح بالای رمزنگاری ایمن است. این تکنیک اطمینان حاصل میکند که اطلاعات به هیچ نحوی قابل دستکاری یا جعل نباشند. زدکی اسنارک یک بستر فوقالعاده مطمئن را برای دادههای دیجیتال فراهم کرده و بهترین مکانیزمی است که سطح اطمینان از عملکرد سیستمهای دیجیتال را بهشدت ارتقا میدهد.
- کاربردپذیری: با وجود اینکه فناوری zk SNARK اغلب به سیستمهای بلاک چینی پیوند خورده، کاربردهای آن صرفاً به این حوزه محدود نمیشوند. از این فناوری میتوان در سیستمهای رأیگیری امن، مدیریت زنجیره تامین و . . . نیز استفاده کرد. توانایی الگوریتم زدکی اسنارک در تامین امنیت و حفظ حریم خصوصی در سیستمهای مختلف، باعث شده به منبع ارزشمندی در صنایع گوناگون تبدیل شود.
جنبههای منفی الگوریتم zk SNARK چیست؟
هر سیستمی بدون عیب و ایراد نیست و در مورد zk-SNARK هم نگرانیهایی وجود دارند. برای مثال، اگر کسی به کلیدهای خصوصی تعریفکننده پارامترهای پروتکل سندهای اثبات دسترسی پیدا کند، میتواند اسنادی جعلی را بسازد که از دید نودهای اعتبارسنج معتبر باشند.
این یعنی که مثلاً در بلاک چین یک رمزارز، میتوان توکنهای جعلی ساخت. جهت جلوگیری از چنین فاجعهای، برخی شبکهها جزئیات عملکرد پروتکلهای ساخت اثبات را بین نهادهای فعال در شبکه منتشر میکنند.
از طرفی دیگر، در مورد سیستمهایی مثل ارز دیجیتال Zcash که برای تولید بلوکهای تراکنش یک مالیات ۲۰ درصدی اعمال کرده و به توسعهدهندگان پروژه پرداخت میشود، منتقدان میگویند این ویژگی باعث میشود که توسعهدهندگان و بنیانگذاران پروژه بتوانند تعداد نامحدودی توکن جدید تولید کنند و هیچ نهادی در شبکه متوجه این اتفاق نشود.
در نهایت، این مسئله باعث میشود که نتوان از مقدار دقیق عرضه در گردش ارز دیجیتال مربوطه آگاه شد.
در راستای این موضوع، در سال ۲۰۱۹ برخی توسعهدهندگان تلاش کردند فرآیند راهاندازی مطمئن یا همان “Trusted Setup” را از طراحی الگوریتم zk SNARK حذف کنند تا عملکرد آن را بهبود ببخشند.
این فرآیند شامل راهاندازی و تعریف پارامترهای مختلف میشود که به بیشتر از یک نفر برای تایید و پیادهسازی نیاز دارند. این پارامترها زمانی که در پروتکل مربوطه تعریف میشوند، دیگر نیازی به تایید و بررسی مجدد هنگام انجام فرآیندهای مختلف توسط کاربران و نودها ندارند و بهطور خودکار اجرا میشوند.
کدام ارزها از الگوریتم zk SNARK استفاده میکنند؟

شاید معروفترین ارز دیجیتالی که از الگوریتم zk SNARK استفاده میکند زدکش (Zcash) باشد. این پرایوسی کوین به کاربران اجازه داده که انتخاب کنند تراکنشهای خود را بهصورت شفاف یا خصوصی انجام دهند.
زمانی که یک کاربر انتخاب میکند تراکنش خود را بهصورت خصوصی و محرمانه انجام دهد، الگوریتم zk SNARK دادههای تراکنش او را تحت محافظت قرار خواهد داد.
البته که پروژههای بلاک چینی دیگری هم از این فناوری استفاده میکنند. توسعهدهندگان اتریوم سال ۲۰۱۷ شروع به ادغام زدکش و zk-SNARK با این شبکه کردند.
در همان سال، پروژه زدکش با غول بانکی جیپی مورگان (JP Morgan Chase) وارد مشارکت شد تا یک سیستم پرداختی بلاک چینی مبتنی بر الگوریتم zk SNARK ایجاد کنند.
از میان سایر ارزهای دیجیتال شناختهشده که از فناوری zk SNARK استفاده میکنند، میتوان به لوپرینگ (Loopring / LRC)، زدکیسینک (ZKsync) و مینا (Mina Protocol / MINA) اشاره کرد.
اکثر کاربردهای فعلی الگوریتم zk SNARK، پیرامون انجام تراکنشهای مالی بهصورت خصوصی است. اما در آینده، شاهد استفاده از آن جهت محافظت از اطلاعات کاربران در پلتفرمهای آنلاین خواهیم بود.
الگوریتم zk SNARK با zk Rollup چه تفاوتی دارد؟
پیشتر اشاره کردیم که zk-SNARK تنها شکل استفاده از مکانیزم اثبات دانش صفر در ارزهای دیجیتال و بلاک چین نیست. یکی دیگر از فناوریهای رایج در این زمینه، رولآپ دانش صفر یا “zk-Rollup” است که در نقش یک راهکار مقیاسبندی، کمک زیادی به شبکه اتریوم میکند.
رولآپها درواقع تعداد زیادی تراکنش را دستهبندی کرده و فرآیند اعتبارسنجی آنها را خارج از بلاکچین و بهصورت آفچین (Off-chain) انجام میدهند. این یعنی که تمامی فرآیندهای پردازشی از شبکه اتریوم خارج شده و در نهایت در قالب یک تک تراکنش، به لایه اجرایی شبکه فرستاده میشوند.
رولآپها انواع مختلفی دارند؛ یکی از آنها رولآپهای آپتیمیستیک (Optimistic Rollups) هستند که تراکنشها را معتبر در نظر گرفته تا زمانی که خلاف آن ثابت شود. از طرفی، رولآپهای دانش صفر تراکنشها را بهصورت آنی تایید میکنند و سندهای اثبات آنها را ارائه میدهند.
این اثباتها را میتوان از طریق الگوریتم zk SNARK یا شکلی دیگر از فناوری اثبات دانش صفر تحت عنوان زدکی استارک (zk-STARK) تولید کرد.
zk STARK مشابه با zk SNARK بوده با این تفاوت که عملکرد آن بهصورت شفاف است، مقیاسپذیری بالاتری دارد، فرآیند تولید اثبات را سریعتر انجام داده و میتواند حجم بزرگتری از دادهها را اعتبارسنجی کند.
اما الگوریتم zk SNARK در طراحی اپلیکیشنها بهترین گزینه محسوب میشود. علت هم اینجا است که کد این الگوریتم کوتاهتر بوده و در عین حال سرعت عملکرد و حریم خصوصی بالاتری دارد. از این رو، در سیستمهای امروزی که عامل اعتماد در آنها دخیل نیست و مقیاسپذیری اهمیت زیادی دارد، زدکی اسنارک گزینه ایدهآل بهشمار میآید.
در نهایت، باید گفت که zk SNARK نوعی تکنیک رمزنگاری است که از طریق آن میتوان میلیاردها کاربر و تراکنش را اعتبارسنجی و تایید کرد. گرچه چالشهای مرتبط با این فناوری مثل راهاندازی مطمئن (Trusted Setup) و برخی فرآیندهای محاسباتی پیچیده آن، مواردی هستند که نیاز به بررسی و بهبود دارند.
با توجه به مزیتهای الگوریتم zk SNARK، انتظار میرود این فناوری در شکلگیری آینده وب ۳ و فراتر از آن نقش مهمی را ایفا کند. درواقع، این نوع رمزنگاری درهای پیشرفت در زمینههای حریم خصوصی، امنیت و مقیاسپذیری را گشوده که ۳ ستون اصلی در دنیای بلاکچین بهشمار میآیند.
در این مقاله از صرافی او ام پی فینکس، تلاش کردیم راهنمای کاملی از الگوریتم zk SNARK به شما ارائه دهیم تا تصویر دقیق و درک راحتی از این فناوری خارقالعاده پیدا کنید. چنانچه پیرامون این مطلب سوال، پیشنهاد و یا انتقادی دارید، خواهشمندیم در بخش نظرات با ما و سایر کاربران دیدگاه خود را به اشتراک بگذارید.
سوالات پرتکرار درباره الگوریتم zk SNARK
- الگوریتم zk-SNARK چیست؟
zk SNARK یکی از تکنیکهای رمزنگاری مبتنی بر اثبات دانش صفر است که تمرکز ویژهای بر حفظ حریم خصوصی دادهها دارد و فرد با استفاده از آن، میتواند سند اثبات اطلاعات خود را بدون نیاز به افشای اطلاعات مربوطه ارائه دهد.
- اثبات دانش صفر یعنی چه؟
دانش صفر (Zero-Knowledge) یک روش رمزنگاری است که از طریق آن، یک نفر میتواند بدون افشای اطلاعات تحت اختیار خود، به فردی دیگر ثابت کند که این اطلاعات را در اختیار دارد.
- الگوریتم zk SNARK در بلاکچین چه کاربردی دارد؟
با استفاده از الگوریتم zk SNARK، سطح حریم خصوصی تراکنشها ارتقا یافته و از جایی که بدون افشای اطلاعات اثبات میکند یک کاربر مقداری ارز X جهت انتقال دارد، نودهای شبکه میتوانند این تراکنشهای رمزنگاریشده را اعتبارسنجی و تایید کنند.
