Inzicht in nul-kennisblokketens

Hoe u kunt laten zien dat u iets weet zonder te laten zien wat u weet

Afgelopen vrijdag was de lancering van Zcash, een nieuwe openbare blockchain en bijbehorende cryptocurrency die veel aandacht trok. Inmiddels zijn er honderden cryptocurrencies, dus elke jonge deelnemer in de dop heeft een serieuze differentiator nodig om boven de strijd uit te stijgen. In het geval van Zcash is dit eenvoudig - Zcash-gebruikers kunnen elkaar in absolute privacy geld sturen. Voor een cryptocurrency gebaseerd op een blockchain is dit een opmerkelijke technische prestatie. (Hoewel moet worden opgemerkt dat andere ketens zoals Monero en Dash mikken op hetzelfde doel met eenvoudigere maar minder effectieve middelen.)

Zoals ik heb gedaan daarover geschreven, in algemene zin vormen blockchains (zowel publiek als privaat) een afweging waarbij disintermediatie wordt bereikt ten koste van vertrouwelijkheid. Blockchains bieden een slimme nieuwe manier voor deelnemers om veilig een database te delen, zelfs als ze elkaar niet vertrouwen, zonder dat een centrale tussenpersoon nodig is. Maar er is een prijs te betalen voor deze peer-to-peer-decentralisatie - het "knooppunt" van elke deelnemer in de keten moet elke transactie voor zichzelf verifiëren, en dit betekent op zijn beurt dat het ziet wat alle anderen doen.

Twee manieren om te ketenen

In het geval van openbare blockchains en cryptocurrencies dient de gedeelde database voornamelijk als een record van wie controleert (en dus effectief bezit) hoeveel cryptocurrency, met een optionele besprenkeling van 'metadata' (bitcoin) of contractuele logica (Ethereum) er bovenop. In privé-blockchains daarentegen, zien we meestal twee hoofdklassen van use-case: (a) het eigendom en de overdracht van externe activa vertegenwoordigd door tokens in de keten, en (b) meer algemene toepassingen met betrekking tot gegevensopslag en -herstel. Bijvoorbeeld in ons eigen product MultiChainworden deze twee gebruiksklassen geïmplementeerd met respectievelijk native assets en datastromen.

Als het gaat om algemene gegevensopslag, biedt de blockchain een aantal diensten: bewijzen waar een stuk gegevens vandaan komt, het van een tijdstempel voorzien en het onveranderlijk notariseren om wijziging door een minderheid van blockchain-deelnemers te voorkomen. Maar de blockchain hoeft niets te zeggen over de data zelf - elke applicatie kan beslissen wat een stukje data betekent en of het geldig is. Slechte gegevens kunnen eenvoudigweg op applicatieniveau worden genegeerd, zonder schade toe te brengen aan de status van de blockchain als geheel.

Als blockchains daarentegen tokenized assets rechtstreeks overdragen, moeten ze interne regels toepassen met betrekking tot de geldigheid van die transfers. Simpel gezegd, een evenement als "Alice betaalt Bob één euro" wordt alleen goedgekeurd door de keten als Alice minstens één euro op haar naam heeft staan. Hoewel verschillende soorten blockchain deze regel op verschillende manieren uitdrukken (bitcoin-transactiebeperkingen versus slimme Ethereum-contracten), delen ze allemaal de eigenschap dat de financiën van Alice bekend moeten zijn bij elk knooppunt in de keten. Hierdoor kunnen ze beoordelen of haar betaling geldig is, weten hoeveel Bob als resultaat heeft en eventuele toekomstige betalingen van Bob aan Charlie en anderen evalueren.

Op dit punt zullen lezers die bekend zijn met blockchains erop wijzen dat Alice en Bob niet direct bij naam aan een ketting worden geïdentificeerd. In plaats daarvan handelt elk af onder een of meer "adressen", die lange alfanumerieke reeksen gebrabbel zijn die geen verband houden met hun werkelijke identiteit. Hoewel dit waar is, helpt het in werkelijkheid niet veel, omdat er verschillende manieren zijn waarop de verbinding tussen gebruikers en hun adressen kan worden afgeleid.

