• No results found

2.4 Herkomstinformatie in een blockchain

2.4.3 Geschikte blockchain technologie¨ en

Voor de implementatie van de herkomstinformatie blockchain werden enkele interessante fra- meworks bekeken. In 3.2 werden dan een aantal van deze technologie¨en gekozen voor verder gebruik bij de implementaties. Er werd voornamelijk gezocht naar implementaties die al een deel van de blockchain code realiseerden of behulpzaam konden zijn bij het realiseren van een

herkomstinformatie blockchain. Zoals bijvoorbeeld software bibliotheken die het eenvoudiger maken om met herkomstinformatie te werken in een programmeertaal. Er werd niet ge- zocht naar Proof-of-Work implementaties. Hoewel deze uitgebreid besproken zijn, is dit type consensus algoritme minder interessant voor de opslag van data. Er is immers geen valuta met een financi¨ele waarde aanwezig waardoor er geen stimulans is om zomaar rekenkracht te gebruiken voor het berekenen van de hashes bij Proof-of-Work. De opgenoemde voor- en nadelen hebben enkel betrekking op dit onderzoek. Het kan zijn dat de opgenoemde voor- en nadelen van de technologie¨en bij andere toepassingen geen voordeel en/of nadeel vormt. 2.4.3.1 Tendermint

Tendermint [32] is een blockchain framework die dient om applicaties veilig en consistent te repliceren over meerdere machines. Tendermint is een consensus machine (engine), concreet Tendermint Core genoemd. Deze consensus machine zorgt ervoor dat alle knopen van het blockchain netwerk tot een consensus komen, in andere woorden, tot overeenstemming komen. Bij Tendermint gebeurt de consensus volgens een round-robin stijl waarover in 3.2.2 meer uit- leg volgt. Tendermint bevat een ABCI (Application Blockchain Interface) om eenvoudig met de consensus machine te kunnen communiceren. Die ABCI kan worden aangesproken met een programmeertaal naar keuze. Met behulp van deze communicatie kan een applicatie bovenop Tendermint worden gebouwd. Daardoor is het voor een ontwikkelaar mogelijk om, zonder zich iets van de consensus protocol aan te trekken, een blockchain applicatie te ontwikkelen in een taal naar keuze. Zou er bijvoorbeeld een cryptografische valuta gebouwd worden op basis van Tendermint, dan staat Tendermint in voor:

ˆ Het delen van blokken en transacties tussen de knopen.

ˆ Het onderhouden van een onveranderlijke volgorde van blockchain transacties. De applicatie zelf zou dan nog het volgende moeten implementeren:

ˆ Het onderhouden van een databank die het saldo bijhoudt van de gebruikers. ˆ Het valideren van cryptografische handtekeningen.

ˆ Het tegengaan van het dubbel spenderen probleem zodat een persoon niet meer uitgeeft dan hij heeft.

ˆ Een interface die toelaat dat gebruikers query’s op deze blockchain kunnen uitvoeren. Voordelen:

ˆ Ondersteuning voor alle programmeertalen.

ˆ Voldoende vrijheid voor eigen invulling van de processen. ˆ Zowel ondersteuning voor publieke als private blockchains. Nadelen:

ˆ Bevat enkel een consensus machine en een interface, de andere functionaliteiten moeten zelf ge¨ımplementeerd worden.

2.4.3.2 BigchainDB

BigchainDB [21] is software die zowel karakteristieken heeft van een blockchain als van een databank. Blockchain omdat alle data onveranderlijk en gedecentraliseerd is. Een databank omdat de transacties snel zijn en er een mogelijkheid is om query’s op de data uit te voeren. De consensus bij BigchainDB is een leider-gebaseerde consensus waarover in 3.2.1 meer infor- matie volgt. BigchainDB maakt gebruik van Tendermint en is een applicatie die er bovenop gebouwd werd. Zo bevat elke knoop zijn eigen lokale MongoDB database die een kopie van de blockchain data bevat. Hierdoor is het wel mogelijk dat een persoon met malafide bedoeling die toegang heeft tot die knoop, de data die erop resideert kan aanpassen of verwijderen. Echter hebben de andere knopen nog altijd een geldige kopie van de blockchain, waardoor dit niet noodzakelijk een groot probleem is. De slechte knoop kan dan verbannen worden uit het BigchainDB netwerk. BigchainDB werkt met digitale goederen (assets) dat in zijn essentie niet meer is dan een stukje data waar query’s op kunnen uitgevoerd worden. Deze goederen kunnen aangemaakt worden, maar ook overgedragen worden naar een andere eigenaar binnen het blockchain netwerk. Het aanmaken of overdragen van een goed is dan een transactie die toegevoegd wordt aan de blokken van het netwerk. De bedoeling van deze goederen is om objecten (zoals een fiets) voor te stellen, maar er kan ook perfect andere soort data in opgeslagen worden.

