Wat is het verschil tussen Hyperledger Fabric, Ethereum en Corda?

met Geen reacties

Er worden op dit moment overal ter wereld verschillende blockchain-infrastructuren ontwikkeld. Toch werken ze niet allemaal precies op dezelfde manier. Soms zijn het private blockchains en soms zijn ze openbaar. Ook de manieren waarop binnen het netwerk consensus wordt bereikt kan anders zijn. Blockchaintechnologie is op zichzelf al een ingewikkelde techniek en de verschillen tussen de platformen maken het alleen nog maar complexer. Daarom zal ik proberen om de verschillen tussen de drie populaire blockchains Ethereum, Corda en Hyperledger “Fabric” uiteen te zetten.

Ketting, blockchain, Hyperledger Fabric

Corda blockchain en R3cev

Nog afgezien van de technische aspecten van deze blockchains houden zij er een andere filosofie op na. De Corda blockchain is speciaal ontwikkeld voor de financiële sector en is tot stand gekomen door een intensieve samenwerking tussen een heleboel grote banken. Dit consortium staat bekend als R3cev. Uiteraard heeft R3cev als voornaamste doel: het managen, synchroniseren en distribueren van financiële applicaties. Het consortium is van mening dat niet iedere blockchain-infrastructuur zich leent voor financiële transacties en ook vinden ze dat niet alle data, per definitie wereldwijd moet worden gedeeld. Er was dus behoefte aan een blockchain waarbij privacy en schaalbaarheid de belangrijkste uitgangspunten zouden zijn. Dat zou dan wellicht automatisch ook minder transparantie inhouden.

 

 

Ethereum en Hyperledger Fabric

Ethereum wil eigenlijk de hele wereld innoveren door decentrale gedistribueerde systemen: de manier waarop overheden functioneren, de gezondheidszorg, bevoorradingsketens, de financiële sector, de farmaceutische industrie, online identiteitsbeheer, de muziek business, voorspellingsmarkten, de energiemarkt en ga zo nog maar even door. Ze bieden een platform voor het ontwikkelen van decentrale toepassingen voor al deze industrieën. Hyperledger Fabric is meer gefocust op de supply chain van verschillende sectoren. Het voornaamste doel van Fabric is de hele bevoorradingsketen stroomlijnen, waarbij specifieke informatie alleen wordt gedeeld met belanghebbenden en niet zomaar met alle partijen binnen het ketenbeheer.

Ethereum logo

Bereiken van consensus

Bij traditionele data-opslag op reguliere servers houdt de beheerder een kopie van de database bij. Deze centrale partij bepaalt in principe hoe die data wordt gebruikt. Met de komst van blockchaintechnologie kunnen kopieën van de database worden gedistribueerd en hangt het gebruik van die data niet meer af van één centrale partij. De nodes binnen het netwerk zorgen voor de juiste verspreiding van data en houden het netwerk in stand, door het continu bereiken van overeenstemming over alles wat er binnen de blockchain gebeurt. Die overeenstemming (de consensus) is dus één van de belangrijkste factoren om een gedistribueerd netwerk goed te laten functioneren.

 

 

Permissioned en permissionless

Het bereiken van consensus kan op twee manieren: “permissionless” en “permissioned”. Permissionless betekent dat iedereen gebruik mag maken van de blockchain. Bij Ethereum is dat het geval. Het is een openbaar platform en iedereen wordt uitgedaagd om deel te nemen aan de ontwikkeling van innovatieve applicaties. Als er sprake is van permissioned deelname, dan worden de gebruikers vooraf geselecteerd en is de toegang ook enkel en alleen tot hen beperkt. Hyperledger Fabric en Corda maken gebruik van een permissioned blockchain.

Private sleutel en publieke sleutel.

 

Dubbel spenderen

