Open en minder open blockchain netwerken

Posted on: 07/06/2017 by: Kristof Verslype

Inleiding

Blockchain zag in 2009 het licht met de lancering van Bitcoin. Het Bitcoin netwerk is extreem open en transparant; iedereen kan minen1, iedereen kan transacties publiceren en iedereen kan de volledige inhoud van de blockchain zien. Daarenboven kan iedereen wereldwijd applicaties bouwen bovenop de Bitcoin blockchain. Het Bitcoin netwerk is daarmee het typische voorbeeld van wat we een unpermissioned of ook wel permissionless blockchain netwerk noemen. Een ander voorbeeld is Ethereum, dat bovendien smart contracts ondersteunt; iedereen kan dus smart contracts publiceren op het publieke Ethereum netwerk en iedereen kan er smart contract functies aanroepen. Het vertrouwen in dergelijke netwerken is gedistribueerd over duizenden nodes over de hele wereld.

Hoewel dit in bepaalde gevallen zeer nuttig kan zijn, is dit toch niet steeds wat we willen in een enterprise context, waarbij verschillende bedrijven en/of overheden samenwerken. Vandaar dat er ook blockchain technologieën ontwikkeld worden die meer controle toelaten. We spreken in dit geval van permissioned blockchain netwerken. Deze blogpost gaat in op de verschillen tussen beide categorieën.

Toegangscontrole

Het eerste en belangrijkste aspect is dat een permissioned netwerk, i.t.t. een unpermissioned netwerk, een laag voor toegangscontrole heeft. Dit laat toe om te specifiëren:

  • wie er betrokken is in het consensusmechanisme (in bitcoin zijn dit de miners en iedereen kan er in principe miner worden).
  • wie er smart contracts kan publiceren en
  • wie er transacties kan publiceren en bepaalde functies in smart contracts kan aanroepen.

Hyperledger Fabric is zo’n permissioned blockchain technologie. Het is een open source project dat gestart werd binnen IBM en dat tegenwoordig een erg actieve community heeft. Het laat, m.b.v. een endorsement policy, toe om aan te geven wie een transactie moet goedkeuren alvorens het in de blockchain terecht kan komen. Zo kan geëist worden dat een transactie goedgekeurd moet worden door minstens één entiteit van type A en minstens twee van type B. We kunnen ook verschillende entiteiten verschillende gewichten geven, waarbij er een drempelwaarde bereikt moet worden vooraleer een transactie in de blockchain aanvaard kan worden. Er kan gespecifieerd worden welke entiteiten of welke types entiteiten smart contracts2 kunnen publiceren. Bij Hyperledger Fabric kan de entiteit die het smart contract publiceert specifiëren dat de oproeper van een bepaalde functie in het contract bepaalde attributen of credentials moet bezitten.

Andere verschillen

Transparantie

Unpermissioned blockchains zijn volledig transparant; iedereen die toegang heeft tot de blockchain kan alle data in de transacties lezen en kan voor elk smart contract de contractvariabelen te weten komen. Doordat er gebruikt gemaakt wordt van pseudoniemen i.p.v. identifiers op dergelijke blockchains kan deze data weliswaar niet onmiddellijk gelinkt worden aan identificeerbare personen en/of organisaties, maar toch is dit vaak onvoldoende voor sterke confidentialiteits- en privacy garanties. Technologieën voor permissioned blockchain netwerken kunnen op dat vlak sterkere ondersteuning bieden. Daarbij kunnen (optioneel) transacties en smart contracts geëncrypteerd worden zodat enkel die entiteiten die er toegang tot moeten hebben er toegang tot krijgen. Hyperledger Fabric biedt dit aan, maar bij Hyperledger Burrow, wat eveneens een permissioned blockchain technologie is, blijft alles voorlopig transparant.

Decentralisatie

Het vertrouwen in een volwassen unpermissioned netwerk is gedistribueerd over vele duizenden nodes die participeren in het consensus mechanisme. Bij unpermisioned netwerken zullen er typisch een pak minder nodes zijn. Dit kan bijvoorbeeld beperkt zijn tot leden van een consortium. Hier is er dus sprake van decentralisatie i.p.v. distributie van vertrouwen.

graphic 1

Toch moet er ook bij het gedistribueerde karakter van unpermisisoned blockchain netwerken een kanttekening gemaakt worden. Het deelnemen aan het consensusmechanisme, het ‘minen’ in Bitcoin vereist een aanzienlijke investering in specifieke hardware (ASICs) en toegang tot goedkope elektriciteit en koeling wil je winstgevend zijn. Daardoor blijft de graad van distributie van vertrouwen suboptimaal. Andere unpermissioned netwerken proberen daarom ASIC-resistant te zijn, wat wil zeggen dat het gebruik van specifieke hardware i.p.v. een gewone computer niet veel efficiëntiewinst mag opleveren. Toch blijkt dat in de praktijk niet eenvoudig te zijn.

Gedeeld

Iedereen die wil, kan voor zijn applicatie gebruik maken van unpermissioned netwerken zoals Bitcoin en Ethereum; data kan op de blockchain opgeslagen worden en logica kan in smart contracts gestoken worden. Op het publieke Ethereum netwerk zijn er ondertussen bijvoorbeeld meer dan 450 actieve smart contracts.
De full nodes doen daarbij heel wat werk.

  • Ze houden de volledige blockchain lokaal bij, alsook de toestand van alle contracten. Samen wordt dit vaak de ledger genoemd.
  • Wanneer ze een nieuw blok ontvangen doen ze heel wat checks om de geldigheid ervan na te gaan en sturen het blok vervolgens door naar peers.
  • Wanneer ze een nieuw blok ontvangen zullen ze telkens lokaal alle functieoproepen uitvoeren die in de transacties van het blok vervat zitten.

