پرش به محتوای اصلی

آخرین بروزرسانی صفحه: ۲ اسفند ۱۴۰۲

اثبات دانش صفر چیست؟

اثبات دانش صفر، روشی برای اثبات اعتبار یک گزاره بدون افشای خود گزاره است. «ثابت کننده» طرفی است که تلاش می کند ادعایی را ثابت کند، در حالی که «تایید کننده» مسئولیت تایید آن ادعا را دارد.

اثبات دانش صفر اولین بار در سال 1985 در مقاله‌ای با عنوان «پیچیدگی دانش سیستم‌های اثبات تعاملی»(opens in a new tab) مطرح شد که تعریفی از اثبات‌ دانش صفر ارائه می‌دهد که امروز به ‌طور گسترده مورد ارجاع قرار می‌گیرد:

یک پروتکل دانش صفر روشی است که به وسیلۀ آن یک طرف (اثبات‌کننده) می‌تواند به طرف دیگر (تاییدکننده) ثابت کند که چیزی درست است، بدون این‌ که هیچ اطلاعاتی جز این واقعیت که این عبارت خاص درست است فاش کند.

اثبات‌های دانش صفر در طول سالیان بهبود یافته‌اند و اکنون در چندین اپلیکیشن در دنیای واقعی مورد استفاده قرار می‌گیرند.

چرا به اثبات دانش صفر نیاز داریم؟

اثبات‌ دانش صفر نشان‌دهندۀ یک پیشرفت چشمگیر در رمزنگاری کاربردی بود، زیرا وعدۀ بهبود امنیت اطلاعات برای افراد را می‌داد. در نظر بگیرید که چگونه می‌توانید ادعای خود (مثلاً «من شهروند کشور X هستم») را به یک طرف دیگر (مثلاً یک ارائه‌دهندۀ خدمات) اثبات کنید. برای اثبات ادعای خود می‌بایست «شواهدی» مانند پاسپورت ملی یا گواهینامۀ رانندگی ارائه دهید.

اما این شیوه مشکلاتی دارد، بیش از همه، فقدان حریم خصوصی. زیرا اطلاعات شناسایی شخصی یا به‌اختصار PII اشتراک‌گذاری‌شده با سرویس‌های شخص ثالث، در پایگاه‌های دادۀ مرکزی ذخیره می‌شود که در برابر هک آسیب‌پذیرند. هم‌زمان با اهمیت یافتن سرقت هویت، درخواست‌ها برای ابزارهایی با قابلیت حفاظت بیشتر از حریم خصوصی به هنگام اشتراک‌گذاری اطلاعات حساس افزایش یافته است.

اثبات دانش صفر با حذف نیاز به افشای اطلاعات برای اثبات اعتبار ادعاها، این مشکل را حل می‌کند. پروتکل دانش صفر، از گزاره (که «شاهد» نامیده می‌شود) به‌ عنوان ورودی استفاده می‌کند تا یک اثبات موجز برای اعتبار آن ایجاد کند. این اثبات، تضمین‌های محکمی برای صحت یک گزاره بدون افشای اطلاعات مورد استفاده در ایجاد آن ارائه می‌دهد.

با رجوع به مثال قبلی، تنها مدرکی که برای اثبات ادعای شهروندی خود نیاز دارید، اثبات دانش صفر است. تاییدکننده تنها می‌بایست بررسی کند که آیا برخی از ویژگی‌های اثبات درست است یا نه تا متقاعد شود که گزارۀ اصلی نیز درست است.

اثبات دانش صفر چکونه کار میکند؟

اثبات دانش صفر به شما امکان می‌دهد که صحت یک گزاره را اثبات کنید، بدون این‌که محتوای آن گزاره را به اشتراک بگذارید یا چگونگی کشف حقیقت را فاش کنید. برای ممکن ساختن این امر، پروتکل‌های دانش صفر بر الگوریتم‌هایی تکیه می‌کنند که برخی داده‌ها را به ‌عنوان ورودی می‌گیرند و «درست» یا «نادرست» را به ‌عنوان خروجی برمی‌گردانند.