Om met iemand op een blockchain te kunnen afhandelen, moet ik eerst en vooral een van hun adressen kennen. Dus als ik ze wat geld stuur, kan ik zien waar dat geld naartoe gaat, en als ze me betalen, kan ik zien waar het vandaan komt. Ten tweede, als ik iets weet over een deelnemer uit de echte wereld (bijv. Welke soorten activa ze verhandelen op welk tijdstip van de dag), kan ik de activiteit van de keten doorzoeken op overeenkomstige patronen en vervolgens hun adres afleiden met een hoog niveau van vertrouwen. Ten slotte, als ik eenmaal één adres van een deelnemer weet, kan ik vaak uitzoeken welke andere adressen hij bezit en gebruikt, door de volledige geldstroom in de keten te volgen. Hoewel dit niet triviaal is om te bereiken, is het zeker mogelijk met voldoende motivatie, zoals bewezen door bedrijven als Chainalysis en Skry die de kost verdienen door dit soort "netwerkanalyse" voor bitcoin te leveren.

Bespaard door encryptie?

Het contrast tussen activa en gegevens raakt direct aan de kwestie van codering. In het geval van algemene gegevensopslag op een blockchain, kunnen we de opgeslagen informatie versleutelen, terwijl we nog steeds profiteren van de herkomst van gegevens, tijdstempels en onveranderlijkheid. Voor geen van deze functies is inzicht in de gegevens zelf nodig. Daarom is het volkomen geldig dat twee deelnemers een blockchain gebruiken om informatie op te slaan die alleen zij kunnen lezen, terwijl ze toch het voordeel behalen van andere deelnemers die zich committeren aan de oorsprong van die gegevens en het bestaan ​​ervan op een bepaald moment.

Dit soort versleuteling kan daarentegen niet worden gebruikt door transacties die overdrachten van getokeniseerde activa vertegenwoordigen. Als Alice en Bob hun transactie zouden versleutelen, zouden de activa in kwestie niet veilig kunnen worden gebruikt door een andere deelnemer in de keten, omdat niemand anders zou weten waar de activa zich werkelijk bevinden. De activa zouden geen enkele collectieve betekenis meer hebben in de keten, wat het hele punt vernietigt.

In de financiële sector is dit conflict tussen privacy en liquiditeit de belangrijkste moeilijkheid bij het gebruik van blockchains om activa over te dragen, waardoor de hoop van menig startup in de ruimte wordt gestrand. Terwijl de technisch De haalbaarheid van het verplaatsen van activa over een blockchain is bewezen door talloze pilots, in de praktijk zorgt dit ervoor dat er te veel activiteit tussen peers wordt onthuld. Het weglekken van informatie is in de beste tijden een nadeel, maar het is een complete showstopper wanneer de deelnemers van een keten hevig concurreren, of wanneer de regelgeving dit verbiedt.

Als gevolg hiervan zijn veel prominente "gedistribueerde grootboek" -startups afgestapt van het idee van afwikkeling op de keten, en zijn ze teruggevallen op meer traditionele bilaterale transacties die zijn versleuteld en notarieel zijn vastgelegd op een blockchain onder het "algemene gegevensopslag" -paradigma. Dit kan geschillen en dubbele uitgaven voorkomen, maar de afwikkeling zelf blijft buiten de keten. Hoewel de blockchain nog steeds enige waarde biedt, is deze minder transformatief dan aanvankelijk gehoopt. Ongetwijfeld zijn er meer dan een paar rode gezichten bijeenkomsten geweest tussen startups en hun investeerders.

En toch, na alle teleurstelling, kan de redding eindelijk nabij zijn. Voer de nulkennis-blockchain in.

Introductie van nul kennis

Voordat we dit nieuwe type blockchain bespreken, is het handig om het principe van nulkennis zelf te begrijpen. In algemene zin is een nulkennisbewijs er een die de waarheid van een bepaalde bewering aantoont, zonder enige aanvullende informatie te onthullen die verder gaat dan wat het probeert te bewijzen.

Om een ​​voorbeeld te geven, laten we zeggen dat ik een kleurenblinde vriend heb die twee pennen bezit, die identiek zijn, behalve dat de ene groen is en de andere blauw. Mijn vriendin kan ze niet onderscheiden en ik wil haar ervan overtuigen dat ze inderdaad verschillend zijn. Natuurlijk kan ik dit niet doen door haar simpelweg de kleuren te vertellen, omdat ze niet kan beoordelen of ik lieg of niet.

