zkGalaxyn kehittäjän opas

zkGalaxyn kehittäjän opas

Lähdesolmu: 1946171

esittely

Vitalikin kompromissit zkEVM:ille suorituskyvyn ja yhteensopivuuden välillä

Tämä on erittäin hyödyllinen heuristinen tapa erottaa lähestymistavat zkEVM:n tukemiseen. zkEVM:t ovat kuitenkin osa kaikista mahdollisista tavoista rakentaa nollatietosovelluksia. Ohjelmoijalle, joka haluaa hyödyntää zk-laskennan ainutlaatuisia ominaisuuksia, nimittäin ytimekkyys, nolla tietämys ja oikeellisuuszkEVM ei ehkä ole paras valinta. Esittämällä koko joukon kehittäjätyökaluja toivon tarjoavani oppaan, joka auttaa päätöksentekoprosessissa sovelluksesi oikean zk-pinon ympärillä.

Viimeisen vuoden tai kahden aikana zk-työkaluissa on tapahtunut valtavasti edistystä. He lähestyvät pistettä, jossa tavalliset ohjelmistokehittäjät voivat hyödyntää zk:n tehokkaita ominaisuuksia ilman syvällistä ymmärrystä taustalla olevasta pelottavasta matematiikasta ja tekniikasta. Toisaalta tehokäyttäjille tarkoitettujen työkalujen määrä on lisääntynyt, mikä antaa zk-asiantuntijoille erittäin tarkan hallinnan zk-pinosta.

Abstraktion monimutkaisuuden voima

Nykyaikaiset ohjelmistot on rakennettu lukemattomille abstraktiokerroksille asiantuntijan tuottavuuden maksimoimiseksi. Suunnittelussa abstraktiolla on monia etuja, jotka ovat jokseenkin intuitiivisia – web-kehittäjän ei tarvitse ymmärtää käyttöjärjestelmien toimintaa perusteellisesti. 

Avain hyvien, uudelleenkäytettävien abstraktiokerrosten rakentamiseen on kapseloida kerroksen monimutkaisuus ja tarjota sitten yksinkertaiset, mutta ilmeikäs rajapinnat pinon ylempänä oleville tasoille. Oikein tehtynä kehittäjät, joilla on erilaisia ​​asiantuntemusta ja tietämystä, voivat rakentaa hyödyllisiä työkaluja koko pinoon.

Ei ole yllätys, että samat periaatteet koskevat zk-järjestelmiä, ja nämä abstraktiokerrokset ovat tulossa tarpeeksi kypsiksi, jotta zk-aloittelija voi alkaa käyttää niitä ja rakentaa sovelluksia tänään.

zk tech pino
zk-pino, jossa on esimerkkejä työkaluista/tekniikoista jokaisella kerroksella

Matalan tason zk-kehitys

Arkworks-rs

Arkworks-rs on Rust-kirjastojen ekosysteemi, joka tarjoaa tehokkaat ja turvalliset toteutukset zkSNARK-sovelluksen alikomponenteille. Arkworks tarjoaa kehittäjille tarvittavat rajapinnat zk-sovelluksen ohjelmistopinon mukauttamiseen ilman, että heidän tarvitsee toteuttaa uudelleen yhteisiä piirteitä muiden olemassa olevien kirjastojen kanssa.

Ennen Arkworksia ainoa tapa luoda uusi zk-sovellus oli rakentaa kaikki tyhjästä. Arkworks-rs:n tärkeimmät edut räätälöityihin, vertikaalisesti integroituihin työkaluihin verrattuna ovat joustavuus, päällekkäisen suunnittelun väheneminen ja auditointiponnistuksen väheneminen. Arkworksin järkevät liitäntälinjat komponenttien välillä mahdollistavat päivitettävyyden nopeuden, joka voi pitää pinon ajan tasalla zk-teknologioiden innovatiivisen vauhdin keskellä pakottamatta tiimejä rakentamaan kaikkea uudelleen alusta.

Kenelle se on?