De full node is zeker en vast niet geïnteresseerd in alle data op de blockchain en alle smart contracts. In die zin is een groot deel van het werk dat de full node doet overhead.

Een permissioned netwerk zal typisch maar door één of een beperkt aantal applicaties gebruikt worden, waardoor deze overhead een pak minder is. Bovendien kan het geoptimaliseerd worden naargelang de applicatie of het applicatiedomain, terwijl unpermissioned netwerken de grootste gemene deler moet ondersteunen.

Efficiëntie

Het meest gebruikte consensusmechanisme voor unpermissioned blockchain netwerken is Proof-of-Work (POW). Daarbij is er brute rekenkracht vereist om het blockchain netwerk veilig te houden. Dit netwerk blijft dan veilig zolang er geen aanvaller over meer dan 50% van de rekenkracht beschikt. Die brute rekenkracht neemt in het Bitcoin netwerk extreme proporties aan. Er zijn maar 80 van de 196 landen in de wereld die meer elektriciteit verbruiken dan het Bitcoin netwerk. Ondanks dit enorm elektriciteitsverbruik, zijn er wereldwijd momenteel toch maar slechts drie bitcoin transacties per seconde mogelijk, terwijl VISA er 10 000 per seconde kan verwerken. Permissioned netwerken, daarentegen, zijn een aantal grootteordes efficiënter en gebruiken daarbij public key cryptografie i.p.v. brute rekenkracht. Dat er typisch minder entiteiten betrokken zijn in een permissioned netwerk draagt ook bij aan de efficiëntie, net zoals het feit dat het door minder applicaties gebruikt wordt. We vermelden nog dat er wel alternatieven zijn voor POW, waarbij het meest gekende Proof-of-Stake (POS) is. POS is echter niet helemaal onomstreden en wordt in de praktijk maar zelden gebruikt.

Cryptogeld

Unpermissioned blockchain netwerken hebben steeds nood aan een cryptomunt om de juiste incentives te geven. Iemand die deelneemt aan het consensusmechanisme, en daarmee mee instaat voor de veiligheid, heeft een kans om geld te winnen. Iemand die een functie in een smart contract wil aanroepen of een transactie wil uitvoeren, zal daarvoor iets moeten betalen. Zo wordt spam vermeden. In permissioned blockchains is dit meestal niet nodig. Het is in het belang van de verschillende partners in het netwerk dat alles correct functioneert en iemand die zich slecht gedraagt op het netwerk kan zijn toegangsrechten verliezen of kan eventueel zelfs geïdentificeerd worden door een vertrouwde entiteit.

Gedistribueerde databases

Een gedistribueerde database is een database waarbij de gegevens verspreid en gerepliceerd/gedupliceerd zijn over verschillende nodes op een netwerk en waarbij gebruik gemaakt wordt van een synchronisatieproces tussen de nodes om de data consistent te houden over de nodes heen. Voor de gebruiker lijkt het echter alsof hij gebruik maakt van een gewone, gecentraliseerde database. Er zijn heel wat soorten gedistribueerde databases (Hadoop, NoSQL, NewSQL, …) en blockchain technologie kan gezien worden als één ervan. In welke zin verschilt blockchain technologie nu van de andere?

  • Het is het enige systeem waarbij er geen (logisch) gecentraliseerd database management systeem is dat vertrouwd moet worden door alle betrokkenen.
  • Het is het enige systeem dat het mogelijk maakt dat partijen die elkaar niet vertrouwen toch kunnen samenwerken zonder trusted third party.
  • Eens data toegevoegd is aan de blockchain kan het niet meer gewijzigd of verwijderd worden. Contractvariabelen kunnen uiteraard wel wijzigen. De blockchain bevat dan de volledige historiek van de smart contracts.

Als de betrokken partijen elkaar volledig vertrouwen, een gecentraliseerd database management geen probleem vormt, en een onwijzigbare historiek overbodig is, is er eigenlijk geen reden om te kiezen voor een permissioned blockchain (behalve dan dat je kan zeggen dat je bedrijf werkt met blockchain technologie). Een traditionele (gedistribueerde of gecentraliseerde) database is dan hoogstwaarschijnlijk eenvoudiger, sneller en efficiënter.

Conclusie

Bij het ontwerp van een applicatie zullen een aantal technische keuzes gemaakt moeten worden. Eén ervan is of er gebruik gemaakt zal worden van blockchain technologie. Misschien volstaat een andere gedistribueerde database technologie. En als er dan toch gekozen wordt voor blockchain technologie, zal er een keuze gemaakt moeten worden tussen een unpermissioned en een permissioned technologie. Deze blogpost heeft u hopelijk al wat op weg gezet.

Komt u tot de conclusie dat het gebruik van een permissioned blockchain mogelijks een goede piste is, dan raden we u aan te kijken naar Hyperledger. Dit is een samenwerking waarbinnen zich momenteel vier blokchain technologieën bevinden, zoals aangegeven in onderstaande figuur. Daarnaast zijn er nog een aantal ondersteunende projecten. Hou er wel rekening mee dat de technologieën nog in volle ontwikkeling zijn.

business blockchain

Voetnoten

1. Minen is het zoeken van een cryptografische puzzel die nodig is om een nieuw geldig block in de blockchain te creëren. Verschillende miners gaan daarbij met elkaar in competitie. De winnaar krijgt een beloning.

2. Hyperledger spreekt liever over chaincode om smart contracts aan te duiden.