Voordelen: ˆ Open source.

ˆ Lage latentie en hoge transactie snelheid. ˆ Ondersteuning voor zowel Python als Node.JS.

ˆ Mogelijkheid om MongoDB query’s uit te voeren op de data. ˆ Zowel ondersteuning voor publieke als private blockchains. ˆ Al grotendeels ge¨ımplementeerde code.

Nadelen:

ˆ Gemaakt voor data die MongoDB query’s ondersteunen, niet voor bestandsopslag. ˆ Bezit de zogenaamde Sybil tolerantie die dient om 51% aanvallen tegen te gaan doordat

knopen enkel kunnen toegevoegd worden door de beherende organisatie. Dit spreekt de principes van een blockchain tegen die namelijk gedecentraliseerd zou moeten zijn. In dit geval is er wel een centrale eenheid aanwezig.

2.4.3.3 Hyperledger Fabric

Hyperledger Fabric is een open source enterprise-grade permissioned distributed ledger tech- nology platform [33]. Concreet wil dit zeggen dat het ten eerste, open source software is en iedereen hieraan kan bijdragen en de broncode bekijken. Het is immers gevestigd onder de Linux Foundation, een non-profit technologische associatie die toegewijd is aan het bouwen van open source ecosystemen [34]. Ten tweede dat het op niveau gemaakt is voor bedrijven en zij hier hun nut kunnen uithalen. Ten derde is het permissioned, gemachtigd, wat wil zeggen dat er niet langer in volledige anonimiteit wordt gewerkt op het netwerk, maar dat de andere participanten kunnen ge¨ıdentificeerd worden. Zo is Bitcoin een permissionless [20] block- chain netwerk, zonder machtigingen. Daar kunnen de knopen volledig anoniem blijven. Tot slot is het ook een distributed ledger technology platform, wat zich vertaald in een gedeelde grootboek technologie. In andere woorden, het is een blockchain.

Hyperledger Fabric is een framework bedoelt voor gedecentraliseerde applicaties te maken. Het grote voordeel voor bedrijven is de mogelijkheid om private transacties te maken. Hier- door heeft het industri¨ele toepassingen omdat gegevens daar regelmatig confidentieel moeten blijven. Daarnaast bied het ook ondersteuning aan voor smart contracts (slimme contracten). Een veel gebruikte technologie binnen de blockchain wereld om bepaalde logica van een con- tract over te brengen naar de digitale wereld zonder dat hierbij een derde partij nodig is die het contract onderhoud.

Voordelen:

ˆ Open source onder de Linux Foundation.

ˆ Het ondersteund meerdere programmeertalen waaronder: GO, Node.JS en Python. ˆ Bevat al veel functionaliteit.

ˆ Het ondersteund meerdere consensus algoritmen. Nadelen:

ˆ Enterprise-grade en permissioned. Hoewel dit niet noodzakelijk een nadeel is van de technologie zelf, zorgt het er wel voor dat er toch in het proces een centrale eenheid aanwezig is. Wat natuurlijk het aspect van decentralisatie schaadt, net zoals bij Big- chainDB.

ˆ Voornamelijk bedoelt voor private transacties. 2.4.3.4 IPFS

InterPlanetary File System [35] is een peer to peer file sharing systeem dat ervoor zorgt dat data verdeelt is over meerdere computers die verspreid zijn over meerdere locaties. Stel dat iemand een bestand wil afhalen van een website. Meestal zal er dan een request gebeuren naar een specifiek adres (URI) van waar de server zich bevindt. Dit werkt in de praktijk goed, maar zorgt er wel voor dat er steeds afhankelijkheid is van die server. Zou de server plat liggen, dan kan niemand nog aan dat bestand. Personen die het bestand hadden afgehaald voordat de webserver plat lag, zouden wel eventueel dat bestand kunnen uitwisselen met personen die het bestand willen verkrijgen. Dat is wat IPFS nu net doet. In de plaats van het bestand op te vragen via een adres, wordt het bestand opgevraagd via meerdere computers die zich over de gehele wereld bevinden. Elk bestand in IPFS wordt immers ge¨ıdentificeerd door een speciale hash beginnend met Qm. Als er naar die hash een aanvraag gebeurt, dan weet IPFS waar het bestand zich overal kan bevinden en zal IPFS dan ook vragen aan die computers of ze het bestand willen uitwisselen.

