
Sıfır bilgiləndirmə sübutu (ZKP) güclü bir kriptoloji alətdir ki, bu da hesablama düzgünlüyünü təsdiq edərkən giriş məlumatlarının məxfiliyini qorumağa imkan verir. Bu mühüm infrastrukturun tərkib hissəsi kimi, sahə spesifik dil (DSL) ZKP dövrələrinin inkişafı və təsdiqi prosesini sadələşdirməkdə kritik rol oynayır. Onlar abstrakt anlayışlarla sübut sisteminin tələb etdiyi dəqiq dövrə nümayəndəliyi arasında mühüm bir körpü rolunu oynayırlar.
Sübut sistemlərinin üzləşdiyi əsas çətinliklərdən biri abstrakt yüksək səviyyəli anlayışları real dövrələrə çevirməkdir. Lakin, DSL-nin meydana gəlməsi bu çətinliyi aradan qaldırır, bu abstrakt anlayışları daha konkret və həyata keçirilə bilən şəkildə strukturlaşdırmağa kömək edir.
Son on ildə, DSL-in sayında və müxtəlifliyində əhəmiyyətli artım gördük. Bu sahədəki aktivlik Noir, Leo, Zinc və s. daxil olmaqla müxtəlif dövrə dillərinin inkişafında özünü göstərir. İstər Circom kimi universal seçimlər, istərsə də Cairo kimi spesifik platformalar üçün xüsusi həllər lazım olsun, ZKP dövrələrini yazmaq üçün müxtəlif dillər və çərçivələrdən seçmək imkanı var.
Bu məqalədə, inkişaf etdiricilərin fəal şəkildə istifadə etdiyi əsas ZK proqramlaşdırma dillərini araşdıracağıq və hər bir dilin ən yaxşı xüsusiyyətlərini analiz edəcəyik.
TLDR;