یک پروتکل دانش صفر باید معیارهای زیر را برآورده کند:

  1. کامل بودن: اگر ورودی معتبر باشد، پروتکل دانش صفر همیشه پاسخ «درست» را برمی‌گرداند. از این رو، اگر گزارۀ اصلی درست باشد و اثبات‌کننده و تایید‌کننده صادقانه عمل کنند، اثبات را می‌توان پذیرفت.

  2. صحت: اگر ورودی نامعتبر باشد، از نظر تئوری غیرممکن است که پروتکل دانش صفر فریب بخورد تا پاسخ «درست» را بازگرداند. از این رو، یک اثبات‌کنندۀ دروغگو نمی‌تواند یک تاییدکنندۀ صادق را فریب دهد تا یک گزارۀ نامعتبر را معتبر بداند (مگر با یک احتمال ناچیز).

  3. دانش صفر: تاییدکننده، چیزی دربارۀ یک گزاره فراتر از اعتبار یا نادرستی آن یاد نمی‌گیرد (آن‌ها از گزاره، «دانش صفر» دارند). این الزام همچنین مانع می‌شود که تاییدکننده از طریق اثبات، به ورودی اصلی (محتوای گزاره) دست یابد.

در شکل اولیه، یک اثبات دانش صفر از سه عنصر تشکیل شده است: شاهد،چالش، و پاسخ.

  • شاهد: با استفاده از اثبات دانش صفر، اثبات‌کننده می‌خواهد آگاهی خود از برخی اطلاعات محرمانه را اثبات کند. اطلاعات محرمانه، «شاهد» اثبات است، و آگاهی مفروض اثبات‌کننده درباره شاهد، مجموعه‌ای از پرسش‌ها را تعیین می‌کند که تنها از سوی یک طرف مطلع می‌تواند پاسخ داده شود. بنابراین، اثبات‌کننده فرایند اثبات را با انتخاب تصادفی یک پرسش، برآورد پاسخ و ارسال آن برای تاییدکننده آغاز می‌کند.

  • چالش: تاییدکننده به‌ طور تصادفی پرسش دیگری را از مجموعه انتخاب می‌کند و از اثبات‌کننده می‌خواهد که به آن پاسخ دهد.

  • پاسخ: اثبات‌کننده پرسش را می‌پذیرد، پاسخ را برآورد می‌کند و به تاییدکننده بازمی‌گرداند. پاسخ اثبات‌کننده، به تاییدکننده اجازه می‌دهد که بررسی کند آیا اولی واقعاً به شاهد دسترسی دارد یا خیر. برای اطمینان از این‌که اثبات‌کننده حدس‌های کورکورانه نمی‌زند و پاسخ‌های صحیحش از سر تصادف و شانس نیست، تاییدکننده سؤال‌های بیشتری می‌پرسد. با تکرار چندبارۀ این تعامل تا زمانی که رضایت تاییدکننده جلب شود، احتمال جعل شدن دانش شاهد از سوی اثبات کننده به میزان قابل توجهی کاهش می‌یابد.

موارد بالا، ساختار یک «اثبات دانش صفر تعاملی» را شرح می‌دهد. پروتکل‌های اولیۀ دانش صفر از اثبات تعاملی استفاده می‌کردند، طبق این پروتکل‌ها، تایید اعتبار یک گزاره نیازمند ارتباط رفت و برگشتی میان اثبات‌کننده‌ها و تاییدکننده‌ها بود.

یک مثال خوب که نحوۀ کار اثبات‌های تعاملی را روشن می‌کند، داستان معروف غار علی بابا(opens in a new tab) از ژان ژاک کویسکوتر است. در این داستان، پگی (اثبات‌کننده) می‌خواهد بدون فاش کردن عبارت رمز، به ویکتور (تاییدکننده) ثابت کند که آن عبارت را می‌داند تا دری جادویی را باز کند.

اثبات دانش صفر غیرتعاملی

هرچند اثبات تعاملی یک انقلاب محسوب می‌شد، اما کارایی چندانی نداشت، زیرا مستلزم این بود که دو طرف در دسترس باشند و به‌ طور مکرر با هم تعامل داشته باشند. حتی اگر یک تاییدکننده به صداقت یک اثبات‌کننده اعتقاد داشته باشد، اثبات برای تایید مستقل در دسترس نخواهد بود (محاسبۀ یک اثبات جدید نیازمند مجموعۀ جدیدی از پیام‌ها بین اثبات‌کننده و تاییدکننده است).

