Skip to main content

ZK (دانش صفر) چیست؟

توجه: این سند ترجمه خودکار نسخه اصلی انگلیسی است.

ZK (دانش صفر) چیست؟

اثبات‌های دانش صفر (ZK proofs) تکنیکی رمزنگارانه‌اند که به یک طرف (اثبات‌کننده) اجازه می‌دهند طرف دیگر (راستی‌آزما) را متقاعد کند که گزاره‌ای درست است — بدون افشای هیچ اطلاعاتی فراتر از خودِ درستی گزاره. در بلاکچین، اثبات‌های ZK برای سه هدف اصلی به کار می‌روند: حریم خصوصی (پنهان‌کردن جزئیات تراکنش‌ها در عین اثبات اعتبارشان)، مقیاس‌پذیری (فشرده‌سازی تراکنش‌های فراوان در یک اثبات واحد که on-chain راستی‌آزمایی می‌شود) و محاسبات قابل راستی‌آزمایی (اثبات این‌که یک محاسبه off-chain درست انجام شده است).

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

ایده اصلی

مفهوم خلاف شهود است: چگونه می‌توان اثبات کرد چیزی را می‌دانید بدون افشای آن؟ یک قیاس کلاسیک کمک می‌کند.

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

اثبات‌های ZK این شهود را به‌طور ریاضی صورت‌بندی می‌کنند. آن‌ها سه ویژگی را برآورده می‌کنند:

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

اثبات‌های ZK چگونه کار می‌کنند (ساده‌شده)

یک سیستم اثبات ZK این گام‌ها را در بر می‌گیرد:

  1. صورت‌بندی گزاره. ادعای مورد اثبات به‌صورت گزاره‌ای ریاضی بیان می‌شود — معمولاً به‌شکل مدار (سلسله‌ای از عملیات حسابی) یا مجموعه‌ای از معادلات چندجمله‌ای.
  2. شاهد (witness). اثبات‌کننده اطلاعات خصوصی‌ای («شاهد») دارد که گزاره را درست می‌کند. مثلاً شاهد می‌تواند ورودی‌های محاسبه‌ای باشد که خروجی شناخته‌شده‌ای تولید می‌کند.
  3. تولید اثبات. اثبات‌کننده با استفاده از شاهد و گزاره، یک اثبات — شیء ریاضی فشرده‌ای — تولید می‌کند. این کار برای اثبات‌کننده از نظر محاسباتی پرهزینه است.
  4. راستی‌آزمایی اثبات. راستی‌آزما اثبات را در برابر گزاره بررسی می‌کند. راستی‌آزمایی سریع است و به شاهد نیازی ندارد. اگر اثبات معتبر باشد، راستی‌آزما بدون آگاهی از شاهد متقاعد می‌شود که گزاره درست است.

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

zk-SNARK و zk-STARK

دو خانواده اصلی سیستم‌های اثبات ZK بر فضای بلاکچین حاکم‌اند:

zk-SNARK

Succinct Non-interactive Arguments of Knowledge. SNARKها اثبات‌های بسیار کوچکی (چند صد بایت) تولید می‌کنند که راستی‌آزمایی‌شان ارزان است. آن‌ها «غیرتعاملی»‌اند — اثبات‌کننده اثبات را در یک مرحله و بدون رفت‌وبرگشت با راستی‌آزما تولید می‌کند. بیشتر ساختارهای SNARK به راه‌اندازی معتمد (trusted setup) نیاز دارند — مراسمی یک‌باره که پارامترهای عمومی را تولید می‌کند. اگر این راه‌اندازی به خطر بیفتد، تضمین درستی می‌شکند. SNARKهای مدرن (مانند PLONK و گونه‌هایش) از راه‌اندازی معتمد جهانی استفاده می‌کنند که برای هر مداری کار می‌کند و این نگرانی را کاهش می‌دهد اما حذف نمی‌کند.

zk-STARK

Scalable Transparent Arguments of Knowledge. STARKها به راه‌اندازی معتمد نیاز ندارند — «شفاف»‌اند. همچنین امنیت پساکوانتومی دارند (در برابر حملات رایانه‌های کوانتومی مقاوم‌اند). بده‌بستان این است که اثبات‌های STARK بزرگ‌تر از اثبات‌های SNARK هستند و راستی‌آزمایی‌شان تا حدی پرهزینه‌تر است. STARKها به‌ویژه برای محاسبات بزرگ مناسب‌اند، چون زمان اثبات‌کننده‌شان با اندازه محاسبه به‌طور شبه‌خطی رشد می‌کند.

مقایسه

ویژگی zk-SNARK zk-STARK
اندازه اثبات کوچک (چند صد بایت) بزرگ‌تر (ده‌ها تا صدها کیلوبایت)
هزینه راستی‌آزمایی پایین متوسط
راه‌اندازی معتمد لازم (در بیشتر ساختارها) لازم نیست (شفاف)
امنیت پساکوانتومی خیر (در بیشتر ساختارها) بله
هزینه اثبات‌کننده متوسط بالاتر، اما برای مدارهای بزرگ بهتر مقیاس می‌گیرد

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

