
Zero-knowledge proof (ZKP) ir spēcīgs kriptogrāfijas rīks, kas var pārbaudīt aprēķinu pareizību, vienlaikus aizsargājot ievades datu privātumu. Kā šīs kritiskās infrastruktūras neatņemama sastāvdaļa domēnspecifiskām valodām (DSL) ir būtiska loma, racionalizējot ZKP shēmu izstrādes un verifikācijas procesu. Viņiem ir svarīga loma abstraktu jēdzienu saistīšanā ar precīziem ķēdes attēlojumiem, kas nepieciešami, lai pierādītu sistēmu, darbojoties kā svarīgs tilts starp abiem.
Viens no galvenajiem izaicinājumiem sistēmu pierādīšanā ir abstraktu augsta līmeņa jēdzienu pārvēršana faktiskās shēmās. Tomēr DSL rašanās risina šo izaicinājumu, atvieglojot šo abstrakto jēdzienu strukturētu izpausmi konkrētāk un sasniedzamākā veidā.
Pēdējo desmit gadu laikā mēs esam pieredzējuši ievērojamu DSL skaita un daudzveidības pieaugumu. Darbība šajā jomā izpaužas vairāku ķēdes valodu attīstībā, tostarp noir, leo, cinka un citu valodu attīstībā. Neatkarīgi no tā, vai jums ir nepieciešama vispārēja opcija, piemēram, Circom, vai risinājums, kas pielāgots konkrētai platformai, piemēram, Kairo, varat izvēlēties no plaša valodu un sistēmu klāsta ZKP shēmu rakstīšanai.
Šajā rakstā mēs izpētīsim galvenās ZK programmēšanas valodas, kuras izstrādātāji aktīvi izmanto, un analizēsim katras valodas labākās īpašības.
TLDR;