برای حل این مشکل، مانوئل بلوم، پل فلدمن و سیلویو میکالی اولین اثبات‌های دانش صفر غیرتعاملی(opens in a new tab) را پیشنهاد کردند که در آن اثبات‌کننده و تاییدکننده یک کلید مشترک دارند. این کلید اجازه می‌دهد که اثبات‌کننده دانش خود از برخی اطلاعات (به‌ عنوان مثال شاهد) را بدون ارائۀ خود اطلاعات اثبات کند.

برخلاف اثبات‌های تعاملی، اثبات‌های غیرتعاملی فقط به یک دور ارتباط بین شرکت‌کنندگان (اثبات‌کننده و تاییدکننده) نیاز دارند. اثبات‌کننده، برای محاسبۀ اثبات دانش صفر، اطلاعات محرمانه را به یک الگوریتم ویژه می‌فرستد. این اثبات برای تاییدکننده ارسال می‌شود، و تاییدکننده با استفاده از الگوریتم دیگری بررسی می‌کند که آیا اثبات‌کننده اطلاعات محرمانه را می‌داند یا خیر.

اثبات غیرتعاملی، ارتباط بین اثبات‌کننده و تاییدکننده را کاهش می‌دهد و اثبات‌کننده‌های دانش صفر را کارآمدتر می‌کند. علاوه بر آن، به‌محض تولید هر اثبات، برای تایید اشخاص دیگر (به شرط داشتن کلید مشترک و الگوریتم تایید) در دسترس است.

اثبات‌ غیرتعاملی پیشرفتی برای فناوری دانش صفر محسوب می‌شد و باعث توسعۀ سیستم‌های اثبات مورد استفادۀ امروزی شد. در زیر به معرفی انواع آن‌ می‌پردازیم:

انواع اثبات دانش صفر

ZK-SNARKs

ZK-SNARK مخفف عبارت Zero-Knowledge Succinct Non-Interactive Argument of Knowledge است. پروتکل ZK-SNARK دارای ویژگی‌های زیر است:

  • دانش صفر: یک تاییدکننده می‌تواند یکپارچگی یک گزاره را بدون دانستن چیز دیگری در مورد آن گزاره تایید کند. تنها دانش تاییدکننده از گزاره، درست یا نادرست بودن آن است.

  • موجز: اثبات دانش صفر کوچک‌تر از شاهد، و به‌سرعت قابل تایید است.

  • غیرتعاملی: اثبات «غیرتعاملی» است، زیرا اثبات‌کننده و تاییدکننده فقط یک دور باهم تعامل دارند، برخلاف اثبات‌های تعاملی که به چندین دور ارتباط نیاز دارند.

  • استدلال: اثبات، شرط «صحت» را برآورده می‌کند، بنابراین تقلب بسیار بعید است.

  • (از) دانش: اثبات دانش صفر بدون دسترسی به اطلاعات محرمانه (شاهد) قابل ساخت نیست. برای اثبات‌کننده‌ای که شاهد ندارد، اگر نگوییم غیرممکن، اما دشوار است که یک اثبات دانش صفر معتبر را محاسبه کند.

«کلید مشترک» که قبلاً به آن اشاره کردیم، به پارامترهای عمومی‌ اشاره دارد که اثبات‌کننده و تاییدکننده توافق می‌کنند از آن‌ها در تولید و تایید شواهد استفاده کنند. تولید پارامترهای عمومی (که در مجموع، به ‌عنوان رشتۀ مرجع مشترک یا به‌اختصار CRS شناخته می‌شود) به دلیل اهمیت آن در امنیت پروتکل، یک عملیات حساس است. اگر آنتروپی (تصادفی بودن) مورد استفاده در تولید CRS به دست یک اثبات‌کنندۀ نااهل بیفتد، ممکن است اثبات‌های تقلبی را محاسبه کنند.