ZK در بلاکچین: کاربردهای اصلی

حریم خصوصی

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

مقیاس‌پذیری (zk-rollup)

zk-rollupها راهکارهای مقیاس‌پذیری لایه ۲ هستند که تراکنش‌ها را off-chain اجرا می‌کنند، دسته‌بندی می‌کنند و اثباتی ZK تولید می‌کنند مبنی بر این‌که کل دسته درست پردازش شده است. فقط اثبات و چکیده‌ای از تغییرات وضعیت به لایه پایه (لایه ۱) ارسال می‌شود. قرارداد هوشمند L1 اثبات را راستی‌آزمایی و به‌روزرسانی وضعیت را می‌پذیرد. این کار هزاران تراکنش را در یک راستی‌آزمایی اثبات فشرده می‌کند و توان عملیاتی را به‌طور چشمگیری بالا می‌برد، در حالی که امنیت لایه پایه را به ارث می‌برد. پیاده‌سازی‌های مهم zk-rollup شامل zkSync، StarkNet، Polygon zkEVM، Scroll و Linea هستند.

برای مطالب بیشتر درباره مقیاس‌پذیری لایه ۲ ببینید L2.

محاسبات قابل راستی‌آزمایی و zkML

اثبات‌های ZK می‌توانند راستی‌آزمایی کنند که هر محاسبه‌ای درست انجام شده است. این قابلیت به AI هم می‌رسد: zkML از اثبات‌های ZK استفاده می‌کند تا راستی‌آزمایی کند یک مدل یادگیری ماشین از ورودی مشخصی خروجی مشخصی تولید کرده است، بدون افشای وزن‌های مدل یا داده ورودی. قرارداد هوشمند می‌تواند اثبات را on-chain راستی‌آزمایی کند و تضمینی بی‌نیاز از اعتماد بسازد که استنتاج AI درست محاسبه شده است.

zkML یکی از فنی‌ترین و جاه‌طلبانه‌ترین کاربردهای ZK در کریپتو AI است. تضمینی ریاضی (بی‌نیاز از اعتماد) برای استنتاج درست فراهم می‌کند، اما به‌دلیل هزینه محاسباتی تولید اثبات، فعلاً به مدل‌های کوچک محدود است.

چرا ZK برای کریپتو AI مهم است

اثبات‌های ZK دو نیاز حیاتی در AI غیرمتمرکز را پاسخ می‌دهند:

  • AI قابل راستی‌آزمایی. وقتی استنتاج AI روی سخت‌افزار شخص ثالث غیرمعتمد اجرا می‌شود، اثبات‌های ZK می‌توانند درستی نتیجه را بدون اجرای دوباره محاسبه تضمین کنند. این برای اپلیکیشن‌های on-chain که خروجی‌های AI اقدامات قرارداد هوشمند را فعال می‌کنند، ضروری است.
  • حریم خصوصی. اثبات‌های ZK محاسبات AI‌ای را ممکن می‌کنند که در آن‌ها مدل، ورودی یا هر دو خصوصی می‌مانند. کاربر می‌تواند نتیجه‌ای تولیدشده با AI بگیرد بدون این‌که تأمین‌کننده محاسبات پرسش را ببیند، و مالک مدل می‌تواند اثبات کند مدلش استفاده شده بدون افشای وزن‌ها.

در چارچوب ارزیابی DecAIHub، راستی‌آزمایی مبتنی بر ZK شاخصی از یکپارچگی واقعی AI با زنجیره است — پیوندی از نظر ریاضی قابل راستی‌آزمایی میان محاسبات AI در off-chain و وضعیت on-chain می‌سازد.

در کارت‌های پروژه DecAIHub کجا دیده می‌شود

قابلیت‌های مرتبط با ZK در چند جا ظاهر می‌شوند:

  • AI component — مقادیری مانند «zkML inference»، «ZK-verified computation» یا «zero-knowledge proof of inference» نشانگر راستی‌آزمایی AI مبتنی بر ZK هستند.
  • Category — پروژه‌هایی که ZK را برای AI به کار می‌برند ممکن است در دسته‌های AI/Inference یا AI/Compute با ZK به‌عنوان سازوکار راستی‌آزمایی ظاهر شوند.
  • جدول Evidence — شواهد Tier-1 برای ZK شامل قراردادهای راستی‌آزمای مستقرشده، بنچمارک‌های اثبات منتشرشده، پیاده‌سازی مدارها و تراکنش‌های راستی‌آزمایی on-chain است.
  • Artifactهای on-chain — قراردادهای راستی‌آزمای ZK روی زنجیره شواهد مشخصی از یکپارچگی واقعی ZK هستند و به بُعد Onchain necessity کمک می‌کنند.

ZK چه چیزی را اثبات نمی‌کند

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