Binnen Ethereum moeten alle gebruikers consensus bereiken over alle transacties die binnen het netwerk hebben plaatsgevonden. Het is daarbij niet van belang of een gebruiker ook zelf heeft deelgenomen aan de transacties. De volgorde van de transacties binnen het netwerk is essentieel voor de consistentie binnen het netwerk. Als een transactie niet binnen het netwerk kan worden vastgelegd, om welke reden dan ook, dan bestaat er een kans dat dezelfde transactie dubbel gespendeerd wordt. Er worden dan namelijk twee transacties uitgevoerd, voor dezelfde digitale betalingseenheid, naar verschillende ontvangers. Door het bereiken van consensus over de aard van de transactie, kan voorkomen worden dat een dergelijke situatie plaatsvindt. Het voorkomt het dubbel spenderen van geld en voorkomt fraude.

 

Proof of work

De manier waarop Ethereum op dit moment (2017) consensus bereikt, gebeurt op basis van het “proof of work” mechanisme door “mining”. Alle gebruikers moeten overeenstemming bereiken over het gemeenschappelijke grootboek en alle gebruikers moeten toegang hebben tot alle transactiedata die in de blockchain is vastgelegd. Het gevolg daarvan is dat proof of work de prestaties van het transactieproces nadelig beïnvloed. De data die binnen het netwerk is opgeslagen is weliswaar geanonimiseerd, maar wel toegankelijk voor alle gebruikers. Dat kan natuurlijk een privacyprobleem opleveren bij transacties van gevoelige data.

 

 

Andere invulling van consensus

Hyperledger Fabric en Corda hebben een andere aanpak dan Ethereum. De ontwikkelaars kijken anders aan tegen het consensus-proces. Hun invulling van consensus is verfijnder en ze vinden dat consensus niet alleen zou moeten afhangen, van op proof of work gebaseerde ‘mining”. Juist omdat Corda en Hyperledger Fabric “permissioned” zijn, is er al controle over wie bij de opgeslagen transactiedata kan en wie niet. Hierdoor wordt de privacy ook al gedeeltelijk beschermd. Daarnaast verbetert de prestatie van het netwerk, als alleen gebruikers die deelnemen aan een transactie, consensus bereiken. Hyperledger Fabric omvat de hele transactie-stroom binnen het netwerk, vanaf het aanbieden van een transactie aan de blockchain, tot aan het vastleggen ervan. Nodes binnen Fabric nemen een andere rol op zich en voeren ook andere taken uit om consensus te bereiken, dan de nodes van Ethereum.

Verbonden in een netwerk

Clients, peers en orderers

Bij Ethereum nodes zijn alle functies en taken om consensus te bereiken identiek. Ze doen dus allemaal exact hetzelfde. De computernodes van Hyperledger Fabric zijn opgesplitst aan de hand van de specifieke taak, die zij binnen het netwerk moeten vervullen. De nodes kunnen daarbij in principe drie rollen vervullen: “client”, “peer” of “orderer”. Een client handelt in naam van een eindgebruiker, creëert transacties en activeert deze. Clients communiceren met zowel de peers als de orderers. Peers onderhouden het grootboek en ontvangen update-berichten van orderers, om nieuwe transacties in het grootboek vast te leggen.

 

Endorsers

Dan heb je ook nog de “endorsers”. Dit zijn een bepaald soort peers die bepalen of transacties goedgekeurd kunnen worden. Dat doen zij door het controleren of aan alle noodzakelijke condities voor de uitvoering is voldaan. Er wordt dus gekeken of de transactie is voorzien van de juiste “handtekeningen”. Orderers zorgen voor een communicatiekanaal voor clients en peers om te communiceren welke transactieberichten kunnen worden gepubliceerd. Rekeninghoudend met de consensus in het bijzonder, garanderen de communicatiekanalen dat alle verbonden peers binnen het netwerk, exact dezelfde berichten krijgen in precies dezelfde logische volgorde.

 

Opgewassen tegen fouten

