راهنمای توسعه دهندگان zkGalaxy

راهنمای توسعه دهندگان zkGalaxy

گره منبع: 1946171

معرفی

معاوضه های Vitalik برای zkEVM بین عملکرد و سازگاری

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

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

قدرت انتزاع پیچیدگی

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

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

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

پشته فناوری zk
پشته zk با چند نمونه ابزار/فناوری در هر لایه

توسعه zk سطح پایین

Arkworks-rs

Arkworks-rs اکوسیستمی از کتابخانه های Rust است که پیاده سازی های کارآمد و ایمن از زیرمجموعه های برنامه zkSNARK را ارائه می دهد. Arkworks رابط های لازم را برای توسعه دهندگان فراهم می کند تا پشته نرم افزار را برای یک برنامه zk بدون نیاز به پیاده سازی مجدد مشترکات با سایر کتابخانه های موجود سفارشی کنند.

قبل از Arkworks، تنها راه برای ایجاد یک برنامه جدید zk، ساختن همه چیز از ابتدا بود. مزایای کلیدی Arkworks-rs نسبت به ابزارهای سفارشی ساخته شده و یکپارچه عمودی، سطح انعطاف پذیری، کاهش مهندسی تکراری و کاهش تلاش ممیزی است. خطوط رابط معقول Arkworks بین مؤلفه‌ها امکان ارتقای سرعتی را فراهم می‌کند که می‌تواند پشته را در میان سرعت نوآوری در فناوری‌های zk مرتبط نگه دارد، بدون اینکه تیم‌ها مجبور شوند همه چیز را از ابتدا بازسازی کنند.

برای کیست؟

Arkworks برای پروژه هایی است که نیاز به کنترل دقیق روی کل پشته نرم افزار zk دارند، اما نمی خواهند تمام قطعات اضافی را از ابتدا بسازند. اگر یک نسخه سفارشی از یک مدار DSL را در نظر می گیرید زیرا، برای مثال، در حال نمونه سازی یک سیستم اثبات جدید هستید اما از طرح تعهد یا منحنی بیضوی مربوطه مطمئن نیستید، arkworks به شما این امکان را می دهد که به سرعت بین چندین گزینه با رابط های مشترک جابجا شوید. از شروع از صفر

مزایا

  • انعطاف پذیری از طریق مدولار بودن
  • کدهای تکراری کمتر
    • هزینه مهندسی کمتر
    • کاهش سطح ممیزی/اشکال
  • هر کامپوننت را بدون تغییر فاکتور اصلی ارتقا دهید
  • آزمایش با بدوی های جدید در یک محیط zk که به سرعت در حال تکامل است، آسان است

منفی

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

زبان های خاص دامنه zk (DSL)

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

تجربه توسعه دهنده

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

قاهره – Starkware DSL لازم برای ساخت اپلیکیشن در Starknet. به زبان اسمبلی مخصوص قاهره که می تواند توسط zkVM قاهره تفسیر شود، کامپایل می شود.

ZoKrates - ZoKrates یک ابزار برای نیازهای رایج SNARK از جمله یک زبان سطح بالا برای نوشتن مدارها است. ZoKrates همچنین دارای انعطاف‌پذیری در اطراف منحنی‌ها، طرح اثبات‌کننده و باطن است که به توسعه‌دهندگان اجازه می‌دهد تا با استدلال ساده CLI مبادله کنند.

سیرکام - Circom یک زبان هدفمند برای ساخت مدارها است. در حال حاضر، این زبان عملاً برای مدارهای در حال تولید است. زبان به خصوص ارگونومیک نیست. خود زبان شما را به شدت از این واقعیت آگاه می کند که مدارها را می نویسید.

برج اسد - Leo به عنوان زبان بلاک چین Aleo توسعه داده شد. لئو مقداری دستور Rust مانند دارد و به طور خاص برای انتقال حالت در داخل یک بلاک چین ساخته شده است.

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

پشته تلفیقی Aztec Noir، به ویژه، دارای معماری ماژولار است

برای کیست؟