Cairo by StarkWare
Cairo, STARK sübutlarını dəstəkləyən universal hesablama proqramlarının əsas dilidir, StarkNet və StarkEx-in uğurunda açar rolunu oynayır, Ethereum əsas şəbəkəsində tətbiqlərin miqyaslanmasını irəliləyir. Qeyd etmək lazımdır ki, Cairo müxtəlif tətbiqləri, o cümlədən dYdX, Sorare, Immutable X və s. dəstəkləməkdə əhəmiyyətli rol oynamışdır. "Cairo" adı "CPU algebrik aralıq təmsili" kəlamının qısaltmasıdır. Sıfır bilik sübutları sahəsində o, aşağı səviyyəli proqramlaşdırma dilləri ilə tanış olan inkişaf etdiricilərin daha asan başlamağına imkan tanıyan yığma dilinə bənzər bir rol oynayır.
Rust-dan ilhamlanaraq, Cairo inkişaf etdiricilərə Starknet ağıllı müqavilələri yaratma imkanı verir, təhlükəsizlik və istifadəçi dostu inkişafı ön plana alır. Cairo güclü sintaksisə malikdir, ZK dövrələrinin yaradılmasını asanlaşdırır, istifadəçilərə Cairo proqramlarında müxtəlif tapşırıqları yerinə yetirmək imkanı verir. Bundan əlavə, Cairo-nun diqqətəlayiq üstünlüklərindən biri onun miqyaslana bilməsidir, yeni funksiyaların və imkanların çevik şəkildə daxil edilməsinə imkan tanıyır.
ZK sistemində effektivlik və miqyaslanma kritik amillərdir, Cairo bu tələbi iki sahəyə diqqət yetirərək yerinə yetirir. Dili, ZK dövrələri ilə bağlı olan hesablama yükünü azaltmaq üçün məhdudiyyətlərin azaldılması və döngünün aradan qaldırılması kimi optimallaşdırma strategiyalarını ehtiva edir. Cairo-nun dövrə dizaynına optimallaşdırılması daha sürətli sübut istehsalı və doğrulama ilə nəticələnir ki, bu da yüksək keçid qabiliyyəti və minimal gecikmə tələb edən tətbiqlər üçün ideal seçim edir.
Cairo-nun genişlənməsi çox diqqət çəkəndir, son iki ildə tam iş vaxtı inkişaf etdiricilərinin sayında qeyri-adi bir artım baş vermişdir. Bu artım, Cairo-nun adaptivliyini vurğulayır, çünki Cairo-nun istifadəsi yalnız blokçeyn ilə məhdudlaşmır, eyni zamanda hər hansı bir hesablama doğrulaması tələb edən kontekstlərdə əhəmiyyət kəsb edir. Beləliklə, inkişaf etdiricilərin Cairo-dan istifadəsinin əhəmiyyətli dərəcədə artacağı gözlənilir.
2023-cü ilin 28 sentyabrında Starknet öz proqramlaşdırma dili Cairo v2.3.0-ın əhəmiyyətli bir yeniləməsini təqdim etdi. Bu versiya müqavilətlərin daha modul olmasında əhəmiyyətli irəliləyişləri simvolizə edir və yeni funksiyalar, saxlama seçimləri və hadisə idarəetməsi təqdim edərək ağıllı müqavilətlərin potensialını artırır. Bu komponentlərin inteqrasiyası müqavilət funksiyalarını genişləndirmək üçün çevik bir yol təqdim edir, üçüncü tərəf modullarının müqavilətin funksionallığını artırmasına imkan tanıyır.
Zinc by ZkSync
Zinc, zkSync platformasında ağıllı müqavilələr və SNARK dövrələri yaratmaq üçün xüsusi olaraq hazırlanmış bir proqramlaşdırma dilidir. O, Rust sintaksisini qəbul edir, Solidity elementlərini birləşdirir və unikal xüsusiyyətlər təqdim edir.
Zinc-in unikal cəhəti onun istifadəçi dostu olmasıdır. Siz birinci dərəcəli məhdudiyyət sisteminin (R1CS) bütün mürəkkəb detalları ilə tanış olmağa ehtiyac duymadan təhlükəsiz kod yaza bilərsiniz. Zinc dəyişməzliyə vurğu edir, bu da onun funksional xüsusiyyətlərə malik olmasını təmin edir. Bu, dəyişməz məlumatları və funksiyaların qiymətləndirilməsini üstünlük verir ki, bu da yan təsirləri azaldır, daha təmiz və daha az səhv olan ağıllı müqavilə kodunu yazmaq üçün şərait yaradır.
Bundan əlavə, Zinc potensial aşırmaların qarşısını almaq üçün təhlükəsiz riyazi əməliyyatlar da daxildir, bütün əməliyyatların təhlükəsizliyini təmin edir. Bəzi məhdudiyyətləri olsa da, məsələn, sonsuz döngü və rekurziya olmaması, Zinc konsol log izləri vasitəsilə debuq prosesini asanlaşdırır. Bu izlər, test şəbəkəsində və ya əsas şəbəkədə izləri izləmək və problemləri həll etmək üçün prosesi asanlaşdıraraq debuq təcrübəsini artırır.
Noir By Aztec
Noir, Aztec tərəfindən inkişaf etdirilən açıq mənbə DSL-dir, Rust əsasında hazırlanmışdır və ZK dövrələrinin və ZK proqramlarının yaradılmasını asanlaşdırır, kriptoqrafiya biliyi olmadan. Bu, hər hansı bir sübut sistemi ilə uyumlu ZK tətbiqlərini yazmaq üçün ən asan başlanğıc dillərindən biri hesab edilir. Noir təhlükəsizlik, sadəlik və performansa diqqət yetirir. O, Rust-a bənzər yüksək səviyyəli sintaksis təqdim edir, kriptoqrafik təhlükəsizliyi abstraktlaşdırır, kriptoqrafik əsas primitivlərin istifadəsini asanlaşdırır, eyni zamanda yüksək performansı saxlayır.
Noir, ZKP-nin gizlilik qoruma imkanlarından istifadə edə bilən tətbiqlərin genişlənməsində əhəmiyyətli üstünlüklərə malikdir, bu da gizliliyi və doğrulama effektivliyini artırır. Noir, Abstract Circuit Intermediate Representation (Acer) adlanan bir aralıq təmsilə tərtib olunur, daha sonra R1CS-ə tərtib oluna bilər. Arxa tərəf sübut sistemi ilə dilin özünü ayırmaq Noir-a müxtəlif sübut sistemlərini, o cümlədən Aztec Brettenberg, Turbo Plonk və potensial gələcək inteqrasiyaları, məsələn, Groth16 və Halo2-ni dəstəkləməyə imkan verir.
Bu dil, SHA-256 (sabit ölçülü çıxış yaradan kriptoqrafik hash funksiyası) və Pedersen-Merkle yoxlaması (Pedersen və Merkle ağaclarının məlumatların bütövlüyünü və uyğunluğunu təmin edən kriptoqrafik doğrulama texnikası) kimi effektiv funksiyalar daxil olmaqla standart bir kitabxana təqdim edir. Noir-un dizaynı Rust-a bənzəyir, proqram inkişaf etdiricilərinin tanıdığı xüsusiyyətlər, məsələn, funksiyalar, alt modullar, istifadəçi tərəfindən müəyyən edilmiş tiplər (struktur), şərt ifadələri, döngülər və qlobal sabitlər kimi. Bundan əlavə, daha da inkişaf etdirilməsi üçün generiklər və birinci dərəcəli funksiyalar üzərində iş aparılır ki, bu da Noir-un ifadə qabiliyyətini daha da artırır.
Qeyd etmək vacibdir ki, Noir hələ də inkişaf etdirilir və bəzi məhdudiyyətlər və potensial xətalar ola bilər. Ancaq inkişaf komandası bu dili davamlı olaraq inkişaf etdirmək və optimallaşdırmaq üçün çalışır.
o1js by 0(1) Labs
o1js, əvvəllər SnarkyJS adlanırdı, 0(1)Labs tərəfindən SNARK proqramlaşdırma dili ilə ağıllı müqavilələr yaratmaq üçün hazırlanmış TypeScript kitabxanasıdır. O, Node.js və brauzer uyğunluğu kimi artıq mövcud olan texnologiyalardan tam istifadə edir ki, bu da inkişaf etdiricilərin asanlıqla əldə etməsini və rahat istifadəsini təmin edir.
o1js, JavaScript və TypeScript kitabxanaları və alətləri ilə problemsiz inteqrasiya olunmaq üçün hazırlanmışdır, inkişaf etdiricilərə güclü ekosistem və geniş icma dəstəyi təqdim edir. Bu inteqrasiya inkişaf prosesini asanlaşdırır, yeni inkişaf mühitini mənimsəməkdə öyrənmə əyrisini azaldır. Bundan əlavə, o, geniş istifadə olunan kod redaktoru olan Visual Studio Code (VS Code) ilə tam dəstəklənir ki, bu da inkişaf etdiricilərə kodun tamamlanması, sintaksis işarələnməsi və debuq kimi funksiyalardan tam istifadə etməyə imkan tanıyır.
o1js, əsasən, sizə zk sübutları yaratmaq üçün lazım olan əsas alətləri təqdim edən çoxfunksiyalı ZK çərçivəsidir. O, müxtəlif daxili sübut edilə bilən əməliyyatları, o cümlədən əsas riyazi, hash, imza, boolean əməliyyatları, müqayisələr və s. daxil olmaqla müxtəlif ZK proqramlarının yaradılmasını dəstəkləyir. o1js çərçivəsindən istifadə edərək, Mina Protokolunda müştəri tərəfində icra olunan gizli girişə malik zkApps yarada bilərsiniz.
Qeyd etmək lazımdır ki, 2023-cü ilin sentyabr ayının əvvəlində 0(1)Labs komandası SnarkyJS-dən o1js-ə keçəcəyini elan etdi və performansı artırmağı öhdəsinə götürdü. Xüsusilə, onların kitabxana yükləmə müddətini 3-4 dəfə azaltmağı həyata keçirdikləri diqqətəlayıqdır ki, bu, o1js-in idxalını tələb edən müddətdir, bu da ana prosesi bloklaya bilər. Veb tətbiqləri üçün yükləmə müddəti JavaScript-in icra vaxtını və bütün səhifənin render edilməsini əhəmiyyətli dərəcədə təsir edir. Bundan əlavə, komanda Mina zkApp CLI-ni yeniləyib, istifadəçi interfeysi yaradılması təcrübəsini artırıb və Archive Node API-nin etibarlılığını və aydınlığını artırmaq məqsədilə daha da təkmilləşdiriləcəyini elan edib.
Leo by Aleo
Aleo blokçeyn ağıllı müqavilələr sahəsində fərqlənir, gizliliyi ön plana çıxarır. Onun mərkəzi Leo proqramlaşdırma dilidir ki, bu da Rust-dan ilhamlanan statik tipli bir dildir. Leo, gizli tətbiqlər yaratmaq üçün hazırlanmışdır, təhlükəsiz və gizli mərkəzləşdirilməmiş ekosistemlər qurmaq istəyən yaradıcılar üçün dəstək verir. Leo-nun əsl fərqi, universal sıfır bilik tətbiqləri üçün tam alətlər dəstinin təqdim edilməsindəki yenilikçi roludur. Bu alətlər dəsti test çərçivələri, paket qeydiyyat sistemləri, idxal analitikləri, uzaqdan tərtibçilər və teorem generatorları daxildir.
Leo-nun təsəvvürü Howard Wu-nun rəhbərlik etdiyi bir inkişaf komandası tərəfindən formalaşdırılıb ki, onlar inkişaf etdiricilərə gizlilik və təhlükəsizlik prioritet olan mərkəzləşdirilməmiş tətbiqlər yaratmaq imkanı verən bir sistem təsəvvür ediblər. Leo-nun dizaynı Rust prinsiplərindən ilham alıb, eyni zamanda inkişaf prosesində tanışlıq və rahatlığı artırmaq üçün JavaScript-ə bənzər elementlər əlavə edir. Bundan əlavə, Leo, inteqrasiya olunmuş test platforması, paket qeydiyyat sistemi və idxal konvertorları təqdim etməklə inkişafı sürətləndirmək və inkişaf prosesini sadələşdirmək məqsədini güdür. Bu inteqrasiya inkişaf etdiricilərə tətbiqlərinin əsas məntiqinə fokuslanmağa imkan tanıyır, infrastruktur problemləri ilə yüklənmədən.
Leo-nun diqqətçəkici xüsusiyyətlərindən biri onun tərtibçisidir ki, bu da proqramları aşağı səviyyəli R1CS sübut formatına çevirir. Leo tərtibçisinin unikal cəhəti onun ciddi rəsmi doğrulama prosesidir. Bu doğrulama çox vacibdir, çünki xətalar bir neçə mərhələdə ortaya çıxa bilər, ilkin proqramlaşdırmadan audit və tərtib etməyə qədər. Tərtibçinin proqramçının niyyəti ilə uyğunluğunu təmin etmək üçün ciddi riyazi yoxlamalar aparmaqla, Leo, xüsusilə L2 kontekstində, ZK-rollups və ya Leo platformasında gizli proqramlarda aşkarlanmayan xətaların və ya potensial boşluqların riskini azaltmağı hədəfləyir.
Circom by iden3
Circom, ZK dövrələrinin inkişafı üçün xüsusi olaraq hazırlanmış bir DSL-dir, Jordi Baylina və iden3 komandası tərəfindən birgə yaradılmışdır. Circom tərtibçisi Rust-da yazılmışdır, onun əsas funksiyası Circom dili ilə yazılmış dövrələri tərtib etməkdir. Qeyd etmək lazımdır ki, Circom real dünyada seçilən ZK tətbiqləri arasında, məsələn, Dark Forest və Tornado Cash kimi bir çoxları üçün seçilmişdir. Onun populyarlığı, optimallaşdırılmış WASM sübutları vasitəsilə sürətli brauzer sübut vaxtı, rapidsnark vasitəsilə effektiv server tərəfi sübutu və effektiv on-chain doğrulama daxil olmaqla, mükəmməl performans nəticəsində yaranır.
Ancaq Circom-un funksiyalarının əsasən ZK dövrələri inkişafına fokuslandığını başa düşmək vacibdir, bu da onu daha geniş hesablama tapşırıqlarını yerinə yetirməkdə daha az uyğun edə bilər. Daha geniş inkişaf tələblərinə cavab verəcək daha çox funksionallıq axtaran inkişaf etdiricilər, Circom-un imkanlarının müəyyən dərəcədə məhdud olduğunu hiss edə bilər. Bu halda, inkişaf etdiricilər daha geniş inkişaf tələblərinə cavab vermək üçün digər proqramlaşdırma dilləri və ya çərçivələrdən istifadə etməyə ehtiyac duyacaqlar.
Şəkil Circom-dan götürülüb
Circom-un uyğunluğu əsasən snarkjs və libsnark kimi geniş istifadə olunan ZKP sistemlərinə yönəlib. Bu uyğunluq bu geniş istifadə olunan sistemlərlə problemsiz inteqrasiyanı təmin etsə də, eyni zamanda Circom dövrələrinin bu asılılıqlarla bağlı spesifik xüsusiyyətləri və məhdudiyyətləri miras alması deməkdir. Alternativ ZKP sistemlərini üstünlük verən və ya tələb edən inkişaf etdiricilər uyğunluq çətinlikləri ilə üzləşə bilər, ya da Circom-un yaratdığı dövrələri öz seçdiyi sistemə uyğunlaşdırmaq və inteqrasiya etmək üçün əlavə iş tələb oluna bilər.
Lurk by Lurk Lab
Lurk, Scheme və Common Lisp-dən təsirlənən statik əhatə LISP dialektidir, özünəməxsus bir xüsusiyyətə malikdir: bu, zk-SNARKs istifadə edərək proqram icrasının düzgünlüyünü birbaşa sübut etməyə imkan verir və beləliklə, səmərəli və sıx doğrulama həyata keçirir.
Lurk-ün əsas istifadəsi bunları əhatə edir:
Doğrulanabilən hesablama: Lurk, sıfır bilik şərtləri altında ifadələrinin düzgünlüyünü sübut etməyə imkan verir, bu da hesablamaların nəticələrinə olan inamı artırır.
Sıfır bilik: İstifadəçilər biliklərini sübut edə bilərlər, ancaq ictimai girişdən başqa konkret məlumatı açıqlamadan gizliliyi qoruyurlar.
Məzmun ünvanlı məlumat: Hər bir Lurk proqramı, onu IPFS və IPLD ilə uyğun edən unikal bir məzmun identifikatoru (CID) ilə təchiz olunmuşdur.
Turing tamlığı: Lurk istənilən hesablamalı bəyanatların yaradılmasını və sübut edilməsini dəstəkləyir.
Yüksək dərəcəli funksiyalar: Lurk funksiyaları funksiyaları qəbul edə və qaytara bilir, bu da ifadəli funksional proqramlaşdırma təmin edir.
Gizli məlumatların emalı: Lurk, gizli məlumatların emalına imkan tanıyır, eyni zamanda təsdiqlənə bilən düzgün nəticələri təmin edir, gizliliyi pozmadan.
Ümumi dövrələr qurarkən, Lurk Lisp-in "cons" yaddaş ayırmaçısından maksimum istifadə edir. Bu ayırmaç ifadələri birləşdirir və hash vasitəsilə referanslar yaradır. Əsas məsələ, iki ifadənin həqiqətən eyni referansa hash edildiyini sübut etməkdir. Bu doğrulama Lurk-un snark dövrələri daxilində hesablamaları icra etməyə imkan verir.
Lurk-un funksiyaları çox zəngindir, sonsuz rekurziya, döngülər, şərti idarəetmə axını və Groth16 ilə SnarkPack+ və Nova kimi bir neçə arxa sübut sistemi dəstəkləyir. Bu çoxfunksiyalıq müxtəlif tətbiqlər üçün qapılar açır, o cümlədən hesablamaların təsdiqlənməsi, gizli məlumatların emalı və snark dövrələri daxilində Turing tam proqramların icrası.
Xülasə
ZK tətbiqlərinin müxtəlifliyinin artması ilə, DSL-in ZK sahəsində perspektivi genişdir. DSL-in uğurunun açarı, inkişaf etdiricilərin təcrübəsini artıran dinamik icma və zəngin kitabxana yaratmaqdır. Mövcud kitabxanalarla uyğunluğu öncəlik olaraq seçən DSL-lər daha geniş inkişaf etdirici icmasının bilik və resurslarından faydalana bilər. Bu yanaşma daha hamar inteqrasiya, inkişafı sürətləndirmək və ZK tətbiqlərini tətbiq edərkən daha çox çeviklik təmin etməkdə kömək edir. Bu əməkdaşlıq səyləri DSL ətrafında daha sağlam bir ekosistemin yetişdirilməsi üçün vacibdir, inkişaf etdiricilərə konkret faydalar təqdim edir və ZK texnologiyasının qəbulunu daha da irəlilətməyə kömək edir.
