Cryptology Academy · Lektion

zk-SNARKs: Korte ikke-interaktive argumenter

Forstå Groth16-opsætningen, generering af beviser og verifikation.

Lektion 3 af 413 trin

zk-SNARKs: Korte ikke-interaktive argumenter er en gratis Cryptology Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Cryptology Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Cryptology Academy-kurset indeholder 4 lektioner i alt.

Hvad er en zk-SNARK?

En zk-SNARK (Zero-Knowledge Succinct Non-interactive ARgument of Knowledge) er et bevis, der: (1) giver nulviden, (2) er kortfattet (lille bevis, hurtig verifikation uanset beregningens størrelse), (3) er ikke-interaktivt (én enkelt bevisstreng).

Motivation

Sigma-protokoller fungerer for simple udsagn (kendskab til en diskret logaritme). Til komplekse beregninger — "Jeg kørte denne funktion korrekt på private input" — har vi brug for et generelt bevissystem. SNARK'er beviser vilkårlige beregninger med verifikationstid på O(1).

Aritmetiske kredsløb

Beregningen udtrykkes først som et aritmetisk kredsløb: en rettet acyklisk graf af additions- og multiplikationsporte over et endeligt legeme. Eksempel: bevis, at du kender x, så x^3 + x + 5 = 35, uden at afsløre x=3. Kredsløbet har ~5 porte.

R1CS: rang-1-begrænsningssystem

Et aritmetisk kredsløb omdannes til R1CS: et sæt begrænsninger (A*z)*(B*z) = C*z, hvor z er en vektor med alle ledningsværdier. Hver multiplikationsport bliver til én begrænsning. Beviseren skal finde z, der opfylder alle begrænsninger, uden at afsløre private ledninger.

QAP: kvadratiske aritmetiske programmer

R1CS omdannes til et QAP: polynomierne A(x), B(x), C(x), således at A(x)*B(x)-C(x) er deleligt med et målpolynomium t(x), hvis og kun hvis begrænsningerne er opfyldt. Beviseren viser, at vedkommende kender et polynomium H(x) som kvotient, uden at afsløre vidnet.

Groth16-bevis

Groth16 (2016) er den mest effektive generelle SNARK. Efter en betroet opsætning (generering af CRS) producerer beviseren et bevis med 3 gruppeelementer (~192 bytes for BLS12-381). Verifikation: 3 paringsoperationer. Beviset har konstant størrelse uanset kredsløbets størrelse.

Ceremoni for betroet opsætning

Groth16 kræver en betroet opsætning for hvert kredsløb: udvælg giftigt affald (en tilfældig hemmelighed), beregn den fælles referencestreng, og tilintetgør derefter det giftige affald. Hvis affaldet overlever, kan en modstander forfalske beviser. Flerparts-ceremonier (Powers of Tau) fordeler tilliden.

PLONK: universel opsætning

PLONK (2019) bruger en universel betroet opsætning: én ceremoni fungerer for alle kredsløb op til en fastsat størrelse. Der kræves ingen opsætning for hvert enkelt kredsløb. Afvejningen er lidt større beviser end med Groth16. Bruges i ZK-EVM-implementeringer (Polygon Hermez, zkSync Era).

STARK'er kontra SNARK'er

STARK'er (Scalable Transparent ARguments of Knowledge) kræver ingen betroet opsætning og bruger hashfunktioner (postkvantesikre). Afvejningen er større beviser (snesevis af KB mod 200 bytes). Bruges i StarkWare/StarkNet og programmeringssproget Cairo. SNARK'er er mindre; STARK'er er kvantesikre.

Paringsbaseret kryptografi

Groth16 bruger bilineære paringer: e: G1 × G2 → GT, hvor e(a*P, b*Q) = e(P,Q)^{ab}. Det gør det muligt at kontrollere polynomielle identiteter i eksponenten uden at afsløre værdierne. Kurven BLS12-381 er optimeret til effektive Groth16-paringer.

Omkostninger ved bevisgenerering

Groth16's bevisgenereringstid for et kredsløb med 10^6 porte: ~10 sekunder på en moderne CPU. Verifikation: ~1 ms. Denne asymmetri er tilsigtet: beviseren, som udførte den tunge beregning, udfører arbejdet; verifikatoren (en blockchain-node) udfører næsten intet arbejde.

Hurtigt tjek

Hvad er den største ulempe ved Groth16 sammenlignet med PLONK?

Opsummering

zk-SNARK'er beviser vilkårlige beregninger med beviser af konstant størrelse. Procesforløb: beregning → aritmetisk kredsløb → R1CS → QAP → SNARK-bevis. Groth16 er mest effektiv (betroet opsætning for hvert kredsløb); PLONK bruger en universel opsætning. Næste emne: ZKP-anvendelser i blockchain.

Gratis at komme i gang

Lær Cryptology Academy med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
67
Lektioner
261

Ofte stillede spørgsmål

Er lektionen “zk-SNARKs: Korte ikke-interaktive argumenter” gratis?

Ja — hele teksten til “zk-SNARKs: Korte ikke-interaktive argumenter” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Cryptology Academy-kurset, skal du opgradere til CoddyKit PRO. Cryptology Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “zk-SNARKs: Korte ikke-interaktive argumenter”?

Forstå Groth16-opsætningen, generering af beviser og verifikation. Du øver dig i Cryptology Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Cryptology Academy?

Der kræves ingen tidligere erfaring. Cryptology Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “zk-SNARKs: Korte ikke-interaktive argumenter”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Cryptology Academy-lektion?

Ja. Alle Cryptology Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. ZKP-intuition: Ali Babas grotte
  2. Sigma-protokoller og Schnorr-identifikation
  3. zk-SNARKs: Korte ikke-interaktive argumenter
  4. ZKP-anvendelser: ZK-rollups og privacy coins
← Tilbage til Cryptology Academy