هر توسعه دهنده برنامه ای که می خواهد از ویژگی های منحصر به فرد zk در برنامه خود استفاده کند. برخی از این زبان‌ها با انتقال میلیاردها دلار از طریق زنجیره‌هایی مانند ZCash و Starknet مورد آزمایش قرار گرفته‌اند. در حالی که برخی از پروژه‌هایی که در مورد آنها بحث خواهیم کرد کاملاً برای استفاده تولید آماده نیستند، نوشتن مدارهای شما به یکی از این زبان‌ها در حال حاضر بهترین استراتژی است، مگر اینکه به کنترل‌های دقیق‌تری نیاز داشته باشید که جعبه ابزاری مانند Arkworks ارائه می‌کند.

مزایا

  • کاربران نیازی به درک جزئیات زیرین zk ندارند
  • امروز موجود است با تجربه تولید
  • قابل تایید روی زنجیره
  • اکوسیستم آگنوستیک

منفی

  • کاربران باید یک DSL جدید یاد بگیرند
  • ابزار Siled و پشتیبانی از هر یک از این زبان ها
  • کنترل کمی بر روی پشته اثبات اصلی (در حال حاضر)

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

تفاوت فنی اصلی بین همه اینها دقیقاً جایی است که در پشته زبان محاسبات به فرمی (حساب سازی) تبدیل می شود که می تواند در یک سیستم اثبات استفاده شود. در برخی از zkEVM ها، این امر در زبان های سطح بالا (Solidity، Vyper، Yul) اتفاق می افتد، در حالی که روش های دیگر تلاش می کنند تا EVM را تا سطح Opcode اثبات کنند. معاوضه بین این رویکردها عمیقاً در پست ویتالیک پوشش داده شد، اما من آن را در یک جمله خلاصه می‌کنم: هرچه تبدیل/حساب‌سازی در پشته کمتر باشد، جریمه عملکرد بزرگ‌تر است.

چرا اپکدهای EVM برای اثبات در zk گران هستند؟

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

در مدارهای جهانی، هر دستورالعمل اجرا شده دارای هزینه ای متناسب با مجموع تمام دستورالعمل های پشتیبانی شده است.

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

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

پیاده‌سازی‌های zkEVM امروزی از استراتژی‌های مختلفی برای کاهش تأثیر این مسئله استفاده می‌کنند... برای مثال، zkSync عملیات‌های گران‌تر (عمدتاً پیش‌کامپایل‌های رمزنگاری مانند هش‌ها و ECDSA) را از مدار اثبات اجرای اصلی به مدارهای جداگانه‌ای تبدیل می‌کند که در کنار هم جمع می‌شوند. پایان از طریق بازگشت snark. zkSync این رویکرد را بعد از اینکه متوجه شد اکثر هزینه‌هایشان از چند دستورالعمل پیچیده است، اتخاذ کرد.

هزینه های تراکنش تحت سلطه چند عملیات گران قیمت است.

در اصل، دلیل اینکه اثبات مجموعه دستورات معادل EVM گرانتر است این است که EVM برای محاسبات zk طراحی نشده است. رها کردن EVM زودتر در پشته به zkEVM ها اجازه می دهد تا بر روی مجموعه دستورالعمل هایی اجرا شوند که برای zk بهینه تر هستند و بنابراین اثبات آن ارزان تر است.

برای کیست؟

مشتریان ایده‌آل برای zkEVM برنامه‌های قرارداد هوشمند هستند که به تراکنش‌های ارزان‌تری نسبت به آنچه در L1 Ethereum موجود است نیاز دارند. این توسعه دهندگان لزوماً تخصص یا پهنای باند لازم برای نوشتن برنامه های zk را از ابتدا ندارند. بنابراین، آنها ترجیح می دهند برنامه های خود را به زبان های سطح بالاتری که با آن آشنا هستند، مانند Solidity بنویسند. 

چرا تیم های زیادی این کار را می کنند؟

مقیاس پذیری اتریوم در حال حاضر مورد تقاضاترین کاربرد تکنولوژی zk است.

zkEVM یک راه حل مقیاس‌پذیری اتریوم است که بدون اصطکاک مشکل ازدحام را که توسعه‌دهندگان L1 dApp را محدود می‌کند، کاهش می‌دهد.

تجربه توسعه دهنده

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

مطالعه موردی سریع: zkSync در مقابل اسکرول

