Module 4A- Bouwstenen van de blockchaintechnologie Flashcards
1
Q
Concept blockchain
A
- Een blockchain kan beschreven worden als een combinatie van een aantal technieken uit de computerwetenschappen en cryptografie om informatie op te slaan, te delen en vertrouwen te creëren omtrent die informatie.
2
Q
Wat is een hashfunctie?
A
- Hashfuncties zijn wiskundige berekeningen die een gegeven set aan data, ongeacht haar grootte, omzetten naar een “string” (reeks getallen/letters, binair/hexadecimaal of anders) van vaste lengte.
3
Q
Wat is de mechaniek van een hashfunctie?
A
- Praktisch uitermate moeilijk om uit de output (string) de input van de hashfunctie te berekenen. Omgekeerd is het relatief eenvoudig om vanuit de input de hashfunctie toe te passen en een string te berekenen.
- Het is ook onvoorspelbaar welke input leidt tot een output → geen patroon te vinden tussen de waarde van de input en waarde van de output dus daaruit kan je niets afleiden.
4
Q
Wat is het voordeel van de mechaniek van hashfuncties?
A
- = eenrichtingsverkeer → voordeel dat je niet de volledige dataset hoeft te beveiligen, maar louter de hash die van die dataset kan gemaakt worden om zeker te zijn dat er aan de gehele dataset niets is gewijzigd.
- Als je namelijk op een later tijdstip dezelfde dataset als input neemt, dan moet je ook dezelfde hash als uitkomst bekomen. Zo niet, dan heeft er iemand iets verandert aan de dataset.
5
Q
Wat is er nodig opdat hashfuncties voldoende uniek en onvoorspelbaar zouden zijn?
A
- Het mag niet te makkelijk zijn om vanuit 2 verschillende inputs 1 hash te genereren:
- Indien dit eenvoudig is, dan zou een fraudeur de originele dataset al te makkelijk kunnen vervangen door een kopie met exact dezelfde hash en de eenrichtingseigenschap onderuithalen.
- Er mag geen overlappende outputs zijn.
6
Q
Illustratie duivenkoten bij hashfuncties?
A
- Stel dat je een duivenhok hebt met 100 kotjes, maar je hebt 101 duiven. Dan is je output (kotjes) net kleiner dan je input (duiven) en ben je zeker dat er minstens voor éénzelfde kot twee duiven zullen zijn. Bij hashfuncties zijn er op veel grotere schaal ook meer mogelijke inputs (duiven) dan hashes (kotjes).
- Bijgevolg kan je er zeker van zijn dat door het beperkte aantal mogelijke hashes, aangezien die altijd in éénzelfde format moeten staan, er sowieso wel twee of meer bestanden bestaan die dezelfde hash als uitkomst hebben.
- De sterkte van een hashfunctie is echter dat het praktisch erg moeilijk tot onmogelijk is om vanuit een hash (output/kotje) de inputs (duiven) terug te vinden die tot die hash leiden.
7
Q
Waarom is de hashfunctie belangrijk voor de blockchain?
A
- Lange documenten samen te vatten in 1 hash
- Proof-of-work systeem op basis van hashpuzzels
8
Q
Lange documenten samen te vatten als hash?
A
- Een string is uniek voor het document -> als men dezelfde hash als resultaat heeft als degene die het origineel heeft samengevat in een hash, dan zijn we zeker dat beide documenten exact hetzelfde zijn, aangezien het bijna onmogelijk is om vanuit het document zelf dezelfde hash te proberen te genereren.
- Gevolg: Op die manier laten hashfuncties toe om niet volledige databanken te moeten beveiligen, maar één enkele string om te controleren dat in die databanken niets gewijzigd is.
9
Q
Proof-of-work systeem op basis van hashpuzzels
A
- Voor bepaalde blockchains is het proof-of-work systeem op basis van hashpuzzels: Bitcoin.
- Aangezien het onvoorspelbaar is welke hash voortvloeit uit een input is de enige manier om een specifieke hash te vinden door allerlei verschillende opties te testen (lees: uit te rekenen).
- Een hash-puzzel kan bijgevolg enkel opgelost worden doordat een computer voldoende inputvariaties heeft getest, een bepaalde mate van rekenwerk heeft gepresteerd (en een stukje geluk heeft gehad) dat hij op de juiste oplossing is gestoten binnen een redelijke tijd.
- Afhankelijk van rekenkracht + geluk
- Resultaat: zo het is het veel moeilijker voor 1 entiteit om voldoende rekenmacht te bezitten om fraude te plegen.
10
Q
Waarom hebben we deze techniek van Merkle boom nodig?
A
- Via hashfuncties: grote stukken informatie in 1 unieke string. Wanneer we veel informatie in 1 hashfunctie moeten verwerken → liever informatie opdelen met elk hun eigen hash om gecontroleerd te worden.
- Om al die verschillende hashes samen te vatten, combineert men telkens twee hashes tot een nieuwe hash, die dan op haar beurt wordt gehasht met een andere hash, enz.
- Op deze manier kan men een Merkle boom opbouwen waarbij uiteindelijk één hash aan de basis ligt die kan ontrafeld worden tot elke hash.
11
Q
Waarom zou je timestamping willen gebruiken?
A
- Stel dat je niet één keer een contract afsluit met een partij, maar dit verschillende keren doet. Je wil echter al je contracten met die partij telkens kunnen samenvatten in één hash.
- Dit kan door een hashketting te creëren. Bij het samenstellen van je nieuwste blok (je Merkle boom) voeg je een zogenaamde hash-pointer toe die verwijst naar de locatie van de data van de vorige Merkle boom.
- → Zo creëer je een ketting van blokken die telkens naar elkaar verwijzen.
12
Q
Hoe kan je zo de volgorde vastleggen via timestamping?
A
- Door telkens de uitkomst van de Merkle boom op een bepaald moment te hashen met de uitkomst van de Merkle boom op een later moment kan de volgorde van verschillende stukken informatie vastgelegd worden.
- Je hebt namelijk telkens de hash van de volgende Merkle bomen nodig om de hash van een eerdere Merkle boom boven te halen.
13
Q
Wat kan je doen door timestamping?
A
- Als je dan van tijd tot tijd de uitkomst van de huidige combinatie van hashes publiceert of op één of andere manier formaliseert (i.e. publiek maken dat op moment N0 hash X het resultaat is van je databank), dan kan je achteraf aantonen welke versie van de informatie op dat moment bestond.
- Bijgevolg kan je door de combinatie van timestamping, Merkle bomen en hashfuncties grote hoeveelheden informatie doorheen de tijd met hashes samenvatten en achteraf controleerbaar maken.
14
Q
Wat is symmetrische cryptografie?
A
- Bij symmetrische cryptografie wordt dezelfde sleutel (bv. A = B, B = C, etc.) gebruikt om informatie te coderen en te decoderen. Men kan dus met de sleutel zowel weten dat A uit een origineel B is, maar ook dat B in code uit A komt in het origineel.
15
Q
Wat is asymmetrische cryptografie
A
- Daarbij wordt niet telkens dezelfde sleutel gebruikt om informatie te coderen en te decoderen, maar maakt men gebruik van twee sleutels.
- Bv. digitale handtekeningen