Categorieën Aanbevolen, Nieuws algemeenDoor Roland 26 september 2018 Laat een reactie achter
Naast een publieke blockchain, zoals die van Bitcoin, wordt ons vaak verteld dat er zoiets is als een 'private blockchain'. Als je echter verder gaat kijken kom je erachter dat het hele idee van een private blockchain ten eerste niet aan de definities van een blockchain voldoet en ten tweede vrij zinloos is. Een blockchain is namelijk alleen nuttig als meerdere partijen, die elkaar niet (willen) vertrouwen, data met elkaar willen delen op een permanente en te controleren manier. Webdeveloper Bèr Kessels heeft recent een prima artikel geschreven over deze zogenaamde 'private blockchains' en de zin/onzin ervan. Ik heb het artikel hieronder vertaald. Het originele Engelstalige artikel van Bér kan je vinden op zijn website.
'The blockchain fallacy'
In alle blockchain hype blijft er elke keer een idee naar voren komen wat het doel voorbij lijkt te streven, namelijk een zogenaamde 'private blockchain'.
Om goed te kunnen begrijpen waarom een private blockchain onzin is moeten we eerst definiëren wat een blockchain is en wat het niet is. Laten we eens kijken of de definitie van Bitcoin uitvinder Satoshi Nakamoto ons hierbij kan helpen, aangezien hij de term als eerste heeft gebruikt.
"Een peer to peer gedistribueerde tijdsstempel-server welke wiskundig bewijs levert van de chronologische volgorde van transacties."
Deze omschrijving voorziet ons van een aantal belangrijke kenmerken van een "block chain" (Satoshi schreef block en chain los van elkaar, ik gebruik voor het gemak de populaire term "blockchain")
Peer-to-peer: Impliceert distributie of tenminste het ontbreken van een centrale autoriteit.
Wiskundig bewijs: Impliceert dat het te verifiëren is.
Tijdsstempel-server / chronologische volgorde: Het uiteindelijke doel, maar dit impliceert ook dat de gegevens niet meer te wijzigen zijn.
De definitie van Marco Iansiti and Karim R Lakhani is iets toegankelijker.
"Een open en gedistribueerd kasboek welke transacties tussen twee partijen kan vastleggen op een efficiënte, te controleren en permanente wijze"
Open (vaak permissie loos genoemd)
Met andere woorden: alles wat niet voldoet aan bovenstaande criteria is per definitie geen blockchain. Het kan er misschien op lijken, of misschien dezelfde technieken gebruiken, maar het is geen blockchain. Dit is zeer belangrijk om te onthouden.
Je kan het ook zo bekijken: als je kijkt wat een blockchain te bieden heeft, wanneer heb je dan een blockchain nodig?
- Do you need a blockchain?
(Ik heb deze afbeelding enige jaren geleden gedownload maar ik weet helaas niet meer wie de auteur is)
Bovenstaande afbeelding draait het argument om: als jouw eisen niet op één lijn liggen met wat een blockchain te bieden heeft dan heb je geen blockchain nodig. En wat een 'private blockchain' betreft: als de blockchain niet publiek hoeft te zijn, heb je geen blockchain nodig. Meer zou je eigenlijk niet uit hoeven leggen.
Waarom wil je een private blockchain gebruiken?
Er zijn drie argumenten bekend voor het gebruiken van een private blockchain. Ik heb er zelf nog een vierde aan toegevoegd.
1. We willen data opslaan die privé is of op de een of andere manier niet publiek mag zijn. (We schrappen dus het openbare en verifieerbare aspect voor privacy)
2. We willen kunnen controleren wie lees en schrijfrechten heeft. (We schrappen het openbare aspect voor controle)
3. We willen makkelijker kunnen schalen. (We schrappen het gedistribueerde aspect voor snelheid)
4. We willen eerst onze blockchain kunnen testen op een besloten platform. (We schrappen het permanente aspect voor flexibiliteit)
Het vierde argument is het enige geldige argument om gebruik te maken van een private blockchain. Als een tijdelijke oplossing, omdat je nog aan het testen bent met je blockchain-applicatie. Ongeveer het zelfde als wanneer je eerst je nieuwe app laat testen door een vijftal vrienden in plaats van deze meteen te uploaden naar de App Store.
Alle andere redenen zijn onzin, omdat je in dat geval geen blockchain nodig hebt om je doel te bereiken. Of beter gezegd: als je een blockchain maakt met die drie, eerder genoemde, eigenschappen dan is het geen blockchain meer. Je zou kunnen zeggen dat een blockchain, die zich in een niet openbare omgeving bevindt, geen blockchain meer is.
Een blockchain moet publiek zijn om er zeker van te zijn dat deze permanent/niet te wijzigen is.
Laten we een Blockchain eens vergelijken met een notitieboekje. Als ik zo'n boekje in mijn kantoor in een la heb liggen ben ik de enige die dit boekje kan lezen en wijzigen.
Dus als ik een paar nieuwe schoenen koop, en dit een week later wil verbergen, dan kan ik simpelweg de regel schrappen uit het notitieboekje of overschrijven met iets anders. En voilà: het is alsof ik de schoenen nooit gekocht heb (volgens het boekje dan).
Maar als dat boekje door iedereen gelezen kan worden, of gekopieerd, dan wordt het al iets meer permanent. Ik kan nog steeds de regel 'schoenen' verwijderen maar mensen zouden er achter kunnen komen en me er op aan kunnen spreken. Des te meer mensen het boekje kunnen inzien (misschien stuur ik iedereen elke week een kopietje) des te lastiger het wordt om regels achteraf te wijzigen.
Een blockchain echter heeft een extra eigenschap: door de toepassing van cryptografie is het makkelijk te detecteren of ergens in het boekje een regel is gewijzigd. Alle mensen die het boekje kunnen inzien kunnen op die manier snel en met zekerheid vaststellen of er iets gewijzigd is wat niet gewijzigd had mogen worden.
Maar dit werkt alleen als andere geïnteresseerden ook een kopie hebben. Bij een private blockchain is het heel makkelijk om iets te wijzigen, ook als deze wijziging een groot effect heeft. Immers: Er is niemand die de wijziging kan opmerken aangezien de blockchain niet openbaar inzichtelijk is.
Het publieke aspect is wat ervoor zorgt dat gegevens permanent zijn. Niet omdat deze niet gewijzigd *kunnen* worden maar omdat deze wijziging eenvoudig te detecteren is door de eerder genoemde cryptografie.
Bitcoin bijvoorbeeld is ook niet permanent. Theoretisch gezien dan. Als genoeg deelnemers aan het bitcoin-netwerk samen beslissen dat een betaling teruggedraaid moet worden dan is dat ook wat er gebeurt. Wat Bitcoin permanent maakt is het feit dat iedereen een wijziging kan detecteren en dat een meerderheid van het netwerk deze wijziging moet goedkeuren.
Het publieke aspect zorgt er ook voor dat het in het nadeel is van de deelnemers aan het bitcoin-netwerk om historische data te wijzigen. Immers: als historische gegevens gewijzigd worden is bewezen dat de blockchain niet permanent is, waarmee de toegevoegde waarde van de blockchain vervalt.
Een blockchain, publiek of privaat, is permanent doordat alle deelnemers met elkaar afspreken dat ze geen gegevens zullen wijzigen. De permanente aard is geen magisch bijeffect van het gebruiken van cryptografie.
Dat gezegd hebbende: de onderliggende afspraken zorgen ervoor dat de data permanent wordt. Je zou dus elk soort database kunnen kiezen en dan elkaar beloven dat je nooit iets wijzigt. Alles wat je nodig hebt is een manier om wijzigingen te detecteren, welke de meeste databases je kunnen bieden. Je kan zelfs nog wat cryptografie toevoegen om valsspelers sneller op te sporen en aan te pakken.
Permissie loos:
Om ervoor te zorgen dat de data in een blockchain niet gewijzigd kan worden, dus permanent is, moet deze ook permissie loos zijn.
Dit is eigenlijk heel simpel: als je iemand controle geeft dan kan deze ook bepalen wat de 'waarheid' is. Diegene kan de historische data dus wijzigen op de manier hoe hij/zij wil.
Om even terug te komen op het voorbeeld van het notitieboekje: de persoon die bepaalt wie er mag lezen en/of schrijven bepaalt wat er in het boekje komt en wat niet. Die persoon heeft dus de volledige controle want hij kan ook leesrechten weghalen van degenen die het niet met hem eens zijn of schrijfrechten geven aan gelijk denkenden en het op die manier alsnog wijzigen.
Als anderen nog steeds leesrechten hebben kunnen ze wel zien dat er historische data gewijzigd is maar ze kunnen er niks aan doen. De waarheid op een blockchain is wat er in de blockchain staat en zelfs al wordt de wijziging opgemerkt dan kunnen ze er niks aan doen omdat ze daar de rechten niet voor hebben.
Een blockchain is niet zomaar permanent omdat er 'magische' technologie gebruikt wordt. De vereisten van een blockchain en de omgeving waar het in draait maken een blockchain permanent.
Het ironische hieraan is dat er magische technologie beschikbaar is die ervoor kan zorgen dat gegevens permanent zijn. Deze technologie noemen wij blockchain. En om dat goed te kunnen laten functioneren moet het een publieke blockchain zijn. De cirkel is rond.
Een blockchain moet gedistribueerd zijn om tot een universele bron van waarheid te komen.
De tegenhanger van distributie is centralisatie. Om het voorbeeld van het notitieblokje weer even aan te halen: distributie zou in dat geval betekenen dat het boekje regelmatig uitgewisseld wordt met alle belanghebbenden. Belangrijker nog: geen enkele van deze kopieën zou beschouwd moeten worden als het enige echte juiste boekje.
Als er maar één kopie bestaat van het notitieboekje dan is het simpel om data te wijzigen en het is vrijwel niet te detecteren.
Een voor de hand liggende oplossing zou zijn om elke nieuwe pagina te kopiëren en op meerdere plaatsen te bewaren. Dit is distributie in de praktijk. Dit is ook inefficiënt, traag en duur in tegenstelling tot het bewaren van één kopie en daarop vertrouwen. Maar dit is in essentie wat een blockchain doet. De gegevens worden gedistribueerd opgeslagen zodat we niet op één data-bron ,of notitieboekje, hoeven te vertrouwen. Je hoeft een blockchain dus niet te vertrouwen om er zeker van te zijn dat de data juist is.
Als alle kopieën van het boekje beschouwd kunnen worden als de waarheid dan zal het gedetecteerd worden als een van de kopieën afwijkt. We moeten op dat moment het conflict zien op te lossen, met andere woorden: welk boekje bevat de juiste data.
Bij Bitcoin wordt er simpel gezegd: de versie van het boekje die het meest in omloop is wordt gezien als de juiste versie van het boekje. Dus als het boekje verspreid is over vijf deelnemers, en in drie van de vijf boekjes niet staat dat er een paar schoenen is gekocht, dan zijn die schoenen niet gekocht.
Distributie van de gegevens onder al de deelnemers is cruciaal. Zonder deze distributie kan een centrale autoriteit gegevens veranderen zonder dat dat gedetecteerd wordt. Als je moet vertrouwen op een centrale autoriteit, of zelfs een kleine groep autoriteiten, dan is onafhankelijke verificatie niet mogelijk.
Als je voorgaande redenering omdraait kun je zeggen: Als het geen probleem is dat er vertrouwd moet worden op een centrale autoriteit dan heb je geen bitcoin nodig. Als je dat nog keer omdraait: als iets vertrouwen nodig is en een autoriteit nodig heeft is het per definitie geen blockchain.
Maar mijn favoriete altcoin dan?
Als een project of cryptocurrency gebruik maakt van een 'private' of 'permissioned' blockchain dan gebruiken ze geen blockchain. Het kan misschien best een database zijn met toegepaste cryptografie, een digitale munt of een zeer moderne database, maar het is geen blockchain. En als er geen blockchain gebruikt wordt dan ontbreken ook de cruciale eigenschappen.
Dat kan dus betekenen dat een bedrijf er elk moment met al je muntjes vandoor zou kunnen gaan (Ja Ripple, ik bedoel jou). Of het kan betekenen dat het project simpelweg niet veilig is. Hoewel het misschien best een aantal interessante eigenschappen zou kunnen hebben.
Ik kan waarschijnlijk best een interessant financieel systeem bouwen gebaseerd op vertrouwen en een Google spreadsheet. Maar het is geen blockchain. Het is een spreadsheet op een Google server wat slim uitgedacht is en mooi gebracht wordt.
Tomayto, Tomatho.
Ok. Als jij een database een blockchain wil noemen, prima ga je gang. Als je een Google spreadsheet een blockchain wil noemen: veel plezier ermee. Het is geen beschermde merknaam en je zou zelfs mijn fiets een blockchain kunnen noemen. Het heeft tenslotte een chain.
Maar hier schiet niemand iets mee op. Wat bent: of het wiel opnieuw aan het uitvinden, of je gebruikt een extreem inefficiënte technologie waar andere, meer efficiënte technologieën, veel beter op hun plaats zouden zijn.
De meeste 'private blockchains' zijn geen blockchain omdat het simpelweg andere technologie is.
Helaas zijn de meeste private blockchains gewoon inefficiënte, onveilige, onnodige implementaties waar een publieke blockchain gebruikt wordt in een afgeschermde omgeving. Dit levert niets van de voordelen op van de publieke versie maar wel alle nadelen.
Kijk eens naar GIT bijvoorbeeld. GIT is geen blockchain, dus noem het geen blockchain. Het is een DAG. Een DAG is een zeer elegante efficiënte datastructuur. Deze zou zelfs gebruikt kunnen worden om data gedistribueerd te delen met een kleine groep mensen die cryptografisch moeten kunnen bewijzen dat er niet mee geknoeid is. Ik noem GIT omdat er sommige cryptocurrencies zijn die precies dit doen: het gebruiken van een DAG om een gedeelde bron van waarheid te bieden aan een besloten club van deelnemers.
Of kijk bijvoorbeeld naar Bittorrent. Bittorrent is ook geen blockchain dus noem het geen blockchain. Bittorrent is een implementatie van Merkle trees, en een briljante manier om grote hoeveelheden data gedistribueerd te verspreiden over een grote hoeveelheid deelnemers. Geen blockchain dus. Ik noem dit omdat deze technologie vaak al genoeg is als je er zeker van wilt zijn dat alle deelnemers een kopie hebben van de data.
Er zijn letterlijk duizenden soorten databases. Sommigen zijn goed in synchroniseren, anderen hebben hoge doorvoersnelheden, anderen hebben zeer efficiënte manieren om de juistheid van de data te controleren, anderen hebben weer bestanden die cryptografisch beveiligd zijn , enz, enz…. Ik kan nog wel even doorgaan. We moeten al deze databases geen blockchain noemen. Het zijn geen blockchains. Het zijn goede oplossingen voor een specifiek probleem. Een blockchain is zo'n oplossing, en zoals met de meeste technologie, kan het alleen ingezet worden voor een aantal specifieke toepassingen.
Een private versie van een blockchain zal echter vrijwel nooit een zinvolle toepassing zijn.
– Voor positieve feedback, kattenplaatjes, of kritiek omdat ik je favoriete altcoin afkraak, kan je terecht op mijn twitter of reddit. –