Arkworks on tarkoitettu projekteille, jotka tarvitsevat koko zk-ohjelmistopinon hienon hallinnan, mutta eivät halua rakentaa kaikkia tarpeettomia kappaleita tyhjästä. Jos harkitset piiri-DSL-piirin mukautettua versiota, koska olet esimerkiksi tekemässä prototyyppiä uutta todistusjärjestelmää, mutta et ole varma sitoutumiskaaviosta tai vastaavasta elliptisesta käyrästä, arkworks antaa sinun vaihtaa nopeasti useiden vaihtoehtojen välillä jaetuilla liitännöillä. kuin aloittaa tyhjästä.

Plussat

  • Joustavuutta modulaarisuuden kautta
  • Vähemmän koodin päällekkäisyyttä
    • Pienemmät suunnittelukustannukset
    • Pienempi tarkastus-/virhepinta-ala
  • Päivitä mikä tahansa komponentti ilman suuria uudelleenjärjestelyjä
  • Helppo kokeilla uusia primitiivisiä nopeasti kehittyvässä zk-ympäristössä

MIINUKSET

  • Edellyttää koko ohjelmistopinon syvällistä ymmärtämistä
    • Liiallinen hallinta voi johtaa jalkaaseisiin, jos sitä ei ymmärretä kunnolla
  • Rakeinen ohjaus vaatii asiantuntemusta pinon kaikilla tasoilla
    • Arkworks tarjoaa joitain järkeviä oletusasetuksia.

zk Domain Specific Languages ​​(DSL)

Jotta voidaan luoda todiste jostain laskennasta, tämä laskenta on ensin ilmaistava muodossa, jonka zkSNARK-järjestelmä voi ymmärtää. Useat toimialuekohtaiset kielet ovat luoneet ohjelmointikieliä, joiden avulla sovelluskehittäjät voivat ilmaista laskentansa tällä tavalla. Nämä sisältävät Aztec Noir, Starknet's KairoCircomZoKrates, ja Aleo's Leijona muiden joukossa. Taustalla oleva todistusjärjestelmä ja matemaattiset yksityiskohdat eivät yleensä ole sovelluksen kehittäjän käsissä.

Kehittäjäkokemus

zkApp-kehittäjien on opittava kirjoittamaan ohjelmiaan verkkotunnuskohtaisilla kielillä. Jotkut näistä kielistä näyttävät paljon tutuilta ohjelmointikieliltä, ​​kun taas toisia voi olla melko vaikea oppia. Erotetaan muutama näistä:

Kairo – Starkware DSL tarvitaan sovellusten rakentamiseen Starknetissä. Kääntää alas Kairo-spesifiseksi kokoonpanokieleksi, jonka Kairon zkVM voi tulkita.

ZoKrates — ZoKrates on työkalupakki yleisiin SNARK-tarpeisiin, mukaan lukien korkean tason kieli piirien kirjoittamiseen. ZoKratesilla on myös jonkin verran joustavuutta käyrien, todistusjärjestelmän ja taustajärjestelmän ympärillä, jolloin kehittäjät voivat vaihtaa kuumaa vaihtoa yksinkertaisella CLI-argumentilla.

Circom — Circom on tarkoitukseen rakennettu kieli piirien rakentamiseen. Tällä hetkellä se on de facto -kieli tuotannossa oleville piireille. Kieli ei ole erityisen ergonominen. Kieli itsessään saa sinut hyvin tietoiseksi siitä, että kirjoitat piirejä.

Leijona - Leo kehitettiin Aleo-lohkoketjun kieleksi. Leolla on ruostetta muistuttava syntaksi, ja se on erityisesti tehty tilasiirtymään lohkoketjun sisällä.

Noir – Ruosteen inspiroima syntaksi. Suunniteltu IR:n eikä itse kielen ympärille, mikä tarkoittaa, että sillä voi olla mielivaltainen käyttöliittymä. 

Aztec Noir -kokoelmapinossa on erityisesti modulaarinen arkkitehtuuri

Kenelle se on?