تفاوت اصلی بین zkSync و Scroll این است که در کجا/چه زمانی در پشته آنها حسابی را انجام می دهند - یعنی جایی که آنها از ساختارهای EVM معمولی به یک نمایش دوستدار SNARK تبدیل می شوند. برای zkSync، این زمانی اتفاق می افتد که بایت کد YUL را به مجموعه دستورات zk سفارشی خود تبدیل کنند. برای اسکرول، این در پایان اتفاق می افتد، زمانی که ردیابی واقعی با کدهای عملیاتی EVM واقعی تولید می شود.

بنابراین، برای zkSync، همه چیز مانند تعامل با EVM است تا زمانی که بایت کد zk تولید شود. برای اسکرول، همه چیز یکسان است تا زمانی که بایت کد واقعی اجرا شود. این یک تفاوت ظریف است که عملکرد را با پشتیبانی عوض می کند. به عنوان مثال، zkSync از ابزارهای بایت کد EVM مانند یک دیباگر خارج از جعبه پشتیبانی نمی کند، زیرا بایت کد کاملاً متفاوتی است. در حالی که اسکرول برای دریافت عملکرد خوب از یک مجموعه دستورالعمل مشکل بیشتری خواهد داشت، که برای zk طراحی نشده است. هر دو استراتژی مزایا و معایبی دارند و در نهایت عوامل برونزای زیادی وجود دارد که بر موفقیت نسبی آنها تأثیر می گذارد.

کامپایلر مدار zkLLVM

💡 علیرغم نامگذاری LLVM یک VM (ماشین مجازی) نیست. LLVM نام مجموعه‌ای از ابزارهای کامپایلر است که توسط یک نمایش میانی (IR) که زبان آگنوستیک است، متصل می‌شود.

= صفر بنیاد (در مورد نام، یک است شوخی تزریق SQL اگر تعجب می کنید) در حال ساخت کامپایلری است که می تواند هر زبان ظاهری LLVM را به یک نمایش متوسط ​​تبدیل کند که می تواند در یک SNARK اثبات شود. zkLLVM به عنوان یک توسعه زیرساخت LLVM موجود، یک زنجیره ابزار استاندارد صنعتی است که از بسیاری از زبان‌های سطح بالا مانند Rust، C، C++ و غیره پشتیبانی می‌کند.

چگونه کار می کند

طرح کلی معماری zkLLVM

کاربری که می خواهد مقداری محاسبات را اثبات کند، به سادگی آن محاسبات را در C++ پیاده سازی می کند. zkLLVM این کد منبع سطح بالا را که توسط کامپایلر clang اصلاح شده آنها (در حال حاضر C++) پشتیبانی می شود، دریافت می کند و برخی از نمایش های میانی مدار را تولید می کند. در این مرحله مدار آماده اثبات است، اما ممکن است کاربر بخواهد مدار را بر اساس برخی ورودی های دینامیک اثبات کند. برای مدیریت ورودی‌های پویا، zkLLVM دارای یک جزء اضافی به نام تخصیص دهنده است که یک جدول تخصیص با تمام ورودی‌ها و شاهدها کاملاً از پیش پردازش شده و آماده اثبات در کنار مدار تولید می‌کند.

این 2 جزء تمام آنچه برای ایجاد یک اثبات لازم است هستند. یک کاربر از نظر تئوری می تواند خودش یک اثبات تولید کند، اما از آنجایی که این یک کار محاسباتی تا حدودی تخصصی است، ممکن است بخواهد به شخص دیگری که سخت افزار را در اختیار دارد، پول بدهد تا این کار را برای او انجام دهد. برای این مکانیسم کشف طرف مقابل، =nil; بنیاد همچنین یک "بازار اثبات" ایجاد کرده است که در آن ارائه دهندگان برای اثبات محاسبات برای کاربرانی که برای انجام این کار به آنها پول می دهند رقابت می کنند. این پویایی بازار آزاد منجر به بهینه‌سازی با ارزش‌ترین وظایف اثبات‌کننده توسط متخصصان می‌شود.

مبادلات

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

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

مزایا

  • کاربران می توانند به زبان های آشنای سطح بالا کد بنویسند
  • همه موارد داخلی zk به دور از کاربران انتزاع می شوند
  • به مدار "VM" خاصی که سربار اضافی اضافه می کند، متکی نیست