محاسبات چندجانبه که به‌اختصار MPC گفته می‌شود(opens in a new tab)، راهی برای کاهش ریسک در تولید پارامترهای عمومی است. در این نوع محاسبات، چندین طرف در یک مراسم راه‌اندازی مورد اعتماد(opens in a new tab) شرکت می‌کنند، که در آن هر فرد مقادیری تصادفی برای تولید CRS ارائه می‌کند. تا زمانی که یک طرف صادق بخشی از آنتروپی خود را از بین ببرد، پروتکل ZK-SNARK سلامت محاسباتی را حفظ می‌کند.

راه‌اندازی‌های مورد اعتماد، کاربران را ملزم می‌کنند در تولید پارامتر به شرکت‌کنندگان اعتماد کنند. با این حال، توسعۀ ZK-STARKs پروتکل‌های اثباتی را فعال کرده است که با یک راه‌اندازی غیرمعتمد کار می‌کنند.

ZK-STARKs

ZK-STARK مخفف عبارت Zero-Knowledge Scalable Transparent Argument of Knowledge است. ZK-STARKها مشابه ZK-SNARKها هستند، با این تفاوت که ویژگی‌های زیر را دارند:

  • مقیاس‌پذیر: در مواقعی که اندازۀ شاهد بزرگ‌تر است، ZK-STARK در ایجاد و تایید مدارک، سریع‌تر از ZK-SNARK عمل می‌کند. با بزرگ‌تر شدن شاهد، زمان‌ مورد نیاز برای اثبات و تایید توسط اثبات‌های STARK تنها اندکی افزایش پیدا می‌کند (زمان‌های اثبات‌کننده و تاییدکنندۀ SNARK با افزایش اندازۀ شاهد به صورت خطی افزایش می‌یابند).

  • شفاف: برای ایجاد پارامترهای عمومی به منظور اثبات و تایید، ZK-STARK به جای این‌که به راه‌اندازی مورد اعتماد متکی باشد، به تصادف قابل تایید عمومی متکی است. بنابراین، در مقایسه با ZK-SNARK شفاف‌تر هستند.

ZK-STARKها، نسبت به ZK-SNARKها اثبات‌های بزرگ‌تری تولید می‌کنند، به این معنی که معمولاً منابع/هزینۀ بیشتری برای تایید نیاز دارند. با این حال، ممکن است در برخی موارد (مانند اثبات مجموعه داده‌های بزرگ)، ZK-STARK نسبت به ZK-SNARK مقرون‌به‌صرفه‌تر باشد.

موارد استفادۀ اثبات دانش صفر

پرداخت‌های ناشناس

پرداخت‌های کارت اعتباری اغلب برای چندین طرف، از جمله ارائه‌دهندۀ خدمات پرداخت، بانک‌ها و سایر اشخاص ذینفع (مانند مقامات دولتی) قابل مشاهده است. هرچند نظارت مالی برای شناسایی فعالیت‌های غیرقانونی مزیت‌هایی دارد، اما حریم خصوصی شهروندان عادی را نیز تضعیف می‌کند.

رمزارزها به‌ عنوان ابزاری در خدمت کاربران، برای انجام معاملات محرمانه و همتا به همتا در نظر گرفته شده بودند. اما بیشتر تراکنش‌های ارزهای دیجیتال در بلاک‌چین‌های عمومی به طور آشکار قابل مشاهده‌اند. هویت‌ کاربران اغلب مستعار است یا به طور عمدی به هویت‌ دنیای واقعی آن‌ها مرتبط می‌شود (مثلاً با قرار دادن آدرس‌های ETH در پروفایل‌های توییتر یا گیت‌هاب)، یا ممکن است با استفاده از تجزیه و تحلیل داده‌های اولیه و آفچین، با هویت‌ دنیای واقعی آن‌ها مرتبط شود.

«سکه‌های حریم خصوصی» خاصی وجود دارد که برای تراکنش‌های کاملاً ناشناس طراحی شده‌اند. بلاک‌چین‌های متمرکز بر حریم خصوصی، مانند Zcash و Monero، از جزئیات تراکنش، از جمله آدرس‌های فرستنده/گیرنده، نوع دارایی، مقدار، و جدول زمانی تراکنش محافظت می‌کنند.

شبکه‌های بلاک‌چین متمرکز بر حریم خصوصی با استفاده از فناوری دانش صفر در پروتکل، به گره‌ها اجازه می‌دهند تا تراکنش‌ها را بدون نیاز به دسترسی به داده‌های تراکنش تایید کنند.