Dus wat kan ik doen? (Neem even de tijd en probeer het antwoord zelf uit te werken ...) Wel, ik kan haar vragen om een ​​stuk papier te nemen en er twee lijnen op te tekenen in een andere kamer. Daarbij kan ze vrij beslissen of ze dezelfde pen voor beide lijnen gebruikt, of één pen voor elke lijn. Vanuit haar perspectief ziet het resultaat er hoe dan ook hetzelfde uit. Dan komt ze terug met het papier en ik vertel haar of ze een of twee pennen heeft gebruikt. Als de pennen dezelfde kleur hadden, zou ik dat natuurlijk niet weten. Dus het feit dat ik het goed heb, bewijst dat ze anders zijn.

Nou, niet helemaal. Er is een probleem met deze logica. Zelfs als de pennen identiek waren, zou ik nog steeds 50% kans hebben om het juiste antwoord te geven, omdat er maar twee mogelijkheden zijn (ze gebruikte één pen of twee). Dus een gelukkige gok bewijst helemaal niets. Om mijn zaak te versterken, moet het spel over meerdere rondes worden gespeeld. Na elke ronde wordt mijn kans om consequent gelijk te hebben met de helft af. Dus met 5 rondes heb ik een kans van 1 op 32 om succesvol te faken. Met 10 ronden is het 1 op 1024 en met 20 ronden 1 op 1048576 - met andere woorden, één op een miljoen. Afhankelijk van het relatieve niveau van verveling en achterdocht van mijn vriend, kan ze elk probabilistisch niveau van bewijs bereiken dat ze wenst, hoewel nooit absolute zekerheid.

Laat de snarks maar komen

Zero Knowledge Proofs in blockchains passen een soortgelijk principe toe, hoewel ze natuurlijk niet over de kleur van pennen gaan. Ze zijn eerder bedoeld om de verklaring "deze overdracht van activa is geldig" te bewijzen, zonder iets belangrijks over de overdracht zelf te onthullen. Zcash gebruikt een relatief nieuwe techniek voor nulkennisbewijzen genaamd zk-SNARKs, de volledige uitleg van welke valt (op zijn zachtst gezegd) buiten het bestek van dit stuk. Maar het basisidee is dit: elke computerconditie kan worden weergegeven door een rekenkundig circuit, dat een aantal gegevens als invoer gebruikt en als antwoord een "waar" of "onwaar" geeft. Een zk-SNARK gebruikt een model van deze schakeling om me met elke gewenste mate van zekerheid te laten bewijzen dat ik een input heb die een echte respons geeft, zonder de input zelf te onthullen. Althans filosofisch gezien is dit zoiets als bewijzen dat twee pennen verschillende kleuren hebben, zonder te onthullen wat die kleuren zijn.

Een zk-SNARK gebruikt een leuk trucje om de interactiviteit te vermijden die typerend is voor nulkennisbewijzen, waarbij een sceptische partij herhaaldelijk een uitdaging vormt voor degene die een claim indient. In het geval van onze pennen is deze uitdaging de keuze van mijn vriend tussen het gebruik van één of twee pennen in elke ronde. Dit soort interactiviteit is op een blockchain niet haalbaar omdat er geen vertrouwde centrale partij is om de uitdagingen aan te gaan. In plaats daarvan gebruikt een zk-SNARK een benadering van een "willekeurig orakel" waarin de uitdagingen deterministisch worden gecreëerd door een bepaalde code, maar zich in alle opzichten gedragen alsof ze willekeurig zijn. Niet toevallig gebruikt deze combinatie van determinisme en onvoorspelbaarheid dezelfde soort hashfunctie die een blockchain zelf beveiligt.

