Blockkedjor. en introduktion för datavetare. Rikard Hjort, 24 maj 2019

Relevanta dokument
Blockkedjeteknikens fördelar och framtidens utmaningar I datahantering. Andreas de Blanche

Kryptering. Krypteringsmetoder

Grundläggande datalogi - Övning 4

Kryptografiska mekanismer och valutor

Kryptografiska mekanismer och valutor

Programmering för språkteknologer II, HT2011. Rum

Föreläsning 1. Abstrakta datatyper, listor och effektivitet

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Tentamen Datastrukturer D DAT 035/INN960 (med mycket kortfattade lösningsförslag)

Objektsamlingar i Java

Avbildningar och hashtabeller. Koffman & Wolfgang kapitel 7, mestadels avsnitt 2 4

Tentamen FYTA11 Javaprogrammering

Övning 3 - Tillämpad datalogi 2012

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Tommy Färnqvist, IDA, Linköpings universitet

Föreläsning 3: Booleans, if, switch

Styrteknik: Binära tal, talsystem och koder D3:1

Programmering för språkteknologer II, HT2014. Rum

Skillnader mellan Python och Java

1 Comparator & Comparable

Välkommen till en översikt av...

Dugga Datastrukturer (DAT036)

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Tentamen Datastrukturer D DAT 035/INN960

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Tentamen Programmeringsteknik II för STS Skrivtid: Inga hjälpmedel.

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Säkerhet. Säker kommunikation - Nivå. Secure . Alice wants to send secret message, m, to Bob.

Lösningar Datastrukturer TDA

Uppgift: Algoritm för att beräkna kontrollsiffran i ett personnummer givet de 9 första siffrorna. Torrsimning av algoritm för personnummer

Den som bara har en hammare tror att alla problem är spikar

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista

Transaction Mechanics

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

DAI2 (TIDAL) + I2 (TKIEK)

Algoritmer och datastrukturer

DVG C01 TENTAMEN I PROGRAMSPRÅK PROGRAMMING LANGUAGES EXAMINATION :15-13: 15

Föreläsning 3-4 Innehåll

Exempeltenta GruDat 2002/2003

Lösningsförslag till exempeltenta 1

EDA095 JavaScript. Per Andersson. Maj 4, Lund University Per Andersson EDA095 JavaScript Maj 4, / 23

Tentamen Datastrukturer, DAT037 (DAT036)

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Beijer Electronics AB 2000, MA00336A,

Lite mer om Javas stöd för fält. Programmering. Exempel: vad är det största talet? hh.se/db2004. Fält samt Input/Output

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

Modeller, Objekt och Klasser

TDDD78 Viktiga begrepp, del 2

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Lösningsförslag till tentamen i EDA011, lördagen den 16 december 2006

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

Digitalisera! Svenska banker är internationellt ledande inom digitalisering. En stor del av kommunikationen" med privatkunder är digital

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Module 1: Functions, Limits, Continuity

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

Programmering A. Johan Eliasson

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Datastrukturer. föreläsning 3. Stacks 1

(n 1)(n) 2 för n 1, dvs att tidskomplexiteten är kvadratisk i värsta fall (n 1) =

Lösningsförslag för tentamen i Datastrukturer (DAT037) från

1. Varje bevissteg ska motiveras formellt (informella bevis ger 0 poang)

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Föreläsning REPETITION & EXTENTA

DD2387 Programsystemkonstruktion med C++ Tentamen 2

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Tentamen, EDA501/EDAA20 Programmering M MD W BK L

Tentamen i Algoritmer & Datastrukturer i Java

Styrteknik : Funktioner och funktionsblock

Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus.

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Lösningsförslag till tentamen i EDA690 Algoritmer och Datastrukturer, Helsingborg

Tentamen i Algoritmer & Datastrukturer i Java

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Föreläsning 2 Datastrukturer (DAT037)

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

tentaplugg.nu av studenter för studenter

Transaction Mechanics

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

12. Relationer och funktioner

Recitation 4. 2-D arrays. Exceptions

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Innehåll. Sökning och hashtabeller. En bilsamling att söka i. En bil-klass att söka efter. Hur hittar vi alla bilar som uppfyller ett annat villkor

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Föreläsning Datastrukturer (DAT037)

Theory 1. Summer Term 2010

Skydd för känsliga data

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Säkerhet. Vad är det vi pratar om??

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

Transkript:

Blockkedjor en introduktion för datavetare

Vem är jag?

Varför ska ni lära er om blockkedjor?

Alla ska gå härifrån och kunna... förklara Bitcoin är uppbyggt bygga en egen blockkedja läsa på själva om blockkedjeprojekt

Vad är en blockkedja? "A persistent, transparent, public, append-only ledger." -- Finn Brunton En serie händelser, i tidsordning, som alla kan enas om är den riktiga utan att någon central auktoritet bestämmer. Konsensus genom algoritmer, inte genom tilltro till andra i nätverket.

Varför Bitcoin? 0

Vad vill vi göra?