IPFS heeft in principe niet veel met blockchain te maken. Het gaat hier over een manier om bestanden op te slaan op een gedistribueerde en gedecentraliseerde manier. Dit zou kunnen gecombineerd worden met een blockchain om op die manier de data op te slaan op het IPFS netwerk. Zo wordt er nog meer decentralisatie verkregen en hoeft de data niet opgeslagen te worden op de blockchain zelf. IPFS genereert immers steeds een unieke hash voor elk bestand die eenvoudig in de blockchain kan worden opgeslagen. De herkomstinformatie zelf bevindt zich dan op het IPFS netwerk.

Voordelen:

ˆ Identificatie van de bestanden via een hash. ˆ Gedecentraliseerd en gedistribueerd.

Nadelen:

2.4.3.5 Open Provenance

Een ander interessant iets dat gevonden werd is Open Provenance [36]. Dit is een verzameling van meerdere software tools om werken met herkomstinformatie eenvoudiger te maken. Zo is er Prov Store [37] waarmee herkomstinformatie gratis online kan worden opgeslagen, zowel publiek als privaat. Daarnaast kan via Prov Store de herkomstinformatie eenvoudig omgezet worden naar andere herkomstinformatie voorstellingen. Een andere is PROV Python [38]. Dit biedt een implementatie in Python aan van het herkomstinformatie model waarmee op die manier herkomstinformatie eenvoudig kan uitgelezen en weggeschreven worden.

Voordelen:

ˆ Eenvoudig te gebruiken.

ˆ Invoer en uitvoer van meerdere herkomstinformatie modellen. ˆ Grafische voorstelling van herkomstinformatie.

ˆ Mogelijkheid tot online opslag. Nadelen:

In dit hoofdstuk wordt de architectuur, de implementaties en de experimenten er op bespro- ken. In 3.1 wordt een algemeen architecturaal model getoond dat werd ontworpen als basis voor de implementaties. Daarnaast wordt er in 3.2 besproken wat de gekozen technologie¨en waren waarmee dit model werd ge¨ımplementeerd. Verder wordt in 3.3 een initi¨ele implemen- tatie beschreven. Hiermee werd een eerste experiment uitgevoerd dat beschreven is in 3.4. Uit deze experimenten konden enkele belangrijke tekortkomingen worden geconstateerd die in 3.5 besproken worden.

3.1

Architectuur

De architectuur van de herkomstinformatie blockchain wordt onderscheiden in verschillende lagen waarbij elke laag zijn eigen verantwoordelijkheid heeft. Elk van deze lagen communiceert met de laag die er boven of onder ligt. Deze communicatie kan lokaal zijn, maar kan ook over het internet gebeuren. De architectuur is een meer veralgemeend model van hoe de gekozen technologie¨en vermeldt in 3.2 werken. Het model te zien op figuur 3.1 toont meerdere van deze lagen waarbij de blockchain data de laagste laag is en de hoogste laag de applicatie waarmee de gebruiker of knoop kan interageren.

De eerste laag, vanaf onder naar boven bekeken, is de blockchain laag. Deze laag is waar alle blockchain informatie zich bevindt. Hoe deze informatie, blokken en transacties, specifiek wordt opgeslagen is afhankelijk van de technologie.

De tweede laag is de blockchain consensus. De verantwoordelijkheid van deze laag is om ervoor te zorgen dat alle knopen in een blockchain netwerk een consistente staat bereiken. Alle transacties worden op deze laag verwerkt. Deze laag bevat ook de noodzakelijke protocollen om peer to peer verbindingen mogelijk te maken.

De derde laag is de blockchain interface. Dit is een brug voor de communicatie tussen de applicatie en de blockchain. Zo kunnen er acties worden uitgevoerd op het blockchain systeem

en transacties toegevoegd en bekeken worden.