Het afleveren van de berichten kan fout gaan als veel gemeenschappelijke onbetrouwbare orderers worden ingezet. Om die reden moet er een consensus algoritme worden gebruikt om ook in geval van eventuele fouten of onsamenhangende volgorde van berichten, toch consensus te kunnen bereiken. Hierdoor is de replicatie van het grootboek opgewassen tegen fouten. Het consensus algoritme van Hyperledger Fabric is plugbaar, dat wil zeggen dat ongeacht de specifieke vereisten van bepaalde applicaties, er verschillende algoritmen kunnen worden toegepast.

 

 

Segmenteren van de berichtenstroom

De communicatiekanalen segmenteren de berichtenstroom. Dat wil zeggen dat clients alleen de berichten en geassocieerde transacties zien van de kanalen waarmee zij verbonden zijn en zijn zich dan ook niet bewust van de andere kanalen. Hierdoor is de toegang tot transacties beperkt tot de betrokken partijen, waardoor er alleen consensus bereikt hoeft te worden op transactieniveau en niet op netwerkniveau, zoals dat bij Ethereum wel het geval is.

 

Het transactieproces

Het transactieproces gaat dus als volgt in zijn werk. Een client verzendt een transactie naar verbonden endorsers om een update van het grootboek op gang te brengen. Alle endorsers moeten overeenstemming bereiken over de voorgestelde transactie. Er wordt dus wel een soort consensus bereikt, maar niet op dezelfde wijze als bij Ethereum. De client moet nu van alle endorsers toestemming krijgen. Als aan alle condities is voldaan, wordt de transactie goedgekeurd en verzonden naar de verbonden orderers, die op hun beurt ook weer samen overeenstemming moeten bereiken. Hierop volgend wordt de transactie doorgestuurd naar peers die de taak hebben om de transactie in het netwerk vast te leggen.

 

Validiteit en eigenheid

Bij Corda verloopt het bereiken van consensus min of meer hetzelfde als bij Hyperledger Fabric. Ook hier wordt overeenstemming bereikt op transactieniveau met alleen de betrokken partijen. Er zijn twee zaken aan de consensus onderworpen: “transactie-validiteit” en “transactie-eigenheid”. De geldigheid (validiteit) van een transactie wordt gewaarborgd door het uitvoeren van de smart contract code die is verbonden aan een transactie. Er wordt dus automatisch gecontroleerd of alle vereiste handtekeningen correct zijn en of de transacties geldig zijn. “Eenheid” slaat op de input van een transactie.

Sloten

Notaris nodes

Er moet vooral worden vastgesteld dat de desbetreffende transactie de unieke gebruiker is van al zijn eigen input. Dat wil zeggen dat er geen andere transacties kunnen bestaan, die gebruikmaken van diezelfde input. Dit is om het dubbel spenderen tegen te gaan. De consensus over de “eigenheid” wordt bereikt onder de deelnemers. Deze deelnemers worden aangeduid met de term “notaris-nodes”. Ook bij de Corda blockchain is het gehanteerde algoritme plugbaar, net als bij Hyperledger Fabric. Dit zijn de zogenaamde Byzantine fault tolerance (BFT) algoritmen.

 

Solidity, GO en Java

De gedistribueerde grootboeken maken gebruik van smart contracts die worden uitgevoerd door middel van smart contract-code. Deze code kan worden geschreven in verschillende programmeertalen. Hyperledger Fabric gebruikt de talen Java of GO, Ethereum de taal Solidity en de Corda blockchain hanteert Java. De smart contracts van Fabric worden aangeduid met de term “chaincode”. De smart contracts van Corda bestaan niet alleen uit code, maar ook uit juridische informatie. Deze juridische informatie is op een manier geformuleerd, dat die kan worden uitgedrukt en geïmplementeerd in smart contract-code. Hierdoor krijgt de code de legitimiteit die is ingeworteld in de contracten. Een smart contract waarbij code en wetgeving zo met elkaar verweven zijn wordt een Ricardian contract genoemd. De opzet van deze smart contracts laat duidelijk zien dat Corda expliciet is ontwikkeld voor een sterk gereguleerde omgeving, die de financiële sector nu eenmaal is.

 