Vad är problemet? Hur vet Vitalik att Satoshi inte redan gett bort myntet? Roger To Roger, I give this Bitcoin. Hur ska vi andra veta vem som är myntets rättmätige ägare? Satoshi Signed, 2019-05-24 Satoshi Vitalik To Vitalik, I give this Bitcoin. Signed, 2019-05-25 Satoshi

Vad ska vi gå igenom? Preliminaries Kryptografiskt säkra hashar Proof-of-work Övriga (i mån av tid) Transaction splitting och combining Hard fork Andra förslag?

SHA Secure Hash Algorithm "one-way hash functions are the workhorses of modern cryptography" -- Bruce Schneier SHA Proof-of-work Bitcoin

SHA Proof-of-work Bitcoin

Hashing-algoritmer Algoritm H, range = N SHA S, range N, t.ex. N=2256 Input: godtyckliga bitar, {0,1}* Output: tal i {0, 1,, N-1}, {0,1}log N En hashing-algoritm med två extra egenskaper: Egenskaper: Deterministisk "Bra" om den är uniform, d.v.s. Prob(H(x)) Prob(H(x) 1/N SHA Givet S(x) kan du inte gissa x, på annat sätt än att testa olika värden En liten ändring av input ger en kraftig ändring i output. Proof-of-work Bitcoin

SHA-256 SHA Proof-of-work Bitcoin

SHA Proof-of-work Bitcoin

Hur stort är 2256? Hur länge behöver jag leta efter en kollision? SHA Proof-of-work Bitcoin

Förklaring av hur stort 52! är SHA Proof-of-work Bitcoin

52! = 8.1*1067 2256 = 1.2*1077 SHA Proof-of-work Bitcoin

SHA Proof-of-work Bitcoin

SHA Proof-of-work Bitcoin

Problem Jag är en forskare som genererar data från mätningar, som jag delar med kollegor. Jag är rädd att den ska läcka ut innan jag publicerat den, eller bli stulen. Jag genererar nya dataset då och då. Jag vill kunna bevisa i framtiden att jag haft en viss data sedan en viss tidpunkt men jag vill inte avslöja vad det är för data just nu. Om någon stjäl min data och publicerar mina resultat i deras namn vill jag kunna bevisa det. Men jag vill hålla datan hemlig tills vidare. SHA Proof-of-work Bitcoin

SHA Proof-of-work Bitcoin

SHA Proof-of-work Bitcoin

Vad är problemet med en timestamp?

SHA Proof-of-work Bitcoin

POW Proof-of-work SHA Proof-of-work Bitcoin

nonce = 0 dddd Hej Erland, hash(email) hash(emailhash + nonce) Jag skulle vilja. Ok? BigInt emailhash := hash(email) int nonce = 0 BigInt hash; do { hash = hash(emailhash + nonce) } while (hash % 100000!= 0); SHA nonce++ No Yes send email + nonce Proof-of-work Bitcoin

Bitcoin "Vires in numeris" (Latin: Strength in numbers) SHA Proof-of-work Bitcoin

Påminnelse: Vad vill vi göra?

Påminnelse: Vad vill vi göra? Roger Satoshi Vitalik

+ + Proof of work Bitcoin

Mining Det är i snitt 10 minuter mellan varje nytt block. Om det skapas för många block för fort, ökar svårighetsgraden (måste börja med fler 0:or) Den som lyckas skapa ett block får Transaktionsavgiften för varje transaktion i blocket (frivillig) 12.5 Bitcoin

Field Size Description Data type Comments 4 version int32_t Block version information (note, this is signed) 32 prev_block char[32] The hash value of the previous block this particular block references 32 merkle_roo t char[32] The reference to a Merkle tree collection which is a hash of all transactions related to this block 4 timestamp uint32_t A timestamp recording when this block was created (Will overflow in 2106 [2]) 4 bits uint32_t The calculated difficulty target being used for this block 4 nonce uint32_t The nonce used to generate this block to allow variations of the header and compute different hashes 1 txn_count var_int Number of transaction entries, this value is always 0

Vad krävs för att någon ska kunna modifiera en gammal transaktion?

Alla ska gå härifrån och kunna... förklara Bitcoin är uppbyggt bygga en egen blockkedja läsa på själva om blockkedjeprojekt

Frågor? Maila: rikard.hjort@gmail.com

Transaction splitting/combining Hard fork Annat?

Övningar - Implementera, med träd eller fält som underliggande struktur, ett merkle-träd med följande metoder (det går bra att använda inbyggda hashfunktioner i Java för ändamålet): void insert(object data) int gettophash() boolean verify() // Kollar att alla hashar stämmer överens med datan. List<Object> getdata() // Hämtar alla data-objekt Implementera en enkel blockkedja som en länkad lista. Vid insert behöver proof-of-work utföras, med en förutbestämd svårighetsgrad. Bra att ha: class Block med instansvariabler för previous hash, data, merkleroot, nonce. Metoden: makeblock(merkletree datatree) // Baseras på senaste blocket i kedjan, utför proof-of-work. Metoden: boolean appendblock(block) // returnerar false om verifieringen inte gick igenom, returnerar annars true och lägger till blocket i kedjan.