Zero Knowledge Proofs bestaan ​​al een tijdje, maar zk-SNARKs introduceren een aantal innovaties die ze bruikbaar maken in blockchains. Het belangrijkste is dat zk-SNARKs de grootte van de bewijzen en de rekeninspanning die nodig is om ze te verifiëren, verminderen. Zerocoin, een eerdere poging om nulkennisbewijzen te gebruiken in blockchains, vereist transacties van 45 kb, die elk een halve seconde nodig hebben om te controleren (cijfers uit de wit papier waarop Zcash is gebaseerd). Dit is drastisch erger dan bitcoin, waarvan de transacties doorgaans 0.3 kb groot zijn en binnen een milliseconde kunnen worden geverifieerd. Daarentegen wegen Zcash-transacties op 1kb en kunnen ze binnen 6 milliseconden worden ingecheckt. Dit plaatst Zcash in dezelfde schaalbaarheidsklasse als bitcoin - een opmerkelijke prestatie. Als we onze petje af hebben genomen voor de maker (s) van bitcoin, moeten we hiervoor onze sokken en schoenen uitdoen.

Voorzichtig geadviseerd

Voordat u al uw bitcoin naar Zcash converteert, zijn er enkele kanttekeningen waarmee u rekening moet houden. Ten eerste is de cryptografie van Zcash gebaseerd op een vertrouwd installatieproces, waarbij twee lange openbare sleutels worden afgeleid van een enkele willekeurig gegenereerde privé. Het is absoluut essentieel dat deze privésleutel wordt vernietigd, aangezien iedereen die deze bezit, de bewijzen kan vervalsen waarop het systeem vertrouwt. In het geval van Zcash is de privésleutel gemaakt tijdens een uitgebreide ceremonie, die in detail wordt beschreven hier. Bij de ceremonie waren verschillende bekende personages uit de cryptocurrency-wereld betrokken, die elk (zo wordt ons verteld) slechts een gedeeltelijk zicht hadden op de privésleutel. Dit betekent op zijn beurt dat Zcash alleen kan worden gecompromitteerd als alle deelnemers van de ceremonie kwaadwillig samenspannen. Het is aan de lezer om te beslissen hoe zelfverzekerd hij daarover denkt.

Ten tweede, ook al is het relatief snel controleren een anonieme Zcash-transactie, het creëren van elk van deze transacties draagt ​​een ernstige rekenkundige belasting. Volgens de Zcash Speed ​​Center, duurt het momenteel 48 seconden op een high-end server en meer dan 3 GB geheugen. Dit maakt het onpraktisch om anoniem transacties uit te voeren vanaf mobiele apparaten en oudere desktops en laptops. Zcash lost deze beperking gedeeltelijk op door zowel reguliere zichtbare cryptomunten (met snelle transacties) als anonieme "notities" (met langzame) te ondersteunen, met een ingebouwde methode om tussen de twee te converteren.

Ten derde, zelfs als we aannemen dat de onderliggende cryptografie goed is, kunnen er bugs in de Zcash-code op de loer liggen waardoor anonieme notities uit het niets kunnen worden opgeroepen. Hierdoor zou de monetaire basis van Zcash onbeperkt kunnen worden opgeblazen, waardoor de cryptocurrency uiteindelijk waardeloos wordt. In tegenstelling tot transparante cryptocurrencies zoals bitcoin, kan deze catastrofale gebeurtenis niet worden gedetecteerd, omdat het hele punt van Zcash transacties verborgen houdt. Desalniettemin wordt er volgens Zooko Wilcox, de CEO van Zcash, al aan gewerkt om een ​​oplossing te vinden, dus we kunnen er naar uitkijken die te zien.

Ten slotte, zoals bij elke cryptocurrency op basis van proof-of-work, blijft het potentieel voor 51% aanvallen bestaan. Dit betekent dat een groep "mijnwerkers" met meer dan de helft van de rekenkracht van het netwerk kan samenspannen om transacties terug te draaien waarvan iedereen dacht dat ze voltooid waren (slechte mijnwerkers kunnen nog steeds geen neptransacties vervalsen die andermans geld stelen). Zcash vertrouwt slim op Equihash, een ander hash-algoritme dan SHA-256 van bitcoin, wat betekent dat de enorme massa van bestaande bitcoin-mijnkracht niet tegen Zcash kan worden gekeerd. Equihash is ook ontworpen om beter bestand te zijn tegen de "ASIC's" (microprocessors voor speciale doeleinden) die bitcoin mining tot een oligopolie hebben gemaakt, maar alleen de tijd zal uitwijzen of hardware-ingenieurs een oplossing kunnen vinden en tegen welke prijs.