Jokainen sovelluskehittäjä, joka haluaa hyödyntää zk:n ainutlaatuisia ominaisuuksia sovelluksessaan. Joitakin näistä kielistä on testattu taisteluissa miljardeissa dollareissa liikkuessa niiden yli ZCashin ja Starknetin kaltaisten ketjujen kautta. Vaikka jotkin käsittelemistämme projekteista eivät ole aivan valmiita tuotantokäyttöön, piirien kirjoittaminen jollakin näistä kielistä on tällä hetkellä paras strategia, ellet tarvitse tarkempia ohjaimia, joita Arkworksin kaltainen työkalupakki tarjoaa.

Plussat

  • Käyttäjien ei tarvitse ymmärtää taustalla olevia zk-tietoja
  • Saatavilla tänään jolla on jonkin verran kokemusta tuotannosta
  • Varmennettavissa ketjusta
  • Ekosysteemin agnostikko

MIINUKSET

  • Käyttäjien on opittava uusi DSL
  • Siled työkalut ja tuki jokaisen näistä kielistä
  • Hieman tai ei ollenkaan valvoa alla olevaa testauspinoa (toistaiseksi)

zkEVM:n ensisijainen tavoite on ottaa Ethereumin tilasiirtymä ja todistaa sen pätevyys ytimekkäällä nollatietotodistuksella oikeasta. Kuten Vitalikin viestissä mainittiin, on olemassa useita tapoja tehdä tämä hienoisilla eroilla ja vastaavilla kompromissilla. 

Suurin tekninen ero näiden kaikkien välillä on tarkalleen missä kielipinossa laskenta muunnetaan muotoon (aritmetisointi), jota voidaan käyttää todistusjärjestelmässä. Joissakin zkEVM:issä tämä tapahtuu korkean tason kielillä (Solidity, Vyper, Yul), kun taas toiset lähestymistavat yrittävät todistaa EVM:n aina opcode-tasolle. Näiden lähestymistapojen välisiä kompromisseja käsiteltiin syvästi Vitalikin viestissä, mutta tiivistän sen yhteen lauseeseen: Mitä pienempi muunnos/aritmetisointi tapahtuu pinossa, sitä suurempi suoritusrangaistus.

Miksi EVM-operaatiokoodit ovat kalliita todistaa zk:ssä?

Suurin haaste virtuaalikoneen todisteiden luomisessa on, että piirin koko kasvaa suhteessa KAIKKIEN mahdollisten käskyjen kokoon jokaisen suoritettavan käskyn kohdalla. Tämä johtuu siitä, että piiri ei tiedä, mitä käskyjä jokaisessa ohjelmassa suoritetaan, joten sen on tuettava niitä kaikkia.

Yleispiireissä jokaisella suoritetulla käskyllä ​​on kustannus, joka on verrannollinen kaikkien tuettujen käskyjen summaan.

Käytännössä tämä tarkoittaa sitä, että maksat (suorituskustannuksina) kalleimmasta mahdollisesta ohjeesta, vaikka suoritat vain yksinkertaisinta käskyä. Tämä johtaa suoraan kompromissiin yleistettävyyden ja suorituskyvyn välillä – kun lisäät yleistettävyyttä koskevia ohjeita, maksat tästä joka ohje sinä todistat!

Tämä on perusongelma yleispiireissä, mutta teknologian uudet kehityssuunnat kuten IVC (inkrementaalinen verifioitava laskenta), tätä rajoitusta voidaan parantaa jakamalla laskenta pienemmiksi paloiksi, joissa jokaisella on erikoistuneet, pienemmät alipiirit.

Nykypäivän zkEVM-toteutukset käyttävät erilaisia ​​strategioita tämän ongelman vaikutusten lieventämiseksi… Esimerkiksi zkSync repii kalliimmat toiminnot (enimmäkseen kryptografiset esikäännökset, kuten tiivisteet ja ECDSA) pääsuorituksen todentamispiiristä erillisiksi piireiksi, jotka kootaan yhteen lopettaa snark-rekursion kautta. zkSync otti tämän lähestymistavan sen jälkeen, kun he huomasivat, että suurin osa heidän kustannuksistaan ​​tuli muutamista monimutkaisista ohjeista.

Transaktiokustannuksia hallitsevat harvat kalliit toiminnot.

