آکادمی رابکس
بلاک چین
اثبات دانش صفر یا zero knowledge proof

اثبات دانش صفر یا Zero Knowledge چیست؟ بررسی کامل مفهوم و تکنولوژی

  • پیشرفته
  • 3دقیقه
  • 02 اسفند 1401
5
5

فهرست مطالب

  • اثبات دانش صفر یا  Zero Knowledge Proof
  • نحوه کار اثبات دانش صفر Zero Knowledge Proof
  • انواع اثبات Zero Knowledge
  • کاربردهای اثبات دانش صفر
  • معایب استفاده از اثبات دانش صفر
  • جمع‌بندی

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

 

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

 

اثبات دانش صفر یا  Zero Knowledge Proof

«اثبات دانش صفر» (Zero Knowledge Proof) یکی از متداولترین روش‌های حفظ حریم خصوصی در شبکه‌های بلاک چین عمومی است. اثبات دانش صفر روشی است که در آن یک کاربر می‌تواند با استفاده از روش‌های رمزنگاری و بدون افشای اطلاعات واقعی به کاربر دیگری ثابت کند که به محتوای اطلاعات دسترسی دارد.

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

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

به طور ساده می‌توان اثبات دانش صفر را روشی برای اثبات اعتبار یک جمله بدون فاش کردن آن تلقی کرد. در این رابطه «اثبات کننده» (prover) کسی است که می‌خواهد یک ادعا را اثبات کند و «تایید کننده» (verifier) مسئول تایید آن ادعا است. Zero Knowledge Proof برای اولین بار در سال 1985 ارائه شد و با پیشرفت‌هایی که درسال‌های گذشته داشته امروزه در بسیاری از کاربردهای حفظ حریم خصوصی مورد استفاده قرار می‌گیرند.

 

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

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

فرض کنید شما می‌خواهید به یک ارائه‌دهده خدمات ثابت کنید که شهروند ایران هستید. برای این منظور شما باید کارت ملی، گواهی‌نامه  یا پاسپورت خود را به عنوان سند به سیستم ارائه کنید. اطلاعات ارائه شده توسط شما در سرورهای شبکه ذخیره می‌شود که در معرض هک و فاش شدن هستند. علاوه بر این شما برای یک داده ساده مجبور به ارائه حجم زیادی از اطلاعات هستید.

اثبات دانش صفر این مشکل را با حذف نیاز به افشای اطلاعات برای اثبات اعتبار ادعاها حل می‌کند. پروتکل Zero Knowledge Proof از یک جمله ورودی که به آن «Witness» می‌گویند برای تولید یک اثبات مختصر اعتبار استفاده می‌کند. این اثبات یک ضمانت قدرتمند برای اثبات درستی یک جمله بدون انتشار اطلاعات خود جمله است.

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

 

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

 

نحوه کار اثبات دانش صفر Zero Knowledge Proof

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

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

  • کامل بودن Completeness: اگر ورودی معتبر باشد، پروتکل دانش صفر همیشه خروجی True ارسال می‌کند. بنابراین، اگر داده درست باشد و اثبات کننده و تایید کننده صادقانه فعالیت کنند، اثبات دانش صفر مورد قبول خواهد بود.
  • صحت Soundness: اگر ورودی نامعتبر باشد، به صورت تئوری امکان گول زدن پروتکل برای ارسال خروجی True وجود ندارد. بنابراین، یک اثبات کننده دروغگو قادر به گول زدن یک تایید کننده صادق برای تایید اطلاعات نادرست نیست (یک احتمال ناچیز همواره وجود دارد).
  • دانش صفر Zero Knowledge: تایید کننده تراکنش هیچ چیزی در مورد داده به جز تایید درستی با اشتباه بودن آن نمی‌داند. به عبارتی آن‌ها در مورد اطلاعات اصلی هیچ دانشی ندارند.

هر پروتکل اثبات دانش صفر باید شامل این سه ویژگی باشد تا بتواند در تایید اطلاعات با حفظ حریم خصوصی کاربران مورد استفاده قرار بگیرد. در وضعیت پایه، اثبات دانش صفر از سه مولفه «شاهد» (witness)، «چالش» (challenge) و «پاسخ» (response) تشکیل شده است که در ادامه به بررسی آن‌ها می‌پردازیم.

 

مولفه witness در اثبات دانش صفر

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

 

مولفه چالش در Zero Knowledge Proof

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

 

مولفه پاسخ در اثبات دانش صفر

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

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

این سه مولفه در کنار هم ساختار «اثبات دانش صفر تعاملی» (interactive zero-knowledge proof) را توصیف می‌کنند. پروتکل‌های اولیه دانش صفر از اثبات تعاملی استفاده می‌کردند که در آن تأیید اعتبار یک عبارت نیاز به ارتباط رفت و برگشتی بین اثبات‌کننده‌ها و تأییدکنندگان داشت.

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

 

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

 

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

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