Geen kennis van private blockchains

Tot nu toe hebben we onze discussie gericht op de openbare Zcash-blockchain en cryptocurrency. Maar hoe zit het met externe activa die over privé- of toegestane blockchains en gedeelde grootboeken gaan? Kunnen dezelfde nul-kennistechnieken worden gebruikt?

Op technisch vlak is het antwoord ongetwijfeld ja. In vergelijking met de theoretische en technologische hoogstandjes die aan Zcash ten grondslag liggen, is het triviaal om het protocol uit te breiden om activa die aan een ketting zijn uitgegeven te ondersteunen. Het enige dat nodig is, is om de voorwaarden uit te breiden die zijn bewezen door een zk-SNARK om het behoud van meerdere activa af te dwingen, in plaats van een enkele cryptocurrency. Of nog eenvoudiger: maak meerdere afzonderlijke anonieme subsystemen op een enkele blockchain, die elk een ander type asset vertegenwoordigen, en voer binnen elk subsysteem uit, precies zoals Zcash dat vandaag doet. Deze tweede methode vereist helemaal geen begrip van zk-SNARKs.

Hoe zou de levenscyclus van een asset eruit zien in dit model? Ten eerste geeft een vertrouwde entiteit tokens uit die het activum vertegenwoordigen, door een zichtbare blockchain-transactie te verzenden die de waarde van die tokens certificeert. Dezelfde entiteit zou dan een tweede transactie uitvoeren die de zichtbare tokens omzet in geanonimiseerde Zcash-achtige "bankbiljetten", waardoor het actief ondergronds wordt verplaatst. Deze biljetten kunnen vervolgens in het geheim worden overgedragen van de uitgever naar anderen, en verder tussen de deelnemers van de keten. Net als bij Zcash kunnen de overdrachtstransacties door alle blockchain-deelnemers als geldig worden geverifieerd zonder hun inhoud te onthullen. Ten slotte, wanneer een houder een biljet wil verzilveren, zetten ze het terug in zichtbare tokens met behulp van een andere transactie in Zcash-stijl, sturen die tokens naar de oorspronkelijke uitgever en ontvangen in ruil daarvoor het equivalente echte activum. We kunnen ook toestaan ​​dat bankbiljetten rechtstreeks anoniem worden ingewisseld, in welk geval blockchain-deelnemers niet weten hoeveel van het actief in omloop blijft.

Dus nul-kennistransacties beloven de Gordiaanse knoop los te maken die heeft voorkomen dat blockchains worden gebruikt voor afwikkeling in de financiële sector. Om samen te vatten, in een reguliere blockchain-transactie, wanneer een activum van de ene bank naar de andere wordt verzonden, zijn de details van die transactie zichtbaar voor elke andere bank in de keten. Bij een nulkennistransactie daarentegen weten de anderen alleen dat er een geldige transactie heeft plaatsgevonden, maar niets over de afzender, ontvanger, activaklasse (als we slim zijn) en hoeveelheid. Zelfs het aantal transacties kan worden verdoezeld doordat deelnemers regelmatig neptransacties maken waarbij ze activa naar zichzelf sturen.

In termen van privacy is dit zo goed als een goudstaaf die in een koffer van de ene bank naar de andere reist, maar zonder de kosten en tijd van het fysiek verplaatsen van het goud. En het is beter dan een vertrouwde tussenpersoon, zoals een bewaarbank, te gebruiken, want er is niet eens die ene partij die alles ziet gebeuren. Voor het eerst maken zero-knowledge blockchains het mogelijk dat activaoverdrachten digitaal worden uitgevoerd op een peer-to-peer-basis, in perfecte geheimhouding.

Gooi die database (nog) niet weg

Ervan uitgaande dat de technische basisprincipes van Zcash gezond zijn, verwacht ik volledig dat het de bovenste laag van cryptocurrencies zal bereiken in termen van ontwikkelaarsinteresse en marktkapitalisatie. Maar is er een even mooie toekomst voor nul-kennistransacties in privaat blockchains? Zullen ze de overgang maken van het laboratorium naar systemen van productiekwaliteit die echt geld over de hele wereld verplaatsen?