اشتباه نگیرید با

  • حریم خصوصی — حریم خصوصی هدف گسترده‌تر است. ZK یکی از ابزارهای رسیدن به آن است. سازوکارهای دیگر حریم خصوصی شامل TEE، MPC و رمزنگاری همومورفیک است.
  • TEE (محیط اجرای مطمئن) — TEE محرمانگی مبتنی بر سخت‌افزار می‌دهد. ZK اثبات‌های ریاضی. هر دو برای AI قابل راستی‌آزمایی به کار می‌روند، با فرض‌های اعتماد و بده‌بستان‌های کارایی متفاوت.
  • zkML — کاربرد مشخص اثبات‌های ZK در استنتاج یادگیری ماشین. ZK تکنیک رمزنگارانه عمومی است؛ zkML مورد استفاده تخصصی آن.
  • رمزنگاری (encryption) — رمزنگاری داده را پنهان می‌کند. اثبات‌های ZK گزاره‌هایی درباره داده را بدون افشای آن اثبات می‌کنند. این‌ها عملیات متفاوتی‌اند: رمزنگاری داده را به شکلی ناخوانا تبدیل می‌کند، در حالی که اثبات‌های ZK شواهد ریاضی درباره داده تولید می‌کنند بدون افشای آن.
  • راستی‌آزمایی خوش‌بینانه (optimistic) — فرض می‌کند نتایج درست‌اند و فقط هنگام اعتراض از اثبات‌های تقلب استفاده می‌کند. ZK درستی را از پیش و فعالانه اثبات می‌کند. این‌ها رویکردهای مکملی‌اند که در طراحی‌های متفاوت L2 به کار می‌روند (رول‌آپ‌های خوش‌بینانه در برابر zk-rollupها).

پرسش‌های متداول

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

هر دو خانواده‌هایی از سیستم‌های اثبات دانش صفرند، اما در ویژگی‌های کلیدی فرق دارند. zk-SNARKها اثبات‌های کوچک‌تر و هزینه راستی‌آزمایی پایین‌تری تولید می‌کنند اما معمولاً به راه‌اندازی معتمد — مراسمی یک‌باره برای تولید پارامترهای سیستم — نیاز دارند. zk-STARKها به راه‌اندازی معتمد نیاز ندارند (شفاف‌اند) و امنیت پساکوانتومی دارند، اما اثبات‌هایشان بزرگ‌تر و راستی‌آزمایی‌شان گران‌تر است. انتخاب به کاربرد بستگی دارد: SNARKها وقتی اندازه اثبات و هزینه راستی‌آزمایی حیاتی است ترجیح دارند (مثلاً راستی‌آزمایی on-chain) و STARKها وقتی شفافیت و امنیت بلندمدت در اولویت است.

اثبات‌های ZK چگونه برای مقیاس‌پذیری بلاکچین به کار می‌روند؟

zk-rollupها تراکنش‌ها را به‌صورت دسته‌ای در off-chain اجرا می‌کنند و سپس یک اثبات ZK واحد تولید می‌کنند که کل دسته درست پردازش شده است. این اثبات همراه با چکیده فشرده‌ای از تغییرات وضعیت به بلاکچین لایه ۱ ارسال می‌شود. قرارداد هوشمند L1 اثبات را راستی‌آزمایی می‌کند — که بسیار ارزان‌تر از اجرای دوباره همه تراکنش‌هاست — و به‌روزرسانی وضعیت را می‌پذیرد. این کار به L1 اجازه می‌دهد اثر هزاران تراکنش را با راستی‌آزمایی یک اثبات پردازش کند و توان عملیاتی را به‌طور چشمگیری افزایش می‌دهد.

ارتباط ZK و AI چیست؟

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

آیا اثبات‌های ZK از نظر محاسباتی پرهزینه‌اند؟

تولید اثبات پرهزینه است — به‌مراتب بیشتر از خودِ محاسبه زیربنایی. تولید اثبات ZK برای یک محاسبه می‌تواند ده تا هزار برابر طولانی‌تر از صرفاً اجرای آن محاسبه طول بکشد. اما راستی‌آزمایی اثبات ارزان و سریع است. این عدم تقارن عمدی است: اثبات‌کننده کار سنگین را یک‌بار انجام می‌دهد و هر تعداد راستی‌آزما می‌توانند نتیجه را به‌کارآمدی بررسی کنند. برای کاربردهای بلاکچینی، یعنی تولید گران اثبات در off-chain رخ می‌دهد و راستی‌آزمایی ارزان در on-chain.

منابع خارجی

  • Ethereum.org — Zero-knowledge proofs — معرفی جامع مفاهیم اثبات دانش صفر، انواع آن و کاربردهایش در Ethereum.
  • ZKProof Standards — تلاش جامعه‌محور برای استانداردسازی اصطلاحات، چارچوب‌ها و تعاریف امنیتی اثبات‌های دانش صفر.
  • Vitalik Buterin — An incomplete guide to rollups — مقایسه بنیادین رول‌آپ‌های خوش‌بینانه و ZK به قلم هم‌بنیان‌گذار Ethereum.

همچنین ببینید