Pohjimmiltaan syy siihen, että EVM:ää vastaavan käskyjoukon osoittaminen on kalliimpaa, on se, että EVM:ää ei ole suunniteltu zk-laskuille. EVM:n hylkääminen aiemmin pinossa mahdollistaa zkEVM:ien suorittamisen käskysarjoissa, jotka on optimoitu paremmin zk:lle ja siten halvempia todistaa.

Kenelle se on?

Ihanteelliset asiakkaat zkEVM:lle ovat älykkäitä sopimussovelluksia, jotka tarvitsevat suuruusluokkaa halvempia tapahtumia kuin mitä L1 Ethereumissa on saatavilla. Näillä kehittäjillä ei välttämättä ole asiantuntemusta tai kaistanleveyttä kirjoittaakseen zk-sovelluksia tyhjästä. Siksi he haluavat kirjoittaa hakemuksensa heille tutuilla korkeamman tason kielillä, kuten Solidity. 

Miksi niin monet tiimit rakentavat tätä?

Ethereumin skaalaus on tällä hetkellä zk-tekniikan kysytyin sovellus.

ZkEVM on Ethereumin skaalausratkaisu, joka vähentää kitkattomasti ruuhka-ongelmaa, joka rajoittaa L1-dApp-kehittäjiä.

Kehittäjäkokemus

zkEVM:n tavoitteena on tukea kehittäjäkokemusta, joka on mahdollisimman lähellä nykyistä Ethereumin kehitystä. Täysi Solidity-tuki tarkoittaa, että tiimien ei tarvitse rakentaa ja ylläpitää useita koodikantoja. Tämä on jokseenkin epäkäytännöllistä tehdä täydellisesti, koska zkEVM:ien on vaihdettava jonkin verran yhteensopivuutta voidakseen luoda kohtuullisen kokoisia todisteita kohtuullisessa ajassa.

Nopea tapaustutkimus: zkSync vs Scroll

Ensisijainen ero zkSyncin ja Scrollin välillä on se, missä/milloin pinossa ne suorittavat aritmetoinnin – toisin sanoen missä ne muunnetaan normaaleista EVM-konstrukteista SNARK-ystävälliseksi esitykseksi. zkSyncille tämä tapahtuu, kun he muuntavat YUL-tavukoodin omaksi mukautetuksi zk-käskyjoukokseen. Scrollissa tämä tapahtuu lopussa, kun varsinainen suoritusjälki luodaan todellisilla EVM-operaatiokoodeilla.

Joten zkSyncissä kaikki on sama kuin vuorovaikutuksessa EVM:n kanssa, kunnes zk-tavukoodi on luotu. Scrollissa kaikki on sama, kunnes varsinainen tavukoodi suoritetaan. Tämä on hienovarainen ero, joka vaihtaa suorituskyvyn tukeen. Esimerkiksi zkSync ei tue EVM-tavukoodityökaluja, kuten debuggeri valmiina, koska se on täysin erilainen tavukoodi. Vaikka Scrollilla on vaikeampaa saada hyvää suorituskykyä käskysarjasta, sitä ei ole suunniteltu zk:lle. Molemmilla strategioilla on hyvät ja huonot puolensa, ja viime kädessä on monia ulkoisia tekijöitä, jotka vaikuttavat niiden suhteelliseen menestykseen.

zkLLVM Circuit Compiler

💡 Nimestään huolimatta LLVM ei ole VM (virtuaalikone). LLVM on kääntäjätyökalujen joukon nimi, joka on ankkuroitu kieliagnostikkoon intermediate representation (IR).

= nolla; Säätiö (nimen osalta se on a SQL-injektio vitsi jos mietit) rakentaa kääntäjää, joka voi muuntaa minkä tahansa LLVM-käyttöliittymäkielen väliesitykseen, joka voidaan todistaa SNARKissa. zkLLVM on suunniteltu laajennukseksi olemassa olevaan LLVM-infrastruktuuriin, alan standardityökaluketjuksi, joka tukee monia korkean tason kieliä, kuten Rust, C, C++ jne.