De laatste laag is de applicatielaag. Deze laag heeft de meeste invloed op hoe transacties verder worden afgehandeld. Deze laag werd in twee delen verdeeld. Het eerste deel, de front- end applicatie, dient voor interactie met de gebruikers. Het tweede deel is de blockchain applicatie en is bedoelt voor de knopen. Het is zo dat de gebruikers niet de blockchain applicatie kunnen gebruiken. Die is expliciet bedoelt voor de knopen die meewerken aan het netwerk.

Figuur 3.1: De architectuur van de herkomstinformatie blockchain die data opslaat.

3.2

Gekozen technologie¨en

Naast dat de blockchain genoeg mogelijkheden moest bieden om de verwerking van een trans- actie te bekijken en aan te passen, zoals vermeldt in 1.3, hing de keuze van de blockchain technologie¨en ook af van volgende drie aspecten: Het consensus, het gedrag in publieke of private omgeving en de mate in hoeverre de applicatielaag al ge¨ımplementeerd was. Deze drie aspecten gaven een goed inzicht over de mogelijkheden die de blockchain technologie te bieden had. Een eerste aandachtspunt voor de keuze was welke consensus er achter de blockchain schuilt. Er werd hier immers te werk gegaan met data en niet met een digitale valuta. Er was daarom een andere manier van aanpak nodig om ervoor te zorgen dat de blockchain niet wordt verstoort door gebruikers met malafide doeleinden. Daarnaast werd ook gekeken naar hoe de blockchain zich gedraagt in een publieke of private omgeving. Sommige blockchain technologie¨en leggen meer de focus op de industrie en willen met hun blockchain framework bedrijven bereiken, waar confidaliteit belangrijk is. Anderen zijn meer “all around” en kunnen interessante toepassingen voorzien voor zowel private als publieke blockchains. In het geval van een herkomstinformatie blockchain werd voor een technologie gekozen die ondersteuning

bied voor een publieke omgeving. De grootste reden hiervoor is dat herkomstinformatie voor- namelijk zijn nut toont in een publieke omgeving waar kwaliteit en geloofwaardigheid van data soms betwist kan worden. Tot slot werd ook gekeken in welke mate de technologie zelf al de applicatielaag had ge¨ımplementeerd. Zo hadden enkele al een redelijke implementatie terwijl anderen slechts bepaalde stukken van een blockchain hadden ge¨ımplementeerd. Door een meer ge¨ımplementeerde blockchain technologie te kiezen kon een eerste implementatie sneller afgewerkt zijn waardoor deze sneller kon worden uitgetest.

Er werden twee blockchain technologie¨en gekozen doorheen het gehele onderzoek: BigchainDB [21] en Tendermint [32]. Open Provenance [36] werd gebruikt ter ondersteuning maar is geen blockchain technologie op zich. Eerst werd BigchainDB gebruikt als startpunt voor een initi¨ele implementatie in 3.3 omdat die al een groot deel van de benodigde functionaliteiten bezat en de mogelijkheid had om zich op te stellen in een publieke omgeving. Het consensus bij BigchainDB is een leider gebaseerde consensus, waarover in 3.2.1 meer uitleg wordt gegeven. BigchainDB is een applicatie bovenop de andere gekozen blockchain technologie Tendermint. Daarom werd Tendermint gebruikt in het verdere verloop van het onderzoek voor een verbe- terde implementatie in 4.2. Tendermint bezat een minder ge¨ımplementeerde applicatielaag. Dit gaf meer vrijheid voor eigen invulling waardoor de implementatie specifieker voor her- komstinformatie kon ontworpen worden. Net zoals BigchainDB is het mogelijk om deze blockchain in het publiek op te stellen. De consensus is echter iets anders en maakt gebruik van round-robin stijl, waarover in 3.2.2 meer informatie.

Er werd niet gekozen voor HyperLedger Fabric [33] omdat hun focus te veel op de industri¨ele sector ligt. Wat een publieke blockchain niet (of moeilijk) mogelijk zou gemaakt hebben. Er werd ook geen beroep meer gedaan op IPFS [35]. Hoewel het een goede manier is om data gedistribueerd op te slaan, draagt het weinig bij tot het beantwoorden van de onderzoeksvraag.

3.2.1 BigchainDB