Kaira, StarkWare
Cairo, galvenā valoda vispārējas nozīmes skaitļošanas programmām, kas atbalsta STARK pierādījumus, spēlēja galveno lomu StarkNet un StarkEx panākumos, veicinot lietojumprogrammu mērogojamību Ethereum galvenajā tīklā. Konkrēti, Kaira ir palīdzējusi atbalstīt dažādas lietojumprogrammas, tostarp dYdX, Sorare, Immutable X un citas. Nosaukums "Cairo" cēlies no saīsinājuma "CPU Algebraic Intermediate Representation". Nulles zināšanu pierādījumu pasaulē tai ir līdzīga loma montāžas valodai, atvieglojot izstrādātājiem, kuri pārzina zema līmeņa programmēšanas valodas, piemēram, C, C++ vai Solidity.
Iedvesmojoties no Rust, Kaira dod iespēju izstrādātājiem izveidot Starknet viedos līgumus, koncentrējoties uz drošību un lietotājam draudzīgu attīstību. Kairā ir jaudīga sintakse, kas vienkāršo ZK shēmu izveidi, ļaujot lietotājiem veikt dažādus uzdevumus Kairas programmās. Turklāt nozīmīga Kairas priekšrocība ir tās paplašināmība, kas ļauj elastīgi ieviest jaunas funkcijas un iespējas.
ZK sistēmās efektivitāte un mērogojamība ir izšķiroši faktori, un Kaira atbilst šai prasībai, uzsverot šos divus aspektus. Valoda integrē optimizācijas stratēģijas, tostarp ierobežojumu samazināšanu un cilpas novēršanu, lai atvieglotu skaitļošanas slogu, kas parasti saistīts ar ZK shēmām. Kairas ķēdes dizaina optimizācija nodrošina ātrāku pierādījumu ģenerēšanu un verifikāciju, padarot to ideāli piemērotu lietojumprogrammām, kurām nepieciešama liela caurlaidspēja un minimāls latentums.
Kairas paplašināšanās ir bijusi iespaidīga, jo pēdējo divu gadu laikā ir ārkārtīgi pieaudzis pilna laika izstrādātāju skaits. Šis pieaugums izceļ Kairas pielāgošanās spēju, jo Kairas lietojumi neaprobežojas tikai ar blokķēdi, bet ir svarīgi jebkurā kontekstā, kur nepieciešama skaitļošanas pārbaude. Rezultātā mēs varam sagaidīt ievērojamu turpmāku izaugsmi attīstītāju pieņemšanā Kairā.
2023. gada 28. septembrī Starknet uzsāka svarīgu jauninājumu savā programmēšanas valodā Cairo v2.3.0. Šis laidiens iezīmē lielu soli uz priekšu, lai padarītu līgumus modulārākus, palielinot viedo līgumu potenciālu, ieviešot jaunas funkcijas, krātuves iespējas un notikumu pārvaldību. Šo komponentu integrācija nodrošina elastīgu veidu, kā paplašināt līguma funkcionalitāti, ļaujot trešo pušu moduļiem uzlabot līguma funkcionalitāti.
ZkSync cinks
Cinks ir programmēšanas valoda, kas paredzēta viedo līgumu un SNARK shēmu izveidei zkSync platformā. Tas izmanto Rust sintaksi, ietver Solidity elementus un nodrošina unikālas funkcijas.
Tas, kas padara cinku unikālu, ir tā lietotājdraudzīgums. Lai rakstītu drošu kodu, jums nav jāsaprot visas pirmās kārtas ierobežojumu sistēmu (R1CS) sarežģītās detaļas. Cinks uzsver nemainīgumu, padarot to pēc būtības funkcionālu. Tas nozīmē, ka tas piešķir prioritāti nemainīgiem datiem un funkciju novērtēšanai, tādējādi samazinot blakusparādības un veicinot tīrāku, ar mazāk kļūdām pakļautu viedā līguma koda rakstīšanu.
Turklāt Cinks ietver drošas matemātiskas darbības, lai novērstu iespējamās pārplūdes, nodrošinot visu darbību drošību. Lai gan tam ir daži ierobežojumi, piemēram, bez bezgalīgas cilpas un rekursijas, cinks vienkāršo atkļūdošanas procesu, izmantojot konsoles žurnāla izsekošanu. Šīs pēdas uzlabo atkļūdošanas pieredzi, vienkāršojot izsekošanas un problēmu risināšanas procesu testa tīklā vai galvenajā tīklā.
Noir by Aztec
Noir ir atvērtā pirmkoda DSL, ko izstrādājis Aztec un kura pamatā ir Rust un kas paredzēts, lai vienkāršotu ZK shēmu un ZK programmu izveidi, neprasot padziļinātas zināšanas par kriptogrāfiju. Tā tiek uzskatīta par vienu no pieejamākajām valodām ZK lietojumprogrammu rakstīšanai, kas ir saderīgas ar jebkuru pārbaudes sistēmu. Noir koncentrējas uz drošību, vienkāršību un veiktspēju. Tas nodrošina augsta līmeņa rūsai līdzīgu sintaksi, kas abstrahē kriptogrāfisko drošību un vienkāršo kriptogrāfijas pamata primitīvu izmantošanu, vienlaikus saglabājot augstu veiktspēju.
Noir ir ievērojamas priekšrocības, paplašinot lietojumprogrammu klāstu, kas var izmantot ZKP sniegtās privātuma aizsardzības iespējas, tādējādi uzlabojot privātuma un verifikācijas efektivitāti. Noir ir apkopots starpattēlā, ko sauc par Abstract Circuit Intermediate Representation (Acer), ko pēc tam var tālāk apkopot R1CS. Aizmugurējās pārbaudes sistēmas atdalīšana no pašas valodas ļauj uzņēmumam Noir atbalstīt dažādas pārbaudes sistēmas, tostarp Aztec Brettenberg, Turbo Plonk un iespējamās nākotnes integrācijas, piemēram, Groth16 un Halo2.
Valoda nodrošina standarta bibliotēku, kas ietver efektīvas funkcijas, piemēram, SHA-256 (kriptogrāfiska jaukšanas funkcija, kas ģenerē fiksēta izmēra izvadi) un Pedersen-Merkle pārbaudes (metode, kas izmanto Pedersena saistības un Merkles kokus, lai nodrošinātu datu integritāti un konsekvenci šifrēšanu. verifikācijas tehnoloģija). Noir ir izstrādāts tāpat kā Rust, un tajā ir iekļauti lietojumprogrammu izstrādātājiem pazīstami līdzekļi, piemēram, funkcijas, apakšmoduļi, lietotāja definēti veidi (struktūras), nosacījumi, cilpas un globālās konstantes. Turklāt tiek veikti pastāvīgi centieni izstrādāt vispārīgus medikamentus un pirmās klases funkcijas, lai vēl vairāk uzlabotu Noir izteiksmes spējas.
Jāatzīmē, ka Noir joprojām tiek izstrādāts un var būt daži ierobežojumi un iespējamās kļūdas. Taču izstrādes komanda ir apņēmusies nepārtraukti uzlabot un optimizēt valodu.
o1js ar 0(1) Labs
o1js, agrāk SnarkyJS, ir TypeScript bibliotēka, ko izstrādājusi 0(1)Labs viedo līgumu izveidei, izmantojot SNARK programmēšanas valodu. Tas izmanto jau izveidotās tehnoloģijas, piemēram, Node.js un pārlūkprogrammu saderību, lai izstrādātājiem nodrošinātu vieglu piekļuvi un ērtu lietošanu.
o1js nemanāmi integrējas ar JavaScript un TypeScript bibliotēkām un rīkiem, nodrošinot izstrādātājiem spēcīgu ekosistēmu un plašu kopienas atbalstu. Šī integrācija vienkāršo izstrādes procesu un samazina mācīšanās līkni, kas saistīta ar jaunas izstrādes vides pieņemšanu. Turklāt tas pilnībā atbalsta Visual Studio Code (VS Code), plaši izmantotu koda redaktoru, kas ļauj izstrādātājiem izmantot tādas funkcijas kā koda pabeigšana, sintakses izcelšana un atkļūdošana, lai uzlabotu izstrādes pieredzi.
o1js būtībā ir daudzpusīgs ZK ietvars, kas nodrošina galvenos rīkus, kas nepieciešami, lai izveidotu ZK pierādījumus. Tā atbalsta dažādu ZK programmu izveidi, kas aptver dažādas iebūvētas pierādāmas darbības, tostarp pamata aritmētiku, jaukšanu, parakstus, Būla darbības, salīdzinājumus un daudz ko citu. Izmantojot o1js ietvaru, varat izveidot zkApps uz Mina Protocol — viedos līgumus, kas tiek izpildīti klienta pusē un kuriem ir privāta ievade.
Ir vērts pieminēt, ka 2023. gada septembra sākumā 0(1)Labs komanda paziņoja, ka pāriet no SnarkyJS uz o1js, un uzsvēra savu apņemšanos uzlabot veiktspēju. Īpaši jāatzīmē, ka viņi sasniedza 3–4 reizes samazinājumu bibliotēkas ielādes laikā, kas attiecas uz laiku, kas nepieciešams, lai importētu o1js — procesu, kas var bloķēt galveno pavedienu. Tīmekļa lietojumprogrammām ielādes laiks ir ļoti nozīmīgs gan JavaScript izpildes laikam, gan visas lapas renderēšanai. Turklāt komanda ir atjauninājusi Mina zkApp CLI, lai uzlabotu lietotāja interfeisa izveides pieredzi, un paziņoja par turpmākiem uzlabojumiem Archive Node API, lai uzlabotu tā uzticamību un skaidrību.
Leo no Aleo
Aleo blokķēde ir unikāla viedo līgumu jomā un uzsver privātuma aizsardzību. Tās pamatā ir Leo programmēšanas valoda, statiski drukāta valoda, kuru iedvesmojis Rust. Īpaši izstrādāts privātu lietojumprogrammu izstrādei, Leo sniedz iespēju veidotājiem, kuri vēlas izveidot drošu un privātu decentralizētu ekosistēmu. Leo patiesi unikāls ir tā novatoriskā loma, ieviešot visaptverošu rīku komplektu vispārējas nozīmes nulles zināšanu lietojumiem. Šajā rīku komplektā ietilpst testēšanas sistēma, pakotņu reģistrs, importa parsētājs, attālais kompilators un teorēmu ģenerators.
Leo radīja izstrādātāju komanda, kuru vadīja Hovards Vu, kurš paredzēja tehnoloģiju, kas izstrādātājiem dotu iespēju veidot decentralizētas lietojumprogrammas, kuru prioritāte ir privātums un drošība. Leo dizains balstās uz Rust principiem, vienlaikus iekļaujot dažus JavaScript līdzīgus elementus, lai veicinātu pazīstamību un ērtības izstrādes procesā. Turklāt Leo mērķis ir paātrināt izstrādi un vienkāršot izstrādes procesu, nodrošinot integrētu testēšanas platformu, pakotņu reģistru un importa pārveidotāju. Šī integrācija ļauj izstrādātājiem koncentrēties uz savu lietojumprogrammu galveno loģiku, neapgrūtinot infrastruktūras problēmas.
Pārsteidzoša Leo iezīme ir tā kompilators, kas pārvērš programmas zema līmeņa R1CS pārbaudes formātā. Leo kompilators ir unikāls ar savu stingro formālo verifikācijas procesu. Šī pārbaude ir ļoti svarīga, jo ievainojamības var rasties vairākos posmos, sākot no sākotnējās programmēšanas līdz auditēšanai un apkopošanai. Veicot stingras matemātiskās pārbaudes, lai pārliecinātos, ka kompilators atbilst programmētāja nodomam, Leo cenšas samazināt neatklātu kļūdu vai iespējamo ievainojamību risku, jo īpaši L2 kontekstos, ZK apkopojumos vai privātās programmās Leo platformā.
Circom by iden3
Circom, DSL, kas īpaši izstrādāts ZK ķēdes izstrādei, ir Jordi Baylina un iden3 komandas kopīgu darbu rezultāts. Circom kompilators ir rakstīts Rust un tā galvenais uzdevums ir apkopot Circom valodā rakstītas shēmas. Jāatzīmē, ka Circom ir kļuvusi par labāko izvēli izcilām reālās pasaules ZK lietojumprogrammām, piemēram, Dark Forest un Tornado Cash. Tā popularitāte ir saistīta ar tā izcilo veiktspēju, tostarp ātru pārlūkprogrammas pārbaudes laiku, izmantojot optimizētus WASM pierādījumus, efektīvu servera puses pārbaudi, izmantojot rapidsnark, un efektīvu ķēdes verifikāciju.
Tomēr ir svarīgi saprast, ka Circom funkcionalitāte galvenokārt ir vērsta uz ZK shēmu izstrādi, kas var padarīt to mazāk piemērotu plašāka skaitļošanas uzdevumu klāsta apstrādei. Izstrādātājiem, kuri meklē vairāk funkcionalitātes, kas var apmierināt plašākas izstrādes vajadzības, Circom iespējas var būt nedaudz ierobežotas. Šajā gadījumā izstrādātājiem, iespējams, būs jāapvieno citas programmēšanas valodas vai ietvari, lai apmierinātu plašākas izstrādes vajadzības.
Attēls, izmantojot Circom
Circom saderība ir vērsta uz plaši izmantotām ZKP sistēmām, piemēram, snarkjs un libsnark. Lai gan šī saderība nodrošina netraucētu integrāciju ar šīm plaši izmantotajām sistēmām, tā arī nozīmē, ka Circom shēmas pārmanto īpašas iespējas un ierobežojumus, kas saistīti ar šīm atkarībām. Tie izstrādātāji, kuri dod priekšroku vai pieprasa alternatīvu ZKP sistēmu, var saskarties ar saderības problēmām vai arī jāiegulda papildu darbs, lai pielāgotu un integrētu Circom ģenerētās shēmas savā vēlamajā sistēmā.
Lurk ar Lurk Lab
Lurk ir statiski aptverts Lisp dialekts, ko ietekmē Scheme un Common Lisp, un tam ir unikāla funkcija: tas ļauj tieši pierādīt programmas izpildes pareizību, izmantojot zk-SNARK, nodrošinot kompaktu un efektīvu verifikāciju.
Galvenie Lurk lietojumi ietver:
Pārbaudāms aprēķins: Lurk ļauj pierādīt savu izteiksmju pareizību nulles zināšanu apstākļos, palielinot uzticību aprēķinu rezultātiem.
Nulles zināšanas: lietotāji var pierādīt zināšanas, neatklājot konkrētu informāciju ārpus publiskas ievades, tādējādi saglabājot privātumu.
Saturam adresējami dati: katra Lurk programma ir aprīkota ar unikālu satura identifikatoru (CID), padarot to saderīgu ar IPFS un IPLD.
Tjūringa pilnība: Lurk atbalsta patvaļīgu skaitļošanas apgalvojumu izveidi un pierādīšanu.
Augstākas kārtas funkcijas: Lurk funkcijas var pieņemt un atgriezt funkcijas, nodrošinot izteiksmīgu funkcionālu programmēšanu.
Aprēķini, kas apstrādā privātos datus: Lurk ļauj apstrādāt privātos datus, vienlaikus nodrošinot pierādāmi pareizu izvadi, neapdraudot privātumu.
Veidojot vispārējas nozīmes shēmas, Lurk pilnībā izmanto Lisp "mīnusu" atmiņas sadalītāja priekšrocības. Šis sadalītājs apvieno izteiksmes un ģenerē atsauces, izmantojot jaucējvārdus. Galvenais ir pierādīt, ka abi izteicieni patiešām sakrīt ar vienu un to pašu atsauci. Šī pārbaude ļauj Lurk veikt aprēķinus snark ķēdē.
Lurk ir ļoti bagāts ar funkcijām, tostarp bezgalīgas rekursijas, cilpu, nosacījuma kontroles plūsmas un vairāku aizmugursistēmas pārbaudes sistēmu, piemēram, Groth16 un SnarkPack+ un Nova, atbalstu. Šī daudzpusība paver durvis dažādām lietojumprogrammām, tostarp verifikācijas aprēķiniem, privāto datu apstrādei un Tjūringa pilnīgu programmu izpildei snark shēmās.
Apkopojiet
Palielinoties ZK lietojumprogrammu daudzveidībai, DSL ir plašas attīstības perspektīvas ZK jomā. Veiksmīga DSL atslēga ir plaukstošas kopienas un bagātīgu bibliotēku veidošana, lai bagātinātu izstrādātāju pieredzi. DSL, kuru prioritāte ir saderība ar esošajām bibliotēkām, var izmantot plašākas izstrādātāju kopienas zināšanas un resursus. Šī pieeja atvieglo vienmērīgāku integrāciju, paātrina izstrādi un nodrošina lielāku elastību, ieviešot ZK lietojumprogrammas. Šiem sadarbības centieniem ir izšķiroša nozīme, lai veicinātu spēcīgāku DSL ekosistēmu, sniedzot taustāmus ieguvumus izstrādātājiem un vēl vairāk veicinās ZK tehnoloģijas ieviešanu un efektivitāti.