Kuinka se toimii

Karkea luonnos zkLLVM-arkkitehtuurista

Käyttäjä, joka haluaa todistaa jonkin laskennan, yksinkertaisesti toteuttaisi laskennan C++:ssa. ZkLLVM ottaa tämän korkean tason lähdekoodin, jota tukee niiden muokattu clang-kääntäjä (tällä hetkellä C++) ja luo piirin väliesityksen. Tässä vaiheessa piiri on valmis testattavaksi, mutta käyttäjä saattaa haluta todistaa piirin joidenkin dynaamisten tulojen perusteella. Dynaamisten tulojen käsittelemiseksi zkLLVM:ssä on lisäkomponentti, jota kutsutaan osoittajaksi, joka luo osoitustaulukon, jossa kaikki syötteet ja todistajat ovat täysin esikäsiteltyjä ja valmiita todistettaviksi piirin rinnalla.

Nämä kaksi komponenttia ovat kaikki mitä tarvitaan todisteen luomiseen. Käyttäjä voi teoriassa luoda todisteen itse, mutta koska tämä on jokseenkin erikoistunut laskentatehtävä, hän saattaa haluta maksaa jonkun muun, jolla on laitteisto, tekemään sen puolestaan. Tälle vastapuolen etsintämekanismille = nolla; Säätiö on myös perustanut "todistemarkkinat", joilla todistajat kilpailevat todistaakseen laskennan käyttäjille, jotka maksavat heille siitä. Tämä vapaiden markkinoiden dynamiikka johtaa todistajiin, jotka optimoivat arvokkaimmat todistustehtävät.

Kompromissit

Koska jokainen todistettava laskentatehtävä on ainutlaatuinen ja tuottaa eri piirin, on olemassa ääretön määrä piirejä, joita todistajien on kyettävä käsittelemään. Tämä pakotettu yleistettävyys vaikeuttaa yksittäisten piirien optimointia. Todistusmarkkinoiden käyttöönotto mahdollistaa erikoistumisen markkinoiden arvokkaina pitämiin piireihin. Ilman näitä markkinoita olisi haastavaa saada todistaja optimoimaan tämä piiri tämän luonnollisen kylmäkäynnistysongelman vuoksi.

Toinen kompromissi on klassinen abstraktio vs. kontrolli. Käyttäjät, jotka ovat valmiita ottamaan tämän helppokäyttöisen käyttöliittymän, luopuvat taustalla olevien kryptografisten primitiivien hallinnasta. Monille käyttäjille tämä on erittäin pätevä kompromissi, koska usein on parempi antaa salausasiantuntijoiden tehdä nämä päätökset puolestasi.

Plussat

  • Käyttäjät voivat kirjoittaa koodia tutuilla korkean tason kielillä
  • Kaikki zk:n sisäiset ominaisuudet on erotettu käyttäjistä
  • Ei luota tiettyyn "VM"-piiriin, joka lisää ylimääräistä yleiskustannuksia

MIINUKSET

  • Jokaisella ohjelmalla on erilainen piiri. Vaikea optimoida. (todistemarkkinat ratkaisevat tämän osittain)
  • Ei-triviaali sisäisten zk-kirjastojen vaihtaminen/päivitys (vaatii haaroittamisen)

ZkVM kuvaa kaikkien zk-virtuaalikoneiden superjoukkoa, kun taas zkEVM on erityinen zkVM-tyyppi, josta kannatti keskustella erillisenä aiheena sen nykyisen yleisyyden vuoksi. On olemassa muutamia muita hankkeita, jotka työskentelevät yleisempien zkVM:ien rakentamiseksi, jotka perustuvat ISA:ihin räätälöityjen krypto-VM:ien lisäksi.

EVM:n todistamisen sijaan järjestelmä voisi todistaa erilaisen käskysarjaarkkitehtuurin (ISA), kuten RISC-V:n tai WASM:n uudessa VM:ssä. Kaksi projektia, jotka työskentelevät näiden yleistettyjen zkVM:ien parissa, ovat RISC Zero ja zkWASM. Sukellaanpa hieman RISC Zeroon tässä osoittaaksemme, kuinka tämä strategia toimii ja joitain sen etuja/haittoja. 