De keuze voor BigchainDB is voornamelijk te wijten aan het feit dat deze blockchain alle lagen vernoemd in 3.1 al grotendeels heeft ge¨ımplementeerd. Zo maakt BigchainDB gebruik van Tendermint als consensus machine. De consensus werd nog lichtjes aangepast door de makers van BigchainDB zodat dit een leider gebaseerde consensus is [39]. Hierbij wordt een leider knoop gekozen door alle knopen en vervolgens zorgt die leider steeds voor de transities tussen de staten van de applicatie. De applicatie overgangen zijn een onderdeel van Tendermint waarover in 3.2.2 meer uitleg volgt. Bij BigchainDB is het mogelijk om zogenaamde digitale goederen (digital assets) op te slaan op de BigchainDB blockchain en hier query’s op uit te voeren. Dit wordt gerealiseerd door het gebruiken van een MongoDB databank die op elke knoop beschikbaar is. Deze goederen kunnen tussen gebruikers worden overgedragen. Daaruit blijkt wel dat het hoofddoel van deze blockchain niet het opslaan van data is, echter is het wel

mogelijk. Om te interageren met BigchainDB is er een API over HTTP aanwezig. Hiermee kunnen zowel nieuwe transacties worden uitgevoerd als eerdere worden bekeken. Het is wel zo dat een knoop zichzelf niet zomaar aan een BigchainDB netwerk kan toevoegen. Enkel knopen die erkend worden door de leider-knoop kunnen tot een BigchainDB netwerk behoren. Wat dan weer duid op minder decentralisatie, in andere woorden meer afhankelijkheid van een centrale of derde partij.

Op figuur 3.2 is te zien hoe een BigchainDB netwerk met vier knopen er uit ziet. Op een knoop is dan een BigchainDB server en een Tendermint server aanwezig. Het fundamentele achter de blockchain, de consensus en het peer to peer mechanisme, wordt gerealiseerd door Tendermint. Deze communiceert met de BigchainDB server die dan lokaal een MongoDB databank heeft om op die manier een kopie van de data op te slaan. Als een transactie wordt verzonden naar het netwerk zal deze eerst worden gecheckt op zijn geldigheid om vervolgens toegevoegd te worden aan een blok en verspreidt te worden op het netwerk. Vanaf dat dit proces doorlopen is, zal BigchainDB de transactie lokaal op zijn MongoDB databank plaatsen. Dit geeft de mogelijkheid om query’s op de blockchain uit te voeren. Omwille van het feit dat er ten eerste geen mogelijkheid is om data aan te passen via de API en ten tweede ook elke verandering binnen het netwerk detecteerbaar is, is het niet mogelijk om data die zich op de BigchainDB blockchain bevindt aan te passen. Zou men toegang verkrijgen tot de fysieke locatie van een knoop en dan de MongoDB data aanpassen, dan vormt dit ook nog steeds geen probleem omdat de meerderheid van de knopen wel nog de correcte blockchain bezit. De knoop met de foutieve data kan dan verwijderd worden uit het netwerk [21].

Figuur 3.2: Een BigchainDB netwerk met vier knopen [21]

[21]. In de plaats van goederen op te slaan, werd in dit onderzoek herkomstinformatie opge- slagen in dat JSON object. BigchainDB ziet immers geen verschil tussen een digitaal goed en herkomstinformatie. Als het erop neerkomt is dit allebei data .

3.2.2 Tendermint

Tendermint [32] wordt een Byzantijns fout tolerante [40] blockchain genoemd. Eenvoudig uitgelegd wil dit zeggen dat de blockchain nog zonder problemen kan werken zolang meer dan 2/3 van de knopen online zijn. De verhouding van 2/3 wordt daarom regelmatig bij de processen van Tendermint gebruikt. In zijn essentie is Tendermint een consensus machine die ervoor zorgt dat de staat van een applicatie over meerdere computers wordt gerepliceerd op een veilige en consistente manier. Deze applicatie staat is niet verschillend van hoe een blockchain eerder in dit onderzoek werd beschreven. Zo kunnen alle Bitcoin transacties worden gezien als een applicatie die zich in een bepaalde staat bevindt. Bij Bitcoin zou die staat dan gemiddeld om de tien minuten worden aangepast (herinner dat bij Bitcoin gemiddeld om de tien minuten nieuwe blokken worden aangemaakt) en moeten gerepliceerd worden naar alle andere computers die deelnemen aan het netwerk. Men moet dan ook rekening houden