اثبات‌ دانش صفر همچنین برای ناشناس کردن تراکنش‌ها در بلاک‌چین‌های عمومی استفاده می‌شود. به عنوان مثال، Tornado Cash یک سرویس غیرمتمرکز و غیرسرپرستی است که به کاربران اجازه می‌دهد تا تراکنش‌های محرمانه را در اتریوم انجام دهند. Tornado Cash از اثبات دانش صفر برای مخفی کردن جزئیات تراکنش و تضمین حریم خصوصی مالی استفاده می‌کند. متأسفانه، به این دلیل که ابزارهای حفظ حریم خصوصی «انتخابی» هستند، با فعالیت‌های غیرقانونی همراهند. برای غلبه بر این امر، حریم خصوصی در نهایت باید به پیش‌فرض در بلاک‌چین‌های عمومی تبدیل شود.

حفاظت از هویت

سیستم‌های کنونی مدیریت هویت، اطلاعات شخصی را در معرض خطر قرار می‌دهند. اثبات دانش صفر به افراد کمک می‌کند تا هویت خود را تایید، و در عین حال از اطلاعات حساس محافظت کنند.

اثبات دانش صفر به‌ویژه در زمینۀ هویت غیرمتمرکز مفید است. هویت غیرمتمرکز (که «هویت خودمختار» نیز نامیده می‌شود) توانایی کنترل دسترسی به شناسه‌های شخصی را به فرد می‌دهد. اثبات شهروندی بدون فاش کردن جزئیات شناسۀ مالیاتی یا اطلاعات گذرنامه، نمونۀ خوبی است که نشان می‌دهد چگونه فناوری دانش صفر هویت غیرمتمرکز را امکان‌پذیر می‌کند.

احراز هویت

استفاده از خدمات آنلاین پلتفرم‌ها مستلزم اثبات هویت و حق دسترسی شما به آن پلتفرم‌ها است. این امر اغلب مستلزم ارائۀ اطلاعات شخصی مانند نام، آدرس ایمیل، تاریخ تولد و غیره است. همچنین ممکن است لازم باشد رمزهای عبور طولانی را به خاطر بسپارید یا در خطر از دست دادن دسترسی باشید.

با این حال، اثبات‌ دانش صفر می‌تواند احراز هویت را هم برای پلتفرم‌ها و هم برای کاربران ساده‌ کند. هنگامی که یک ZK-proof با استفاده از ورودی‌های عمومی (مانند داده‌هایی که عضویت کاربر در پلتفرم را تایید می‌کند) و ورودی‌های خصوصی (مانند جزئیات کاربر) تولید شد، کاربر می‌تواند به‌سادگی آن را برای احراز هویت خود در زمانی که نیاز به دسترسی دارد ارائه کند. این امر تجربۀ کاربران را بهبود می‌بخشد و سازمان‌ها را از نیاز به ذخیرۀ حجم عظیمی از اطلاعات کاربران معاف می‌کند.

محاسبه قابل تایید

محاسبات قابل تایید یکی دیگر از کاربردهای فناوری اثبات دانش صفر برای بهبود طرح‌های بلاک‌چین است. محاسبه قابل تایید به ما امکان می‌دهد ضمن حفظ نتایج قابل تایید، محاسبات را به نهاد دیگری برون‌سپاری کنیم. آن نهاد نتیجه را همراه با اثباتی که تایید می‌کند برنامه به‌درستی اجرا شده است، ارسال می‌کند.

اهمیت اساسی محاسبه قابل تایید، در بهبود سرعت پردازش بلاک‌چین‌ها بدون کاهش امنیت است. درک این موضوع مستلزم دانستن تفاوت‌‌های راه‌حل‌های پیشنهادی برای مقیاس‌پذیری اتریوم است.

راه‌حل‌های مقیاس‌پذیری آنچین، مانند شاردینگ، نیاز به اصلاح گستردۀ لایۀ پایۀ بلاک‌چین دارند. با این حال، این رویکرد بسیار پیچیده است و اشتباهات در پیاده‌سازی می‌تواند مدل امنیتی اتریوم را تضعیف کند.