Ricardian contracts

Zowel Ethereum als Hyperledger Fabric hanteren (nog) geen Ricardian contracts. Ook op het gebied van de digitale betalingseenheden zijn er verschillen tussen Ethereum, Fabric en Corda. Ethereum kent de ingebouwde cryptocurrency Ether, die wordt gebruikt als beloning aan de computernodes die helpen bij het bereiken van consensus, door middel van “mining”. Ook wordt Ether gebruikt als transactievergoeding. Daarom kunnen er dapps (decentrale applicaties) worden gebouwd voor Ethereum, die gefinancierd worden met geldtransacties. Ook kunnen er digitale tokens worden gecreëerd door het opstellen van een smart contract, dat correspondeert met een vooraf gedefinieerde standaard.

Groene lokken

Heeft Corda een eigen cryptocurrency?

Corda en Hyperledger Fabric kennen niet de noodzaak van een ingebouwde cryptocurrency. Er wordt immers geen consensus bereikt door middel van mining. Fabric biedt echter wel de mogelijkheid om een eigen digitale betalingseenheid of een token te creëren met chaincode. Het ontwerpen van cryptocurrency’s of tokens is bij Corda niet de bedoeling.

 

Flexibel op verschillende vlakken

Je zou dus kunnen zeggen dat Hyperledger Fabric en Ethereum beide flexibel zijn, zij het op verschillende vlakken. Ethereum leent zich prima voor decentrale applicaties, smart contracts en digitale betalingseenheden. Het transparante karakter van Ethereum daarentegen en het permissionless model, zouden ten koste kunnen gaan van de privacy en de schaalbaarheid. Hyperledger Fabric lost problemen ten aanzien van de schaalbaarheid en privacy voor een groot gedeelte op, door het permissioned model. Met name door het gebruik van het Byzantine fault tolerance algoritme en de beperkte toegankelijkheid. De modulaire infrastructuur maakt Fabric bijzonder geschikt voor allerlei soorten toepassingen.

Spaarvarken

De focus van Corda ligt op financiële transacties

Corda is dan toch echt een beetje een ander verhaal. De focus van Corda ligt in principe alleen op financiële transacties. Dat wil echter niet zeggen dat Corda beter of slechter is dan Ethereum of Hyperledger Fabric. Wel kun je je afvragen of Corda eigenlijk nog wel een blockchain is, zoals veel ontwikkelaars dat voor ogen hebben. Het zou best kunnen dat we in de toekomst alleen maar te maken krijgen met branchespecifieke gedistribueerde netwerken. Blockchains die volledig van elkaar zijn geïsoleerd. Ook het tegenovergestelde is mogelijk. Wellicht ontstaat er een wereldwijde blockchain die verenigbaar is met alle andere gedistribueerde netwerken en ontstaat er een samensmelting van allerlei soorten blockchains, applicaties en industrieën, die altijd en overal met elkaar een wisselwerking kunnen aangaan.

 

Op de hoogte blijven van de ontwikkelingen op het gebied van blockchaintechnologie? Meld je dan nu aan voor de blogpost!

 

Meld je aan voor de blogpost!
Ik ga ermee akkoord dat mijn naam en e-mailadres worden gedeeld met Mailchimp.
Met de blogpost van Uitleg Blockchain blijf je automatisch op de hoogte van de nieuwste ontwikkelingen omtrent de blockchain technologie.
We hebben een hekel aan spam. Uw e-mailadres zal niet worden verkocht of gedeeld met anderen (afgezien van het marketing automation platform dat wij gebruiken voor onze e-maillijst).

Laat een reactie achter