منفی

  • هر برنامه مدار متفاوتی دارد. بهینه سازی مشکل است. (بازار اثبات تا حدی این را حل می کند)
  • برای تعویض/ارتقا کتابخانه های داخلی zk غیر پیش پا افتاده (نیاز به فورکینگ دارد)

یک zkVM ابرمجموعه همه ماشین‌های مجازی zk را توصیف می‌کند، در حالی که zkEVM نوع خاصی از zkVM است که به دلیل شیوع امروزی آن ارزش بحث را به عنوان یک موضوع جداگانه دارد. چند پروژه دیگر وجود دارد که علاوه بر ماشین های مجازی کریپتو سفارشی، روی ساخت zkVM های تعمیم یافته تری کار می کنند که مبتنی بر ISA هستند.

به جای اثبات EVM، سیستم می تواند معماری مجموعه دستورالعمل های متفاوتی (ISA) مانند RISC-V یا WASM را در یک ماشین مجازی جدید اثبات کند. دو پروژه ای که روی این zkVM های تعمیم یافته کار می کنند RISC Zero و zkWASM هستند. بیایید در اینجا کمی به RISC Zero بپردازیم تا نحوه عملکرد این استراتژی و برخی از مزایا/معایب آن را نشان دهیم. 

معماری سطح بالا نسل اثباتی Risc Zero

RISC Zero قادر به اثبات هرگونه محاسباتی است که بر روی معماری RISC-V اجرا می شود. RISC-V یک استاندارد معماری مجموعه دستورالعمل منبع باز (ISA) است که محبوبیت زیادی پیدا کرده است. فلسفه RISC (کامپیوتر مجموعه دستورالعمل کاهش یافته) ساخت یک مجموعه دستورالعمل بسیار ساده با حداقل پیچیدگی است. این بدان معنی است که توسعه دهندگان در لایه های بالاتر در پشته در نهایت بار بیشتری را در اجرای دستورالعمل ها با استفاده از این معماری بر عهده می گیرند در حالی که اجرای سخت افزار را ساده تر می کنند.

این فلسفه برای محاسبات عمومی نیز کاربرد دارد، تراشه‌های ARM از مجموعه دستورالعمل‌های سبک RISC استفاده می‌کنند و شروع به تسلط بر بازار تراشه‌های موبایل کرده‌اند. معلوم می‌شود که مجموعه‌های دستورالعمل ساده‌تر نیز دارای بازده انرژی و ناحیه قالب بیشتری هستند.

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

چگونه کار می کند

از دیدگاه یک توسعه‌دهنده، استفاده از RISC Zero برای رسیدگی به اثبات‌های zk بسیار شبیه به استفاده از توابع AWS Lambda برای مدیریت معماری سرور باطن است. توسعه دهندگان به سادگی با نوشتن کد با RISC Zero یا AWS Lambda تعامل می کنند و این سرویس تمام پیچیدگی های Backend را مدیریت می کند.

برای RISC Zero، توسعه دهندگان Rust یا C++ را می نویسند (در نهایت هر چیزی که RISC-V را هدف قرار می دهد). سپس سیستم فایل ELF تولید شده در طول کامپایل را می گیرد و از آن به عنوان کد ورودی مدار VM استفاده می کند. توسعه‌دهندگان به سادگی آن را اثبات می‌کنند که یک رسید (که حاوی اثبات zk ردیابی اجراست) را برمی‌گرداند که هر کسی می‌تواند آن را «تأیید» از هر جایی بنامد. از دیدگاه توسعه‌دهنده، نیازی به درک نحوه عملکرد zk نیست، سیستم زیربنایی تمام این پیچیدگی‌ها را مدیریت می‌کند.

کارآموز Risc Zero؟

مزایا

  • آسان برای استفاده. در را به روی هر برنامه نویسی برای ساخت برنامه های zk باز می کند
  • مدار تکی که ارائه دهندگان می توانند در آن تخصص داشته باشند
    • همچنین سطح کمتری برای حمله، و کمتر برای ممیزی
  • سازگار با هر بلاک چین، شما فقط مدارک را ارسال کنید

منفی

  • برای پشتیبانی از چنین رابط عمومی، هزینه های زیادی را (در اندازه اثبات و سرعت تولید) به عهده می گیرد
  • به منظور دستیابی به پشتیبانی گسترده از کتابخانه های موجود، به بهبود قابل توجهی در تکنیک های تولید اثبات نیاز دارد