راه‌حل‌های مقیاس‌پذیری آفچین نیازی به طراحی مجدد پروتکل هستۀ اتریوم ندارند. در عوض، برای بهبود توان عملیاتی در لایۀ پایۀ اتریوم به یک مدل محاسباتی برون‌سپاری شده تکیه می‌کنند.

در عمل این‌گونه کار می‌کنند:

  • اتریوم به جای پردازش هر تراکنش، اجرا را در یک زنجیرۀ جداگانه بارگذاری می‌کند.

  • پس از پردازش تراکنش‌ها، زنجیرۀ دیگر، نتایج را برای اعمال به حالت اتریوم برمی‌گرداند.

در اینجا، مزیت این است که اتریوم نیازی به اجرا ندارد و فقط باید نتایج حاصل از محاسبات برون‌سپاری‌شده را در حالت خود اعمال کند. این امر ازدحام شبکه را کاهش می‌دهد و در عین حال سرعت تراکنش را بهبود می‌بخشد (پروتکل‌های آفچین برای اجرای سریع‌تر بهینه می‌شوند).

زنجیره نیاز به روشی دارد تا معاملات آفچین را بدون اجرای مجدد آن‌ها اعتبارسنجی کند، در غیر این صورت ارزش اجرای آفچین از بین می‌رود.

اینجا همان جایی است که محاسبه قابل تایید وارد عمل می‌شود. هنگامی که یک گره، تراکنشی را خارج از اتریوم اجرا می‌کند، برای اثبات صحت اجرای آفچین، اثبات دانش صفر را ارائه می‌دهد. این اثبات (که

نامیده می‌شود) معتبر بودن یک تراکنش را تضمین می‌کند و به اتریوم اجازه می‌دهد تا نتیجه را در حالت خود اعمال کند، بدون این‌که انتظار داشته باشد کسی آن را مورد تردید قرار دهد.

رول آپ‌های دانش صفر و ولیدیوم‌ها دو راه‌حل مقیاس‌پذیری آفچین هستند که از اثبات اعتبار برای ارائۀ مقیاس‌پذیری ایمن استفاده می‌کنند. این پروتکل‌ها هزاران تراکنش را به صورت آف‌چین اجرا می‌کنند و اثبات‌هایی را برای تایید در شبکۀ اتریوم ارائه می‌کنند. این نتایج را می‌توان بلافاصله پس از تایید اثبات اعمال کرد که به اتریوم اجازه می‌دهد تراکنش‌های بیشتری را بدون افزایش محاسبه در لایۀ پایه پردازش کند.

کاهش رشوه و تبانی در رای‌گیری آنچین

طرح‌های رای‌گیری بلاک‌چین ویژگی‌های مناسب زیادی دارند: آن‌ها کاملاً قابل ممیزی، ایمن در برابر حملات، مقاوم در برابر سانسور و عاری از محدودیت‌های جغرافیایی هستند. اما حتی طرح‌های رای‌گیری آنچین نیز از مشکل تبانی مصون نیستند.

تبانی که به عنوان «هماهنگی برای محدود کردن رقابت آزاد از طریق فریب دادن، گول زدن و گمراه کردن دیگران» تعریف می‌شود، ممکن است از طریق یک طرف بدخواه که با ارائۀ رشوه بر رای‌گیری تاثیر می‌گذارد، عملی شود. به عنوان مثال، آلیس ممکن است از باب رشوه بگیرد تا به گزینۀ B رأی دهد، حتی اگر ترجیح خودش گزینۀ A باشد.

رشوه و تبانی، اثربخشی هر فرایندی را که از رای دادن به عنوان مکانیسم سیگنال‌دهی استفاده می‌کند کاهش می‌دهد (به‌ویژه در جایی که کاربران می‌توانند نحوۀ رای دادن خود را ثابت کنند). این امر می‌تواند عواقب قابل توجهی داشته باشد، به‌ویژه در مواردی که آرا تعیین‌کنندۀ تخصیص منابع کمیاب هستند.

برای مثال، مکانیسم‌های تامین مالی ثانویه(opens in a new tab) برای سنجش و اولویت‌‌بندی گزینه‌های خاص از میان پروژه‌های مختلف نفع عمومی، بر اعانه‌ها تکیه می‌کنند. هر اعانه به عنوان یک «رای» برای یک پروژۀ خاص محسوب می‌شود و هر پروژه‌ای که رای بیشتری بیاورد وجوه بیشتری از استخر مربوطه دریافت می‌کند.