Het is natuurlijk veel te vroeg om te vertellen. Maar er zijn een aantal vragen die moeten worden beantwoord voordat geautoriseerde blockchain-voorstanders kunnen wijzen op nul-kennistransacties en triomfantelijk de overwinning kunnen verklaren.

Ten eerste, en vooral: is dit veilig? Kunnen we er echt zeker van zijn dat zowel de onderliggende cryptografie als de gecodeerde implementaties ervan sterk genoeg zijn om te voorkomen dat een kwaadwillende partij uit het niets activa genereert? Zoals eerder vermeld, is het, in tegenstelling tot transparante blockchains, nog niet mogelijk om te detecteren of de monetaire basis van een zero-knowledge blockchain is aangetast. Toch is er geen betrouwbaardere test van deze technologie dan het vrijgeven als een open openbare blockchain die voor iedereen beschikbaar is om te zien en aan te vallen, en dit is precies wat Zcash doet. Na een aantal jaren van zien dat Zcash soepel werkt, kunnen instellingen ervan overtuigd raken dat zero-knowledge blockchains hun activa echt kunnen beschermen. Zoals bij alle zaken blockchain, is geduld vereist.

Een gerelateerd probleem is de nieuwheid van nulkenniscryptografie zelf. Het is waar dat reguliere blockchains afhankelijk zijn van geavanceerde cryptografie, namelijk asymmetrische codering (openbare / privésleutels) en cryptografische hashfuncties (digitale vingerafdrukken). En het is ook waar dat de overgrote meerderheid van blockchain-programmeurs en applicatie-ontwikkelaars de wiskundige principes die aan deze technieken ten grondslag liggen, niet begrijpen. Maar het bredere punt is dit: als ze worden behandeld als zwarte dozen, worden deze methoden al decennia lang op grote schaal gebruikt door een groot aantal ontwikkelaars en gebruikers (gehoord van https?) En iedereen gelooft dat ze werken. Daarentegen waren tot voor kort nul-kennisbewijzen alleen bekend bij een kleine gemeenschap van academici en hadden ze geen brede toepassingen op internet of elders. We kunnen verwachten dat deze onduidelijkheid de bereidheid van de CIO of risk officer van een bank zal verminderen om hun kernprocessen te verschuiven naar nul kennisblokketens, in ieder geval voor de komende vijf jaar. En laten we ons niet eens beginnen voor te stellen hoe lang het zal duren voordat toezichthouders zich op hun gemak voelen met activa die op deze manier worden verplaatst.

Praten over regulering brengt een ander praktisch probleem naar voren met nul-kennisblokketens. Anonieme transacties in een blockchain bevatten uitspraken over vermogensoverdrachten en eigendom, maar die uitspraken zijn alleen zichtbaar voor geselecteerde partijen (namelijk de direct betrokkenen). Zelfs als we een toezichthouder volledig inzicht geven in een zero-knowledge blockchain en de identiteit van zijn deelnemers, kan hij niet weten wat er werkelijk binnen gebeurt. Natuurlijk kan de toezichthouder alle deelnemers vragen om hun transacties te identificeren en te onthullen, en ze kunnen dit efficiënt doen door gebruik te maken van Zcash-stijl "kijksleutels". Als de partijen bij een bepaalde transactie deze echter geheim willen houden, zit de toezichthouder vast en weet hij niet wie hij moet beboeten. Er is geen bewaarbank van wie zij een volledig beeld kan krijgen, en de enige mogelijkheid voor handhaving is om de hele keten stil te leggen.

Dus waar komt het op neer? Voorlopig stel ik voor om gewoon de voortgang van de openbare Zcash-blockchain te volgen, om te zien hoe deze zich ontwikkelt en groeit. Als het geschiedenis van Ethereum herhaalt zich, zullen er onder de oppervlakte verrassingen en kwetsbaarheden op de loer liggen, die erop wachten om door hebzuchtige opportunisten te worden uitgebuit. Maar vergis je op de langere termijn niet: nul-kennistransacties zijn een baanbrekende doorbraak voor blockchains. Als de onderliggende cryptografische principes kloppen, verwacht dan dat ze het bereik van use-cases waarop blockchains kunnen worden toegepast aanzienlijk zullen verbreden.

Plaats eventuele opmerkingen op LinkedIn.

Tijdstempel:

Meer van Multichain