مدارهای قابل استفاده مجدد از پیش ساخته شده

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

به عنوان مثال، مدارهای Tornado Cash را می توان مجدداً برای یک استفاده کرد اپلیکیشن ایردراپ خصوصی یا یک برنامه رای گیری خصوصی. Manta و Semaphore در حال ساخت یک مجموعه ابزار کامل از ابزارهای مدار معمولی مانند این هستند که می توانند در قراردادهای Solidity با درک کمی یا بدون درک از ریاضی zk ماه زیرین استفاده شوند.

راهنما - انتخاب پشته خود

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

راهنمای توسعه‌دهنده برنامه برای zkGalaxy

zk App Dev Cheatsheet

1. کتابخانه های سطح پایین Snark

چه موقع باید استفاده کرد: 

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

زمان عدم استفاده:

  • شما یک تازه کار هستید که به دنبال رابط های اثبات سطح بالا هستید

گزینه های ارسال: 


3. کامپایلرهای zk

چه موقع باید استفاده کرد: 

  • مایل به گرفتن سربار مدار جهانی نیست
  • می خواهید مدارها را به زبان های آشنا بنویسید 
  • به مدار بسیار سفارشی نیاز دارید

زمان عدم استفاده: 

  • می خواهید رمزهای اولیه رمزنگاری را کنترل کنید
  • به مداری نیاز دارید که قبلاً به شدت بهینه شده باشد

گزینه های ارسال:


5. zkVM

چه موقع باید استفاده کرد: 

  • می خواهید به زبان سطح بالا کد بنویسید 
  • نیاز به اثبات صحت این اعدام 
  • نیاز به پنهان کردن برخی از ورودی های این اجرا از یک تأیید کننده
  • در zk تخصص کمی داشته باشید

زمان عدم استفاده:

  • در محیط های با تاخیر بسیار کم (هنوز کند است)
  • شما یک برنامه عظیم دارید (در حال حاضر)

گزینه های ارسال:

2. zk DSL

چه موقع باید استفاده کرد: 

  • شما با انتخاب یک زبان جدید راحت هستید
  • می خواهید از چند زبان آزمایش شده در نبرد استفاده کنید
  • به حداقل اندازه مدار نیاز دارید، مایل به چشم پوشی از انتزاعات

زمان عدم استفاده: 

  • نیاز به کنترل دقیق روی بک‌اند اثبات‌شده (در حال حاضر، می‌توان باطن‌ها را با برخی از DSLها تعویض کرد)

گزینه های ارسال:


4. zkEVM

چه موقع باید استفاده کرد: 

  • شما یک dApp دارید که از قبل روی EVM کار می کند
  • شما به تراکنش های ارزان تری برای کاربران خود نیاز دارید 
  • شما می خواهید تلاش برای استقرار در یک زنجیره جدید را به حداقل برسانید
  • فقط به خاصیت موجز بودن zk (فشرده سازی) اهمیت دهید.

زمان عدم استفاده: 

  • شما به معادل EVM کامل نیاز دارید
  • شما به ویژگی حریم خصوصی zk نیاز دارید 
  • شما یک مورد استفاده غیر بلاکچینی دارید 

گزینه های ارسال: 


6. مدارهای قابل استفاده مجدد از پیش ساخته شده

چه موقع باید استفاده کرد: 

  • شما یک برنامه قرارداد هوشمند دارید که بر بلوک‌های ساختمانی zk متداول است، مانند گنجاندن Merkle
  • شما تخصص کمی در زمینه مسائل zk ندارید

چه زمانی استفاده نکنید:

  • شما نیازهای بسیار تخصصی دارید
  • مورد استفاده شما توسط مدارهای از پیش ساخته شده پشتیبانی نمی شود 

گزینه های ارسال: 

نتیجه

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

امیدوارم شما توسعه دهنده نرم افزار کنجکاو را متقاعد کرده باشم که می توانید از امروز استفاده از zk را در برنامه های خود شروع کنید. هک مبارک 🙂

منتظر چه چیزی هستید، برو چند برنامه zk بسازید

افشا: Blockchain Capital یک سرمایه گذار در چندین پروتکل ذکر شده در بالا است.

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

تمبر زمان:

بیشتر از Capital Blockchain