استفاده از رای‌گیری آنچین، تامین مالی ثانویه را مستعد تبانی می‌کند: تراکنش‌های بلاک‌چین عمومی هستند، بنابراین رشوه‌دهندگان می‌توانند فعالیت آنچین رشوه‌گیران را بررسی کنند تا ببینند چگونه «رای داده‌اند». به این ترتیب، بودجۀ ثانویه دیگر ابزاری موثر برای تخصیص بودجه بر اساس ترجیحات جمعی جامعه نخواهد بود.

خوشبختانه، راه‌حل‌های جدیدتر مانند MACI که مخفف Minimum Anti-Collusion Infrastructure (زیرساخت ضد تبانی حداقل) است، از اثبات دانش صفر استفاده می‌کنند تا رای‌گیری آنچین (مانند مکانیسم‌های تامین مالی ثانویه) را در برابر رشوه و تبانی مقاوم کنند. MACI مجموعه‌ای از قراردادهای هوشمند و اسکریپت‌ها است که به یک مدیر مرکزی (که «هماهنگ‌کننده» نامیده می‌شود) اجازه می‌دهند تا رای‌ها را بدون افشای جزئیات نحوۀ رای دادن افراد جمع‌آوری و شمارش کند. با این حال، هنوز هم می‌توان شمارش صحیح آرا یا مشارکت یک فرد خاص در رای‌گیری را تایید کرد.

MACI چگونه با اثبات دانش صفر کار می‌کند؟

در ابتدا، هماهنگ‌کننده قرارداد MACI را بر روی شبکۀ اتریوم قرار می‌دهد، پس از آن کاربران می‌توانند برای رای دادن (با ثبت کلید عمومی خود در قرارداد هوشمند) ثبت‌نام کنند. کاربران با ارسال پیام‌های رمزگذاری‌شده از طریق کلید عمومی خود در قرارداد هوشمند رای می‌دهند (از جمله معیارهای دیگر این است که یک رای معتبر باید با جدیدترین کلید عمومی مرتبط با هویت کاربر امضا شود). سپس، هماهنگ‌کننده پس از پایان دورۀ رای‌گیری، همۀ پیام‌ها را پردازش می‌کند، آرا را جمع‌آوری و نتایج را در زنجیره تایید می‌کند.

در MACI، از اثبات‌های دانش صفر برای اطمینان از صحت محاسبه استفاده می‌شود، زیرا هماهنگ‌کننده نمی‌تواند به ‌طور نادرست آرا را پردازش و نتایج را محاسبه کند. این امر با درخواست از هماهنگ‌کننده برای ایجاد اثبات‌های ZK-SNARK به دست می‌آید که تایید می‌کند الف) همۀ پیام‌ها به‌درستی پردازش شده‌اند؛ ب) نتیجۀ نهایی با مجموع آرای معتبر مطابقت دارد.

بنابراین، حتی بدون به اشتراک گذاشتن آرای تک‌تک کاربران (که معمولاً اتفاق می‌افتد)، MACI صحت و سلامت نتایج محاسبه‌شده در فرایند شمارش آرا را تضمین می‌کند. این ویژگی در کاهش اثربخشی طرح‌های تبانی اساسی مفید است. در ادامه، این احتمال را با استفاده از مثال قبلی رشوه دادن باب به آلیس برای رای دادن به گزینۀ مد نظرش، بررسی می‌کنیم:

  • آلیس با ارسال کلید عمومی خود به یک قرارداد هوشمند، برای رای دادن ثبت‌نام می‌کند.
  • آلیس در ازای دریافت رشوه از باب، با او توافق می‌کند که به گزینۀ B رای دهد.
  • آلیس به گزینۀ B رای می‌دهد.
  • آلیس به‌ طور محرمانه یک تراکنش رمزگذاری‌شده برای تغییر کلید عمومی مرتبط با هویت خود ارسال می‌کند.
  • آلیس با استفاده از کلید عمومی جدید، پیام دیگری (رمزگذاری‌شده) مبنی بر رای دادن به گزینۀ A به قرارداد هوشمند می‌فرستد.
  • آلیس تراکنشی را به باب نشان می‌دهد تا بگوید او به گزینۀ B رای داده است (که نامعتبر است، زیرا کلید عمومی دیگر با هویت آلیس در سیستم مرتبط نیست)
  • در حین پردازش پیام‌ها، هماهنگ‌کننده رای آلیس برای گزینۀ B را نادیده می‌گیرد و تنها رای گزینۀ A را می‌شمارد. از این رو، تلاش باب برای تبانی با آلیس و دستکاری در رای‌گیری آنچین با شکست مواجه می‌شود.