برای حل این مشکل سه دانشمند حوزه رمزنگاری با نام‌های «مانوئل بلوم» (Manuel Blum)،«پل فلدمن» (Paul Feldman) و «سیلویو میکالی» (Silvio Micali) اولین روش اثبات دانش صفر غیرتعاملی را ارائه کردند که در آن اثبات کننده و تایید کننده از یک کلید اشتراکی استفاده می‌کنند. این روش اجازه می‌دهد که اثبات کننده دانش خود را از شاهد بدون افشا کردن اطلاعات اثبات کند و مشکلات روش قبلی را نیز نداشته باشد.

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

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

 

انواع اثبات Zero Knowledge

در بخش قبلی روش کار اثبات دانش صفر را بررسی کردیم و متوجه شدیم که امروزه روش‌های غیرتعاملی به دلیل کارایی بالا، بیشتر مورد توجه هستند. در پروژه‌های کریپتوکارنسی از انواع اثبات دانش صفر برای تایید اطلاعات با حفظ حریم خصوصی و افزایش مقیاس‌پذیری استفاده می‌شود. در این بخش از مقاله به بررسی دو نوع معروف اثبات دانش صفر یعنی «ZK-SNARK» و «ZK-STARK» می‌پردازیم.

 

ZK-SNARK چیست؟

یکی از اصلی‌ترین روش‌های ایجاد اثبات دانش صفر مربوط به ZK-SNARK است. این وازه مخفف عبارت «Zero-Knowledge Succinct Non-Interactive Argument of Knowledge» به معنی اثبات دانش صفر غیرتعاملی و مختصر است. این روش از چهار مولفه اصلی ساخته شده است که در ادامه به بررسی مفهوم هر کدام از آن‌ها می‌پردازیم.

  • Zero-Knowledge: تایید کننده می‌توانند اعتبار یک جمله را بدون دانش نسبت به محتوای آن تایید کند. تنها دانشی که تایید کننده در مورد جمله دارد این است که وضعیت آن True یا False است.
  • Succinct: اثبات دانش صفر از اطلاعات شاهد کوتاه‌تر است و به راحتی تایید می‌شود.
  • Non-Interactive: در این روش اثبات کننده و تایید کننده تنها یک بار با یکدیگر ارتباط می‌گیرند و همین یک ارتباط برای تایید نهایی کافی است.
  • Argument of Knowledge: اثبات ایجاد شده در این روش مولفه صحت را تامین می‌کند و تقلب در این فرآیند را به شدت سخت می‌کند. برای اثبات کننده بسیار سخت است (اگر نگوییم غیر ممکن است) که بدون داشتن اطلاعات بتواند یک اثبات دانش صفر معتبر ایجاد کند.

ZK-SNARK یک روش غیرتعاملی اثبات دانش صفر است و  از یک «کلید مشترک» (shared key) برای اثبات استفاده می‌کند. منظور از کلید مشترک متغیرهای عمومی است که اثبات کننده و تایید کننده در جهت استفاده از آن‌ها برای تولید و تایید اثبات‌ها به توافق رسیده‌اند.

تولید متغیرهای عمومی (به صورت عمومی به آن‌ها «رشته مرجع عمومی» (Common Reference String | CRS) گفته می‌شود) یک عملیات حساس است زیرا در امنیت پروتکل اهمیت زیادی دارد. اگر آنتروپی (ویژگی تصادفی بودن) استفاده شده برای تولید CRS به دست یک اثبات کننده بیفتد، در این صورت آن‌ها می‌توانند اثبات‌های نادرست ایجاد کنند.

یک روش برای کاهش این نوع خطرات در تولید پارامترهای عمومی روش ZK-SNARK استفاده از «محاسبات چند جانبه» (Multi-party computation | MPC) است. در این حالت چندین شخص در یک مراسم تنظیم متغیر عمومی قابل اعتماد شرکت می‌کنند. هر شخص در این مراسم مقادیری تصادفی برای تولید CRS ایجاد می‌کند و تا زمانی که یک طرف قابل اعتماد بخش آنتروپی خود را از بین نبرده است پروتکل ZK-SNARK همچنان سلامت خود را حفظ می‌کند.

در این روش کاربران ملزم به اعتماد به شرکت کنندگان در مراسم تولید متغیرهای عمومی هستند. این ویژگی برای پروتکل‌های غیرمتمرکز رمز ارز که نیاز به اعتماد به دیگران را از بین می‌برند، ویژگی مثبتی به شمار نمی‌رود. توسعه ZK-STARK پروتکل‌های اثبات بدون نیاز به اعتماد را ممکن کرده است که در ادامه به بررسی آن می‌پردازیم.

 

انواع الگوریتم های اثبات دانش صفر

 

ZK-STARK چیست؟

دومین نوع اثبات دانش صفر معروف با عنوان ZK-STARK شناخته می‌شود که مخفف عبارت «Zero-Knowledge Scalable Transparent Argument of Knowledge» به معنی اثبات دانش صفر شفاف و مقیاس‌پذیر است. این روش نیز مانند ZK-SNARK از حریم خصوصی با استفاده از تراکنش محرمانه حفاظت می‌کند اما از جهت مقیاس‌پذیری و نیاز به اعتماد متفاوت است.

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

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

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

 

کاربردهای اثبات دانش صفر