Risc Zero proof sukupolven korkean tason arkkitehtuuri

RISC Zero pystyy todistamaan minkä tahansa laskennan, joka suoritetaan RISC-V-arkkitehtuurilla. RISC-V on avoimen lähdekoodin ohjesarjaarkkitehtuurin (ISA) standardi, joka on kasvattanut suosiotaan. RISC (reduced Instruction Set Computer) -filosofia on rakentaa äärimmäisen yksinkertainen käskysarja minimaalisella monimutkaisuudella. Tämä tarkoittaa, että pinon ylempien kerrosten kehittäjät joutuvat ottamaan suuremman kuorman toteuttaessaan ohjeita käyttämällä tätä arkkitehtuuria samalla kun laitteiston toteuttaminen yksinkertaistuu.

Tämä filosofia pätee myös yleiseen tietojenkäsittelyyn, ARM-sirut ovat hyödyntäneet RISC-tyylisiä käskysarjoja ja ovat alkaneet hallita mobiilisirujen markkinoita. Osoittautuu, että yksinkertaisemmilla käskysarjoilla on myös suurempi energia- ja muotialueen hyötysuhde.

Tämä analogia pätee melko hyvin zk-todisteiden generoinnin tehokkuuteen. Kuten aiemmin todettiin, suorituksen jälkiä zk todistaessasi maksat kaikkien käskyjen kustannusten summan jokaista jäljityksen kohdetta kohti, joten yksinkertaisempi ja vähemmän kokonaiskäskyjä on parempi.

Kuinka se toimii

Kehittäjän näkökulmasta RISC Zeron käyttäminen zk-todisteiden käsittelemiseen on samanlaista kuin AWS Lambda -toimintojen käyttäminen taustapalvelinarkkitehtuurin käsittelemiseen. Kehittäjät ovat vuorovaikutuksessa RISC Zeron tai AWS Lambdan kanssa yksinkertaisesti kirjoittamalla koodia, ja palvelu hoitaa kaiken taustajärjestelmän monimutkaisuuden.

RISC Zerolle kehittäjät kirjoittavat Rust tai C++ (lopulta mitä tahansa, joka kohdistuu RISC-V:hen). Järjestelmä ottaa sitten kääntämisen aikana luodun ELF-tiedoston ja käyttää sitä VM-piirin syöttökoodina. Kehittäjät kutsuvat yksinkertaisesti todistetta, joka palauttaa kuitin (joka sisältää suoritusjäljyn zk-todistuksen), jota kuka tahansa voi kutsua "verify" mistä tahansa. Kehittäjän näkökulmasta zk:n toimintaa ei tarvitse ymmärtää, sillä taustalla oleva järjestelmä hoitaa kaiken tämän monimutkaisuuden.

Risc Zero harjoittelija?

Plussat

  • Helppokäyttöinen. Avaa oven mille tahansa ohjelmoijalle rakentaa zk-sovelluksia
  • Yksi piiri, johon tutkijat voivat erikoistua
    • Myös vähemmän pinta-alaa hyökkäystä varten ja vähemmän tarkastettavaa
  • Yhteensopiva minkä tahansa lohkoketjun kanssa, lähetät vain todisteet

MIINUKSET

  • Vaatii paljon lisäkustannuksia (todistekoon ja sukupolven nopeuden suhteen) tällaisen yleisen käyttöliittymän tukemiseen
  • Vaatii merkittäviä parannuksia todisteiden luontitekniikoissa, jotta saataisiin laaja tuki olemassa oleville kirjastoille

Valmiiksi rakennetut uudelleenkäytettävät piirit

Joillekin perus- ja uudelleenkäytettäville piireille, jotka ovat erityisen hyödyllisiä lohkoketjusovelluksissa tai muualla, tiimit ovat saattaneet jo rakentaa ja optimoida nämä piirit puolestasi. Voit vain antaa syötteen tiettyä käyttötapausta varten. Esimerkiksi Merklen osallisuustodistus on jotain, jota tarvitaan yleisesti krypto-sovelluksissa (airdrop-listat, Tornado Cash jne.). Sovelluskehittäjänä voit aina käyttää uudelleen näitä taistelutestattuja sopimuksia ja muokata vain päällekkäisiä tasoja luodaksesi ainutlaatuisen sovelluksen.

Esimerkiksi Tornado Cashin piirejä voidaan käyttää uudelleen a yksityinen airdrop-sovellus tai yksityinen äänestyssovellus. Manta ja Semaphore rakentavat kokonaista työkalusarjaa tämän kaltaisia ​​yleisiä piirilaitteita, joita voidaan käyttää Solidity-sopimuksissa ilman, että zk-kuun matematiikan taustalla olevista tiedoista on juurikaan ymmärrystä.

Opas – pinon valitseminen

Kuten pitkään keskusteltiin, zk-sovelluksen kehittämiseen on lukemattomia eri vaihtoehtoja, joilla kaikilla on omat ainutlaatuiset kompromissinsa. Tämä kaavio auttaa tekemään yhteenvedon tästä päätösmatriisista, jotta voit valita työhön parhaan työkalun zk-asiantuntemustason ja suorituskykytarpeesi perusteella. Tämä ei ole kattava luettelo, aion lisätä tähän tulevaisuudessa, kun saan tietoiseksi lisää työkaluja tulossa tilaan.

Sovelluksen kehittäjän opas zkGalaxylle

zk App Dev Cheatsheet

1. Matalan tason Snark-kirjastot

Milloin käyttää: 

  • Tarvitset koko prover-pinon tarkan hallinnan
  • Haluat välttää yleisten komponenttien uudelleenrakentamisen
  • Haluat kokeilla erilaisia ​​yhdistelmiä Todistuskaavioiden, käyrien ja muiden matalan tason perusalkioiden

Milloin ei saa käyttää:

  • Olet aloittelija, joka etsii korkean tason testausliittymiä

Vaihtoehdot: 


3. zk-kääntäjät

Milloin käyttää: 

  • Haluton ottamaan yleisen piirin kustannuksia
  • Haluatko kirjoittaa piirejä tutuilla kielillä 
  • Tarvitsevat erittäin mukautetun piirin

Milloin ei saa käyttää: 

  • Haluat hallita taustalla olevia salausprimitiivejä
  • Tarvitset piirin, joka on jo voimakkaasti optimoitu

Vaihtoehdot:


5. zkVM

Milloin käyttää: 

  • Haluatko kirjoittaa koodia korkean tason kielellä 
  • On todistettava tämän suorituksen oikeellisuus 
  • Jotkin tämän suorituksen syötteet on piilotettava todentajalta
  • Sinulla on vähän tai ei ollenkaan asiantuntemusta zk:stä

Milloin ei saa käyttää:

  • Erittäin alhaisen latenssin ympäristöissä (se on edelleen hidasta)
  • Sinulla on valtava ohjelma (toistaiseksi)

Vaihtoehdot:

2. zk DSLs

Milloin käyttää: 

  • Olet mukava oppia uutta kieltä
  • Haluatko käyttää joitain taisteluissa testattuja kieliä
  • Tarvitset minimaalisen piirikoon, valmis luopumaan abstraktioista

Milloin ei saa käyttää: 

  • Tarvitsee tarkan hallinnan todistetusti toimivasta taustajärjestelmästä (tällä hetkellä voi vaihtaa taustaohjelmia joidenkin DSL-verkkojen kanssa)

Vaihtoehdot:


4. zkEVM

Milloin käyttää: 

  • Sinulla on dApp, joka toimii jo EVM:ssä
  • Tarvitset käyttäjillesi halvempia tapahtumia 
  • Haluat minimoida uuteen ketjuun siirtymisen vaivan
  • Huolehdi vain zk:n ytimekkyydestä (pakkaus)

Milloin ei saa käyttää: 

  • Tarvitset täydellisen EVM-ekvivalenssin
  • Tarvitset zk:n yksityisyysominaisuuden 
  • Sinulla on ei-blockchain-käyttötapaus 

Vaihtoehdot: 


6. Valmiiksi rakennetut uudelleenkäytettävät piirit

Milloin käyttää: 

  • Sinulla on älykäs sopimussovellus, joka perustuu yleisiin zk-rakennuspalikoihin, kuten Merklen sisällyttämiseen
  • Sinulla on vähän tai ei ollenkaan asiantuntemusta taustalla olevista zk-asioista

Milloin ei saa käyttää:

  • Sinulla on erittäin erikoistuneet tarpeet
  • Valmiiksi rakennetut piirit eivät tue käyttötapaasi 

Vaihtoehdot: 

Yhteenveto

zk on useiden teknologioiden kärjessä, ja sen rakentaminen vaatii syvällistä matematiikan, kryptografian, tietojenkäsittelytieteen ja laitteistotekniikan ymmärtämistä. Kuitenkin, koska yhä enemmän abstraktiotasoja on saatavilla päivittäin, sovelluskehittäjät voivat hyödyntää zk:n tehoa ilman tohtorintutkintoa. Koska testausaikojen rajoituksia nostetaan hitaasti ajan myötä optimointien ansiosta kaikilla pinon tasoilla, näemme todennäköisesti vielä yksinkertaisempia työkaluja keskivertokehittäjälle.

Toivon, että sain sinut, utelias ohjelmistokehittäjä, vakuuttuneeksi siitä, että voit aloittaa zk:n käytön sovelluksissasi jo tänään. Hyvää hakkerointia 🙂

mitä odotat anon, mene rakentamaan joitain zk-sovelluksia

paljastukset: Blockchain Capital on sijoittaja useisiin edellä mainituista protokollista.

Kussakin blogikirjoituksessa esitetyt näkemykset voivat olla kunkin kirjoittajan henkilökohtaisia ​​näkemyksiä eivätkä välttämättä kuvasta Blockchain Capitalin ja sen tytäryhtiöiden näkemyksiä. Blockchain Capital tai kirjoittaja eivät takaa kussakin blogikirjoituksessa annettujen tietojen tarkkuutta, riittävyyttä tai täydellisyyttä. Blockchain Capital, kirjoittaja tai joku muu henkilö ei anna tai anna mitään nimenomaista tai epäsuoraa takuuta tai takuita minkään blogikirjoituksen sisältämien tietojen tarkkuudesta, täydellisyydestä tai oikeudenmukaisuudesta, eikä mitään vastuuta tai vastuuta hyväksytä. tällaisia ​​tietoja varten. Mikään jokaisessa blogikirjoituksessa ei ole sijoitus-, sääntely-, laki-, säännöstenmukaisuus- tai vero- tai muita neuvoja, eikä siihen saa luottaa sijoituspäätöstä tehtäessä. Blogiviestejä ei pidä pitää nykyisinä tai menneinä suosituksina tai tarjouksina ostaa tai myydä arvopapereita tai omaksua sijoitusstrategia. Blogikirjoitukset voivat sisältää ennusteita tai muita tulevaisuuteen suuntautuvia lausuntoja, jotka perustuvat uskomuksiin, oletuksiin ja odotuksiin, jotka voivat muuttua monien mahdollisten tapahtumien tai tekijöiden seurauksena. Jos muutos tapahtuu, todelliset tulokset voivat poiketa olennaisesti tulevaisuutta koskevissa lausumissa esitetyistä. Kaikki tulevaisuuteen suuntautuvat lausunnot puhuvat vain tällaisten lausuntojen antamispäivästä, eivätkä Blockchain Capital tai kukin kirjoittaja ole velvollinen päivittämään tällaisia ​​lausuntoja paitsi lain edellyttämällä tavalla. Siltä osin kuin Blockchain Capitalin tuottamiin, julkaisemiin tai muuten jakamiin asiakirjoihin, esityksiin tai muuhun materiaaliin viitataan missä tahansa blogitekstissä, tällaiset materiaalit tulee lukea ja huomioida huolellisesti kaikki niissä olevat vastuuvapauslausekkeet.

Aikaleima:

Lisää aiheesta Blockchain Capital