استفاده از MACI نیازمند اعتماد به هماهنگ‌کننده مبنی بر تبانی نکردن با رشوه‌دهندگان یا تلاش برای رشوه دادن رای‌دهندگان از سوی او است. هماهنگ‌کننده می‌تواند پیام‌های کاربران را رمزگشایی کند (برای ایجاد اثبات لازم است)، بنابراین آن‌ها می‌توانند نحوۀ رای دادن هر فرد را به‌ طور دقیق تایید کنند.

اما در مواردی که هماهنگ‌کننده صادق است، MACI ابزاری قدرتمند برای تضمین سلامت رای‌گیری آنچین است. این امر بیان‌کنندۀ دلیل محبوبیت آن در میان برنامه‌های تامین مالی ثانویه (مانند clr.fund(opens in a new tab)) است که به‌شدت بر صحت آرای تک‌تک افراد متکی است.

درباره MACI بیشتر بیاموزید(opens in a new tab).

معایب استفاده از اثبات دانش صفر

هزینه‌های سخت‌افزاری

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

هزینه‌های تایید اثبات

تایید اثبات‌ها همچنین نیازمند محاسبه پیچیده است و هزینه‌های پیاده‌سازی فناوری دانش صفر در برنامه‌ها را افزایش می‌دهد. این هزینه به‌ویژه در زمینۀ اثبات محاسبه است. به‌ عنوان مثال، رول‌آپ‌های ZK برای تایید یک اثبات ZK-SNARK در اتریوم حدود 500000 گس هزینه برمی‌دارد و هزینه‌های ZK-STARKها از این رقم هم بالاتر است.

مفروضات اعتماد

در ZK-SNARK، رشته مرجع مشترک (Common Reference String) یا همان پارامترهای عمومی، یک بار تولید می‌شود و از آن پس، برای استفادۀ طرف‌هایی که مایل به شرکت در پروتکل دانش صفر هستند در دسترس خواهند بود. پارامترهای عمومی از طریق یک مراسم راه‌اندازی مورد اعتماد ایجاد می‌شوند، که در آن شرکت‌کنندگان مورد اعتمادند.

اما در واقع، هیچ راهی برای کاربران وجود ندارد تا صداقت شرکا را ارزیابی کنند و آن‌ها ناگزیدند به قول توسعه‌دهندگان اطمینان کنند. اما ZK-STARKها نیازی به مفروضات اعتماد ندارند زیرا تصادفی بودن استفاده‌شده در تولید رشته (استرینگ) به ‌طور عمومی قابل تایید است. در همین حال، محققان در حال کار بر روی راه‌اندازی بدون اعتماد برای ZK-SNARKها هستند تا امنیت مکانیسم‌های اثبات را افزایش دهند.

تهدیدات محاسبات کوانتومی

ZK-SNARK از الگوریتم‌های رمزنگاری انحنای بیضوی (

) برای رمزگذاری استفاده می‌کند. هرچند الگوریتم ECDSA در حال حاضر امن است، توسعۀ رایانه‌های کوانتومی می‌تواند مدل امنیتی آن را در آینده با شکست مواجه کند.

ZK-STARK در برابر تهدید محاسبه کوانتومی مصون در نظر گرفته می شود، زیرا برای رمزگذاری از هش‌های مقاوم در برابر برخورد استفاده می‌کند. برخلاف جفت‌ کلیدهای عمومی-خصوصی که در رمزنگاری انحنای بیضوی استفاده می‌شوند، شکستن هش مقاوم در برابر برخورد، برای الگوریتم‌های محاسبات کوانتومی دشوارتر است.

بیشتر بخوانید

آیا این مقاله مفید بود؟