Specializacija in generalizacija, katera je prihodnost ZK? Naj na to vprašanje poskusim odgovoriti s pomočjo diagrama:
Kot je prikazano na diagramu, ali je mogoče, da v prihodnosti dosežemo magično optimalno točko v koordinatnem sistemu kompromisov?
Ne, prihodnost preverljivega računanja zunaj verige je neprekinjena krivulja, ki briše meje med specializiranimi in splošnimi ZK. Dovolite mi, da pojasnim zgodovinski razvoj teh izrazov in kako se bodo v prihodnosti zbližali.
Pred dvema letoma je “specializirana” infrastruktura ZK pomenila nizko nivojska vezja, kot so circom, Halo2 in arkworks. Aplikacije ZK, ki so bile zgrajene s temi ogrodji, so bile v bistvu ročno napisana vezja ZK. Bile so hitre in stroškovno učinkovite za določene naloge, vendar jih je bilo običajno težko razvijati in vzdrževati. So podobni različnim specializiranim čipom integriranih vezij (fizične silicijeve ploščice) v današnji industriji integriranih vezij, kot so čipi NAND in čipi krmilnikov.
V zadnjih dveh letih pa je specializirana infrastruktura ZK postopoma postala bolj “generalizirana”.
Zdaj imamo ogrodja ZKML, koprocesor ZK in ZKSQL, ki ponujajo enostavne za uporabo in visoko programabilne komplete SDK za izdelavo različnih kategorij aplikacij ZK, ne da bi napisali eno samo vrstico kode vezja ZK. Koprocesor ZK na primer pametnim pogodbam omogoča, da brez zaupanja dostopajo do zgodovinskih stanj, dogodkov in transakcij v verigi blokov ter izvajajo poljubne izračune na teh podatkih. ZKML pametnim pogodbam omogoča, da brez zaupanja uporabljajo rezultate sklepanja umetne inteligence za obdelavo širokega nabora modelov strojnega učenja.
Ta razvita ogrodja znatno izboljšujejo programabilnost na ciljnih področjih, hkrati pa ohranjajo visoko zmogljivost in nizke stroške zaradi tankih abstraktnih slojev (SDK/API), ki so blizu golim kovinskim vezjem.
So podobni GPU, TPU in FPGA na trgu integriranih vezij: programirljivi strokovnjaki za domene.
Tudi podjetje ZKVM je v zadnjih dveh letih naredilo velik napredek. Predvsem so vsi splošni ZKVM-ji zgrajeni na podlagi specializiranih ogrodij ZK na nizki ravni. Ideja je, da lahko aplikacije ZK pišete v jezikih visoke ravni (še bolj prijaznih do uporabnika kot SDK/API), ki se sestavijo v kombinacijo specializiranih vezij in naborov ukazov (RISC-V ali podobno kot WASM). To so kot procesorski čipi v industriji integriranih vezij.
ZKVM je abstraktna plast nad nizko nivojskimi ogrodji ZK, prav tako kot koprocesorji ZK.
Kot je nekoč dejal neki modrec, lahko abstraktni sloj reši vse probleme računalništva, vendar hkrati ustvari še en problem. Ključ je v kompromisih. Pri ZKVM smo v osnovi sklenili kompromis med zmogljivostjo in splošnostjo.
Pred dvema letoma je bila zmogljivost ZKVM “bare-metal” res slaba. Vendar se je v samo dveh letih zmogljivost ZKVM znatno izboljšala.
Zakaj?
Ker so ti “splošni” ZKVM postali bolj “specializirani”. Ključni razlog za izboljšanje zmogljivosti je “predkompiliranje”. Te predkompilacije so specializirana vezja ZK, ki so sposobna izračunavati običajne programe visoke ravni, kot so SHA2 in različna preverjanja podpisov, veliko hitreje, kot če bi jih razčlenili na fragmente instrukcijskih vezij.
Tako je trend zdaj povsem jasen.
Specializirana infrastruktura ZK postaja vse bolj splošna, splošni ZKVM pa vse bolj specializirani.
Z optimizacijo obeh rešitev v zadnjih nekaj letih je bila dosežena boljša kompromisna točka kot prej: napredek na eni točki brez žrtvovanja druge. Zato obe strani menita, da “smo zagotovo prihodnost”.
Vendar nam modrost računalništva pravi, da bomo na neki točki naleteli na “Paretov optimalni zid” (zelena črtkana črta), kjer ne moremo izboljšati ene zmogljivosti, ne da bi žrtvovali drugo.
Zato se postavlja vprašanje za milijon dolarjev:
Ali bo ena tehnologija ob pravem času popolnoma nadomestila drugo?
Če si sposodimo podatke iz industrije integriranih vezij: velikost trga procesorjev je 126 milijard dolarjev, celotna industrija integriranih vezij (vključno z vsemi “specializiranimi” integriranimi vezji) pa 515 milijard dolarjev. Prepričan sem, da se bo z mikroskopskega vidika zgodovina ponovila in da se ne bosta zamenjala.
Kljub temu danes nihče ne bi rekel: “Hej, uporabljam računalnik, ki ga v celoti poganja splošni procesor,” ali “Hej, to je domišljijski robot, ki ga poganjajo specializirani integrirani čipi.”
Da, na to vprašanje moramo gledati z makro vidika, v prihodnosti pa bo obstajala kompromisna krivulja, ki bo razvijalcem omogočala prilagodljivo izbiro glede na njihove potrebe.
V prihodnosti lahko specializirana infrastruktura ZK in splošna infrastruktura ZKVM delujeta skupaj. To je mogoče uresničiti v več oblikah. Najpreprostejši način je dosegljiv že zdaj. Koprocesor ZK lahko na primer uporabite za generiranje nekaterih rezultatov izračunov v zgodovini transakcij verige blokov, vendar je poslovna logika izračunov na teh podatkih zelo zapletena in je ni mogoče preprosto izraziti v SDK/API.
Lahko pa pridobite zmogljive in poceni dokaze ZK za podatke in vmesne rezultate izračunov, nato pa jih z rekurzivnimi dokazi združite v virtualni stroj za splošne namene.
Čeprav se mi zdi tovrstna razprava zanimiva, vem, da vsi gradimo to asinhrono računalniško prihodnost, ki jo poganja preverljivo računanje zunaj verige, za blockchain. Ko se bodo v prihodnjih letih pojavili primeri uporabe za množično uporabo, verjamem, da se bo ta razprava končno zaključila.