اثبات دانش صفر کاربردهای زیادی در فضای تکنولوژی بلاک چین دارد. این اثبات‌ها کاربردهای زیادی در حوزه وب 3، بهبود امنیت شبکه، حفظ حریم خصوصی کاربران و حمایت از مقیاس‌پذیری شبکه‌های بلاک چینی به وسیله پروژه‌های لایه دوم دارد. در این بخش به بررسی مهمترین کاربردهای اثبات دانش صفر در دنیای بلاک چین می‌پردازیم.

 

ایجاد تراکنش های خصوصی

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

پرایوسی کوین ها با پروژه‌های ارز دیجیتال حریم خصوصی مثل «Zcash» و «Monero» برای غلبه بر این مشکل ایجاد شدند. این پروژه‌ها اطلاعات تراکنش‌ها همانند آدرس ارسال کننده، آدرس دریافت کننده، مقدار ارز انتقالی، نوع ارز و زمان تراکنش را مخفی می‌کنند. با استفاده از فناوری اثبات دانش صفر، پرایوسی کوین ها به نودهای خود اجازه می‌دهند تا تراکنش‌ها را بدون نیاز به دسترسی به داده‌های تراکنش‌ها تایید کنند.

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

 

کاربردهای zero knowledge proof

 

حفاظت از هویت کاربران

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

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

 

احراز هویت

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

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

 

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

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

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

در مقابل این روش، راه حل‌های مقیاس‌پذیری خارج از زنجیره قرار دارند که نیازی به تغییر طراحی شبکه اصلی ندارند و به مدل محاسباتی خارج از زنجیره اصلی برای افزایش مقیاس‌پذیری شبکه متکی هستند. برای انجام این کار تراکنش‌های اتریوم در زنجیره‌های دیگر تایید می‌شوند و زنجیره‌ها تنها نتایج را به شبکه اصلی می‌فرستند تا تغییر وضعیت حساب‌ها بر شبکه اعمال شود. به این شبکه‌ها پروژه لایه دوم اتریوم گفته می‌شود.

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

زمانی که بک نود تراکنش را خارج از شبکه اتریوم اجرا می‌کند، اثبات دانش صفر آن را برای اثبات صحت اجرای خارج از زنجیره آن به شبکه اصلی ارسال می‌کند. این اثبات تضمین می‌کند که تراکنش معتبر است و در نتیجه شبکه اتریوم می‌تواند نتیجه آن را در دفتر کل توزیع شده خود اعمال کند. «رول آپ های دانش صفر» (Zero-knowledge rollups) و «ولیدیوم» (validiums) دو راه حل مقیاس‌پذیری خارج ازنجیره معروف هستند که از این روش برای تامین مقیاس‌پذیری امن استفاده می‌کنند.

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

 

جلوگیری از تبانی در رای گیری درون زنجیره‌ای

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

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

 

رول آپ دانش صفر

 

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

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

اولین عیب استفاده از اثبات دانش صفر هزینه‌های سخت‌افزاری است. تولید اثبات دانش صفر با استفاده از محاسبات پیچیده انجام می‌شود که انجام این کار با استفاده از سخت‌افزارهای خاص به بهترین شکل انجام می‌شود. از آنجایی که این سخت‌افزارها گران هستند، افراد عادی به آن‌ها دسترسی ندارند. بنابراین، برنامه‌هایی که از تکنولوژی Zero-Knowledge proof هزینه بیشتری را برای محاسبات خرج می‌کنند.

دومین عیب Zero-Knowledge proof هزینه‌های مربوط به تایید اثبات‌ها است. محاسبات پیچیده این روش باعث شده است که هزینه اثبات و تایید آن‌ها بالا باشد. به عنوان مثال، رول آپ های مبتنی بر اثبات دانش صفر هزینه معادل 500 هزار گس فی برای تایید اثبات ZK-SNARK دریافت می‌کنند و این هزینه برای ZK-STARK بیشتر نیز هست.

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

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

 

جمع‌بندی

اثبات دانش صفر Zero-Knowledge proof یک روش برای اثبات دسترسی به یک داده بدون فاش کردن آن است. این روش برای حفظ حریم خصوصی استفاده می‌شود اما کاربردهای زیادی در افزایش مقیاس‌پذیری شبکه‌های بلاک چین، حفاظت از حریم خصوصی و هویت کاربران دارد. در این مقاله به بررسی مفهوم اثبات دانش صفر و انواع آن پرداختیم و معایب آن را بررسی کردیم.

برچسب های مرتبط

بلاک چین

امتیاز دهید

سوالات متداول

Zero Knowledge Proof چیست؟

اثبات دانش صفر یا Zero Knowledge Proof الگوریتمی است که با استفاده از روش‌های رمزنگاری به کاربران اجازه می‌دهد تا صحت اطلاعات را بدون افشا کردن آن‌ها به دیگران اثبات کنند. با استفاده از اثبات دانش صفر می‌توان حریم خصوصی و مقیاس‌پذیری را به شبکه‌های بلاک چینی اضافه کرد.

تفاوت ZK-SNARK و ZK-STARK چیست؟

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

نظر خود را با ما به اشتراک بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *