الگوریتم های zk-SNARK و zk-STARK از فناوریهای پیشرفته رمزنگاری هستند که با استفاده از مفهوم اثبات دانش صفر، امکان حفظ حریم خصوصی و افزایش مقیاسپذیری در بلاکچین را فراهم میکنند. این دو پروتکل به تریدرها و توسعهدهندگان اجازه میدهند تراکنشها را بدون افشای اطلاعات حساس تأیید کنند. در این مقاله از کریپتونگار، به بررسی مفهوم اثبات دانش صفر، ویژگیها، کاربردها، تاریخچه، مزایا و معایب این الگوریتمها و چشمانداز آینده آنها میپردازیم.
در اوایل آغاز به کار بیت کوین، کاربران آن گاهی اوقات تصور میکردند که تراکنشهایشان ناشناس است، زیرا هویت آفلاین آنها با کلیدهای عمومی کاربران مرتبط نبود. اما در پایان دهه اول قرن بیست و یکم میلادی، تلاشهای هماهنگ دانشمندان داده، هکرها و مجریان قانون ثابت کرد که شناسایی مجدد افرادی که دادههای مستعار را به چندین منبع دادهاند، نه تنها عملی ممکن میباشد، بلکه فرایندی آسان است.
به دلیل فقدان حریم خصوصی برخی از ارزهای دیجیتالِ پر طرفدار مانند بیت کوین، توسعهدهندگان فعالیت خود را بر روی سکههای متمرکز بر حریم خصوصی آغاز کردند. برجستهترین دست آورد حاصل از این فعالیت، فناوری Zcash شناخته میشود که توسط فناوری معروف به zk-SNARKs پشتیبانی میشود.
آنچه در این مطلب میخوانید:
مفهوم اثبات دانش صفر (ZKP) چیست؟
اثبات دانش صفر (Zero Knowledge Proof) یک روش رمزنگاری است که به فرد اجازه میدهد بدون افشای اطلاعات اصلی، صحت ادعای خود را ثابت کند. در این روش، تولیدکننده میتواند صحت یک ادعا را به تأییدکننده اثبات کند، بدون آنکه نیاز باشد محتوای اصلی اطلاعات را فاش کند. این تکنولوژی برای اولین بار توسط شفی گلدواسر، سیلویو میکالی و چارلز راکامف در دهه ۱۹۸۰ معرفی شد.
انواع اثبات دانش صفر
اثباتهای دانش صفر به دو نوع اصلی تقسیم میشوند:
- اثبات تعاملی (Interactive ZKP): در این روش تولیدکننده و تأییدکننده اثبات، چندین بار با یکدیگر تعامل دارند. هر مرحله برای افزایش اطمینان از صحت اثبات انجام میشود.
- اثبات غیرتعاملی (Non-Interactive ZKP): در این روش نیازی به تعامل مستقیم بین دو طرف نیست. تولیدکننده یک پیام رمزنگاریشده واحد ایجاد میکند که برای تأییدکننده کافی است. zk-SNARK و zk-STARK هر دو از این نوع هستند و دلیل کاربرد گسترده آنها در بلاکچین همین ویژگی است.
بیشتر بخوانید: الگوریتم Scrypt چیست؟
الگوریتم zk-SNARK چیست؟
zk-SNARK مخفف عبارت Zero-Knowledge Succinct Non- Interactive Argument of Knowledge است. این فناوری ارزشمند به ایجاد اعتمادسازی در هنگام تعامل در یک شبکه بلاکچین کمک بسزایی میکند. zk-SNARK به طور قابل توجهی به تأیید تراکنش سرعت بخشیده و در عین حال برخی از جزئیات حیاتی تراکنش را پنهان میکند.
در این فناوری عبارت Zero Knowledge به این معنی است که یکی از طرفین معامله میتواند، صحت برخی از گزارهها را تأیید کند، بدون اینکه دلیل درستی آن را آشکار کند. در هنگام عملیات (از طریق اثبات ریاضی)، کاربر به شبکه نشان میدهد که رمز عبور صحیح را در دست خود دارد، بدون اینکه نیازی به افشا کردن رمز عبور باشد. مزایای حریم خصوصی در این شرایط واضح است که اگر رمز عبور خود را در جایی امن ذخیره نگهداری کنید، احتمال هک و سرقت دارایی شما عملی غیرممکن خواهد بود.
هنگام تعامل در یک شبکه بلاکچین، کاربر قبل از اینکه بتواند تراکنشی را به سرانجام رساند، باید اثبات کند که از برخی شرایط لازم برای انجام این معامله برخوردار است. به عنوان مثال، آنها باید اثبات کنند که وجوه کافی را برای انجام یک تراکنش در اختیار دارند، بدون اینکه اطلاعاتی را در مورد مقدار مبلغ موجود در کیف پول خود لو بدهند. در این فناوری اصطلاحات دیگری هم هستند که باید با آنها آشنا شوید.
Succinct
واژه Succinct به معنی اجمالی و مختصر، اهمیت فراوانی دارد. اما منظور از مختصر بودن چیست؟ گواههای اثبات دانش صفر مختصر، میتوانند در چند میلیثانیه تأیید شوند. طول این گواهها هم تنها چند صد بایت است؛ همین کوچک بودن Proof Size میباشد که باعث بالا رفتن سرعت این فناوری میشود.
Non-Interactive
در نسخههای اولیه پروتکلهای دانش صفر، ثابتکننده (Prover) و تأییدکننده (Verifier) باید چندین بار یک فرایند را تکرار کرده و از طریق این تعامل، دسترسی به دانش را اثبات میکردند که این نشاندهنده ویژگی تعاملی بودن آن است. اما در SNARKهایی که از دانش غیرتعاملی بهره میبرند، گواه اثبات تنها شامل پیامی است که از سمت اثباتکننده به تأییدکننده ارسال میشود.
Arguments of Knowledge
اسنارک ها عموماً از لحاظ پردازشی، بینقص شناخته میشوند؛ بدین معنی که یک اثبات کننده فریبکار، شانس بسیار کمی در مقابل این دارد که بتواند سیستم را بدون داشتن اطلاعات فریب دهد. این ویژگی با عنوان بینقص بودن شناخته شده و فرض را بر این میگذارد که ثابتکننده، قدرت پردازشی محدودی دارد. از لحاظ تئوری، اثباتکننده با داشتن قدرت پردازش کافی قادر به این است که گواهی جعلی ایجاد کرده و عمل مخرب را انجام دهد که این مسئله، تهدید اصلی سیستم به شمار میرود.
نحوه کارکرد الگوریتم zk-SNARK
برای فهم بهتر از عملکرد zk-SNARK، آن را با مثالی بیان میکنیم. Zk-SNARKها برای اثبات هویت فرد در یک شبکه بلاکچین نیز مفید هستند. مثلاً اگر فرد x بخواهد هویت فرد y را تأیید کند، میتواند یک پیام مخفی به y بدون اینکه به او بگوید چیست ارسال کرده و از وی بخواهد که پیام را با استفاده از کلید خصوصی خود رمزگشایی کند. سپس y میتواند پیام را برای x ارسال نموده و هویت خود را اثبات کند.
Zk-SNARKs اثبات تراکنشها را در گره بلاکچین ثبت نموده و از هویت فرستنده، گیرنده و سایر جزئیات مرتبط با تراکنش محافظت میکند.
ویژگیهای الگوریتم zk-SNARK
الگوریتم zk-SNARK از ویژگیهای کلیدی متعددی برخوردار است که آن را برای کاربردهای گوناگون جذاب و کارآمد میسازد. در ادامه به برخی از این خصوصیات اشاره میکنیم:
- حفظ حریم خصوصی: این الگوریتم امکان تأیید محاسبات را بدون افشای دادههای ورودی حساس فراهم میکند، که برای برنامههای نیازمند محرمانگی بسیار ارزشمند است.
- کارایی بالا: اثباتهای zk-SNARK کوچک و سریع تأیید میشوند، که به مقیاسپذیری سیستمهای مبتنی بر آن کمک میکند.
- غیر تعاملی بودن: فرایند تأیید تنها به یک پیام از اثباتکننده نیاز دارد، که آن را برای سیستمهای غیر متمرکز و ناهمزمان مناسب میسازد.
- صحت محاسباتی: امنیت این الگوریتم بر پایه دشواری محاسباتی شکستن فرضیات رمزنگاری قوی بنا شده و صحت محاسبات را تضمین میکند.
- نیاز به راهاندازی مورد اعتماد: بسیاری از پیادهسازیهای zk-SNARK به یک مرحله راهاندازی مورد اعتماد اولیه نیاز دارند که در آن کلیدها تولید میشوند. این مرحله باید امن انجام شود تا از جعل اثبات جلوگیری گردد.
- وابستگی به رمزنگاری منحنی بیضوی: بسیاری از طرحهای zk-SNARK بر اساس رمزنگاری منحنی بیضوی (ECC) ساخته شدهاند که ممکن است در برابر حملات رایانههای کوانتومی آسیبپذیر باشند.
کدام ارزها از الگوریتم zk SNARK استفاده می کنند؟
- Zcash (ZEC): یکی از اولین و معروفترین پروژههایی که از zk-SNARK برای حریم خصوصی تراکنشها استفاده کرد.
- Mina Protocol (MINA): با استفاده از zk-SNARK، بلاکچین خود را به یک اثبات کوچک و قابل مدیریت تبدیل کرده است.
- Polygon Hermez (اکنون Polygon Zero): لایه دو مقیاسپذیری برای اتریوم که از zk-SNARK بهره میبرد.
- zkSync Era: یک راهحل مقیاسپذیری لایه دو اتریوم که از zk-SNARK برای تراکنشهای امن و سریع استفاده میکند.
بیشتر بخوانید: معرفی کامل ارز دیجیتال زی کش (ZEC-Zcash) و نحوه خرید و فروش آن
معرفی الگوریتم zk-STARK
zk-STARK مخفف عبارت Zero-Knowledge Scalable Transparent Argument of Knowledge است. zk-STARK در واقع فناوری توسعه یافته Zk-SNARK بوده که به دلیل پیچیدگی الگوریتمی، ریاضی و رمزنگاری بسیار زیادی که اثباتهای zk-SNARKs از آنها برخوردارند، به وجود آمد. ممکن است این ادعا کمی ناباورانه باشد؛ اما حقیقت این است که زمانی این قضیه آشکار شد که تیم توسعهدهندگان زی کش در کدنویسیهای خود دچار یک اشتباه بسیار جدی شدند.
بر اساس این اشتباه، هر کاربری میتوانست از ابتدا بر روی این بلاکچین، اقدام به ایجاد ارزهای دیجیتال دلخواه خود کند. پس در واقع علت به وجود آمدن zk-STARKها را میتوان حاصل از وقوع آن اتفاق دانست. چند مورد از اصطلاحات مهم الگوریتم zk-STARK شامل موارد زیر است.
Scalable
فناوریاستارک به توسعهدهندگان خود این اجازه را میدهد که ذخیرهسازی دادهها و محاسبات موجود را به صورت برون زنجیرهای انجام دهند. گواههای STARK به منظور تأیید صحت محاسبات خارج از زنجیره، توسط سرویسهای Off-Chainتولید میشوند که این عمل باعث افزایش مقیاسپذیری میگردد.
Transparent
برخلاف Zk-SNARK، در فناوری zk-STARK تنظیمات قابل اتکا (Trusted Setup) وجود ندارند. منظور از تنظیمات قابل اتکا، فرایندی است که با هدف تولید پارامترهای استاندارد انجام گشته و پروتکلهای رمزنگاری از آن پارامترها استفاده میکنند. این عمل در یک مرتبه صورت میگیرد و طی آن، دادهای تولید میگردد که با هر مرتبه اجرای پروتکل رمزنگاری مورد استفاده قرار میگیرد.
در اسنارک، به یک شخص قابل اطمینان نیاز بوده تا تنظیمات سیستم zk Proof را انجام دهد؛ این در حالی میباشد استارکها با پارامترهای عمومی و تصادفی سروکار دارند که همین قضیه موجب عملکرد بهتر آن با نتایج اثربخشتر میشود.
zk-STARK چگونه کار می کند؟
در zk-STARK برخلاف zk-SNARK نیازی به راهاندازی اولیه نیست. این الگوریتم با بهرهگیری از توابع هش و محاسبات پیچیده ریاضی، اثباتهایی تولید میکند که قابل تأیید و بسیار امن هستند. هرچند اندازه فایلهای اثبات در zk-STARK نسبت به zk-SNARK بزرگتر است، اما مقیاسپذیری بالاتری دارد.
ویژگیهای اصلی الگوریتم zk-STARK
- شفافیت (Transparency): عدم نیاز به رابط قابل اعتماد، آن را بسیار شفافتر و امنتر میکند.
- مقیاسپذیری (Scalability): امکان ایجاد اثبات برای محاسبات بسیار بزرگ را فراهم میکند.
- مقاومت در برابر حملات کوانتومی: برخی مطالعات نشان میدهند که zk-STARK در برابر حملات کامپیوترهای کوانتومی مقاومتر است، زیرا مبتنی بر رمزنگاری مبتنی بر هش است.
- اثباتهای بزرگتر: این یک نقطه ضعف نسبی است، زیرا حجم بیشتر اثباتها میتواند منجر به هزینههای تراکنش بالاتر در بلاکچین شود (البته راهحلهایی برای بهینهسازی این موضوع در حال توسعه است).
معرفی ارزهای دیجیتال که از الگوریتم zk SNARK استفاده می کنند
پروژههای بلاکچینی محدودی تاکنون از zk-STARK استفاده کردهاند، اما برخی از آنها عبارتاند از:
- استارک نت (StarkNet): یک راهکار لایه دوم اتریوم که از zk-STARK برای مقیاسپذیری و حریم خصوصی استفاده میکند.
- پالیگان (Polygon): در برخی پروژههای خود مانند Mir Protocol از zk-STARK بهره میبرد.
- دی وای دی ایکس (dYdX): صرافی غیرمتمرکز لایه دوم با کارمزد نزدیک به صفر.
بیشتر بخوانید: معرفی پلتفرم پالیگان (Polygon)
تاریخچه zk-SNARK و zk-STARK
SNARK از مفهوم دانش صفر گرفته شده که برای اولین بار در اواخر دهه ۱۹۸۰ معرفی شد. این فناوری، که با هدف حل مشکل حفظ ناشناسی در بلاکچین بیت کوین ظهور کرد، اکنون در رمز ارز زی کش (Zcash) به کار رفته است. در ژانویه سال ۲۰۱۲ (دی ۱۳۹۰)، پروفسور الساندرو کیهزا از دانشگاه UC Berkeley، با همکاری ران کانتی، نیر بیتانسکی و ارن ترومر، مقالهای منتشر کرد. در این مقاله، آنها از اصطلاح zk-SNARK برای تعریف نوع جدیدی از گواههای دانش صفر استفاده کردند.
برای اطلاع از آغاز پیدایش zk-STARK، باید به سال ۱۹۹۰ بازگردیم؛ زیرا تحقیقات اولیه درباره این فناوری به همان دوران برمیگردد. البته آن سیستمهای اولیه قابلیت عملیاتی نداشتند. سرانجام در سال ۲۰۱۸، الی بن ساسون، ایدو بنتوف، ینون هورش و مایکل ریابزف اثر مشترک خود را با عنوان “Scalable, transparent, and post-quantum secure computational integrity” منتشر کردند. این اثر به دلیل ساختار رمزنگاری مستحکمش بینظیر بود؛ ساختاری که عملکردی به مراتب بهتر از آزمایشهای شناخته شده zk-SNARK در زی کش داشت. این فناوری نه تنها ایمنتر از نمونههای مشابه بود، بلکه پیادهسازی سادهتری نیز داشت.
هدف از راه اندازی اسنارک و استارک چه بود؟
زمانی که موضوع مورد بحث، مربوط به حفظ حریم خصوصی در فناوریهای مختلفی به ویژه بلاکچین و ارزهای دیجیتال باشد؛ همه کاربران این مسئله را بسیار مهم و اساسی خطاب نموده و اعتقادشان بر این است که باید در اینگونه موارد، تلاشهای موفقیتآمیزی صورت گیرد. همین مسئله اهمیت فناوریهای مبتنی بر دانش صفر را پررنگتر میکند. یکی از مهمترین فناوریهای این دسته که شاید بتوان آن را یکی از بهترین فناوریهای حریم خصوصی دنیا دانست، با نام zk-SNARK معرفی شد.
یکی از کارهای مفیدی که این فناوری از خود نشان داد این بود که با درآمیخته شدن خود در برخی از شبکههای اجتماعی توانست، مانع از فروش اطلاعات شخصی کاربران به گروههای خاص و شرکتهای تبلیغاتی شود. همچنین فناوری zk-SNARK موفق شد با ایجاد حریمی مناسب در انجام معاملات مالی و اقتصادی، از لورفتن اطلاعات اشخاص جلوگیری نماید. البته در ادامه این مسیر، فناوری zk-STARK به عنوان فناوری توسعهیافته zk-SNARK که حاصل از تغییرات ساختاری عظیمی بود توانست به شکلی مؤثرتر همان مسیر را ادامه دهد.
پس با در نظر گرفتن این موارد اگر بخواهیم به دلیل و هدفی که باعث به وجود آمدن zk-SNARK و zk-STARK شد بپردازیم؛ باید این علت را به خوبی گره گشایی کنیم. ارائهدهندگان استارک میخواستند سازوکار جدیدی را با رویکردی بسیار اساسیتر، در مورد چگونگی ایجاد آزمونهای دانش صفر انجام بدهند. آنچه که به نظر با اصول امنیتی در رمزارزها مغایرت دارد، در سیستم zk-STARK اعمال شد. اما در همان زمان، این تصمیمات، پیچیدگی سیستم را کم و پیادهسازی آن را آسان کرد؛ بدون اینکه امنیت آن را پایین آورد؛ چه بسا حتی میتوان گفت که امنیت آن ارتقا یافت.
در واقع هدف کلی هر دو الگوریتم، کمک به حریم خصوصی کاربران است؛ هر چند که STARK با هدف بهینهسازی SNARK به وجود آمد. اما این به آن معنا نیست که استارک از اسنارک بهتر میباشد؛ بهتر یا بدتر بودن یک فاکتور نسبی است. به ویژه آنکه zk-SNARK هم جامعه بزرگتری دارد و هم از محبوبیت بیشتری برخوردار است.
مقایسه مزایا و معایب zk-STARK و zk-SNARK
ویژگی | zk-SNARK | zk-STARK |
---|---|---|
اندازه گواه | کوچک و فشرده | بزرگتر و نیازمند فضای بیشتر |
سرعت تأیید | بسیار سریع | کندتر به دلیل حجم گواه |
نیاز به تنظیم اولیه | نیاز به تنظیم قابل اعتماد | بدون نیاز به تنظیم قابل اعتماد |
مقاومت کوانتومی | آسیبپذیر | مقاوم |
مقیاسپذیری | محدود برای دادههای بزرگ | مناسب برای دادههای بزرگ |
شفافیت | کمتر به دلیل تنظیم اولیه | بالاتر به دلیل استفاده از randomness عمومی |
آینده الگوریتم های zk-SNARK و zk-STARK
آینده الگوریتمهای zk-SNARK و zk-STARK در دنیای بلاکچین بسیار روشن است. هر دو الگوریتم نقش کلیدی در حل دو چالش اساسی شامل حریم خصوصی و مقیاسپذیری ایفا میکنند.
- zk-SNARK: به دلیل اثباتهای کوچک و سرعت تأیید بالا، همچنان در پروژههایی که نیاز به حفظ حریم خصوصی تراکنشها دارند (مانند Zcash) و همچنین در راهحلهای مقیاسپذیری لایه دو که به دنبال کاهش حجم دادهها در اتریوم هستند، محبوبیت خود را حفظ خواهد کرد. پیشرفت در زمینه حذف یا بهبود فرآیند “رابط قابل اعتماد” نیز میتواند کاربرد آن را گسترش دهد.
- zk-STARK: با توجه به مزیت شفافیت و مقاومت بیشتر در برابر حملات کوانتومی، به طور فزایندهای در راهحلهای مقیاسپذیری لایه دو (مانند StarkNet) و اثبات محاسبات پیچیده مورد استفاده قرار خواهد گرفت. تحقیقات برای بهینهسازی اندازه اثباتها و کاهش هزینههای مرتبط با zk-STARK نیز در حال انجام است که این امر میتواند در آینده آن را به گزینه غالب در بسیاری از کاربردها تبدیل کند.
انتظار میرود با پیشرفت فناوری رمزنگاری و نیاز روزافزون به بلاکچینهای امنتر، سریعتر و خصوصیتر، استفاده از این الگوریتمها در نسل جدید برنامههای غیرمتمرکز (dApps) و پروتکلهای بلاکچینی افزایش یابد.
جمع بندی
الگوریتمهای zk-SNARK و zk-STARK دو فناوری انقلابی در دنیای اثبات دانش صفر هستند که به طور فزایندهای در بلاکچینها برای افزایش حریم خصوصی و مقیاسپذیری به کار گرفته میشوند. zk-SNARK با اثباتهای کوچک و سرعت تأیید بالا، در پروژههای متمرکز بر حریم خصوصی و مقیاسپذیری لایه دو پیشگام بوده است، در حالی که zk-STARK با حذف نیاز به رابط قابل اعتماد و شفافیت بیشتر، پتانسیل بالایی برای آینده بلاکچین، به ویژه در مقیاسپذیری و امنیت بلندمدت، ارائه میدهد. درک تفاوتها و کاربردهای این دو الگوریتم، برای هر کسی که به دنبال فهم عمیقتر از فناوریهای پشت صحنه بلاکچینهای نسل جدید است، ضروری است.