Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Blockchain für Entwickler - Was steckt wirklich dahinter?

Blockchain für Entwickler - Was steckt wirklich dahinter?

In zehn Jahren werden wir Blockchains so selbstverständlich nutzen wie heute Datenbanken - und das nicht wegen seltsamer Crypto-Währungen, die bereits heute schon mehr an Tulpenkrise als an seriöses Software-Engineering denken lassen. In dieser Session präsentieren Manuel Rauber und Ingo Rammer die konkreten technischen Motivationen, Hintergründe und Zusammenhänge, die den Hype überstehen werden. Sie lernen die fundamentalen Elemente, Arten und Betriebsmodi von öffentlichen und privaten Blockchains kennen und werden wissen, warum Smart Contracts weder "smart" noch "Contracts", sondern einfach Regeln zur Prüfung von replizierten Transaktionen sind. Manuel und Ingo werden das Thema nicht nur abstrakt und theoretisch behandeln, sondern an konkreten Codebeispielen auf Basis von aktuellen Blockchain-Entwicklertechnologien.

GitHub: https://github.com/thinktecture/blockchain-tendermint-sample

Manuel Rauber

April 17, 2018
Tweet

More Decks by Manuel Rauber

Other Decks in Technology

Transcript

  1. Blockchain für Entwickler
    Was steckt wirklich dahinter?
    Ingo Rammer, Manuel Rauber
    @ingorammer, @manuelrauber

    View full-size slide

  2. Ingo Rammer
    Gründer und Geschäftsführer der Thinktecture AG
    Mein Fokus: Blockchain Technologien für B2B-Verwendung
    Manuel Rauber
    Consultant bei Thinktecture AG
    @ingorammer, @manuelrauber
    [email protected], [email protected]
    https://thinktecture.com

    View full-size slide

  3. Aber darum geht‘s
    heute nicht.

    View full-size slide

  4. Blockchain im Business
    (denn Cryptowährungen sind nur ein UseCase)

    View full-size slide

  5. • Prozesstransparenz für Kunden und Geschäftspartner
    • Nachverfolgbarkeit von digitalen und physischen Gütern
    (nicht nur Cryptowährungen à Markenartikel,
    Medikamente, ...)
    • Mit IoT-Daten: Position des Containers, ...
    • Revisionssicherheit
    • Möglichkeit für Read-Only Zugriffe von Auditoren
    • ... und alles ohne zentrale Stellen!
    Neue Use Cases

    View full-size slide

  6. Rufnummernportierung – nach
    einer wahren Begebenheit
    (mit ein bisschen kreativer Freiheit)

    View full-size slide

  7. Telco A Telco B
    0151-123 123 123
    Max Mustermann
    1.1.1911
    0151-123 123 123
    Max Mustermann
    1.1.1911
    Fax, Email, Brief, ...
    SMS, Email, Brief, ...

    View full-size slide

  8. Telco A Telco B
    Fax, Email, Brief, ...
    Haben wir
    nie
    bekommen
    Haben
    noch keine
    Info von
    Telco A!
    Daten
    waren
    fehlerhaft
    Wurde
    ohne
    Gründe
    abgelehnt
    Vertrag
    existiert
    nicht
    Diese
    Nummer ist
    nicht bei
    uns
    Falscher
    Name für
    diese
    Nummer
    Ja, die
    Nummer
    haben wir
    bereits
    portiert
    Sollte
    eigentlich
    schon
    gehen
    Ne, also da
    kann ich
    Ihnen nicht
    weiterhelfen!
    Ne, also da
    kann ich
    Ihnen nicht
    weiterhelfen!
    ?

    View full-size slide

  9. • 3.437 gemeldete Telekommunikationsunternehmen
    • 31% aller Anfragen bei Bundesnetzagentur (19.000
    Fälle, 3.000 Eskalationen)
    • 300.000 EUR Bußgelder in 2016
    Quelle: Jahresbericht 2016 der Bundesnetzagentur, Seite 62 ff. (https://goo.gl/cPQcXV)
    Umfang des Problems

    View full-size slide

  10. • Punkt-zu-Punkt Web Services statt Fax, Email, Brief?
    Klassische Lösung #1 – Punkt zu Punkt
    Telco A
    Telco B
    Telco C
    Telco E
    Telco H
    Telco G
    Telco D
    Telco F
    • Anzahl an Schnittstellen: n * (n-1) /2
    • Keine Prozesstransparenz von außen

    View full-size slide

  11. • Zentralisierte Prozesskoordination (zB Lösung von 2002)
    • Single Point of Failure
    • Kann monopolunterstützend/diskriminierend sein (zB Kosten)
    Klassische Lösung #2 – Zentralisiert
    Telco A
    Telco B
    Telco C
    Telco E
    Telco H
    Telco G
    Telco D
    Telco F
    Koordinator

    View full-size slide

  12. • Unabhängige Akteure
    • Unterschiedliche Vertrauensstellungen
    • Wunsch nach Transparenz, zB durch
    vertrauenswürdige, replizierte Datenstrukturen
    • Ohne Notwendigkeit zentraler Stellen
    Alternativen für unser Szenario?

    View full-size slide

  13. Lösungsmodell #3 – Blockchain
    Node 1
    Node 2
    Node 3
    Node 4 Node 5
    Node 6
    Node 7
    Node 8
    Node 9

    View full-size slide

  14. Blockchain Basics

    View full-size slide

  15. "Eine Blockchain [...] ist eine kontinuierlich erweiterbare Liste
    von Datensätzen, genannt „Blöcke“, welche
    mittels kryptographischer Verfahren miteinander verkettet
    sind. Jeder Block enthält dabei typischerweise
    einen kryptographisch sicheren Hash des vorhergehenden
    Blocks, einen Zeitstempel und Transaktionsdaten."
    Wikipedia, 19.02.2018
    Blockchain – Was ist das?

    View full-size slide

  16. Blockchain
    Genesis
    Block
    Block 1
    Random
    Content
    Genesis
    Hash
    Content
    Genesis
    Hash
    Block 1
    Hash
    Block 2
    Content
    Block 1
    Hash
    Block 2
    Hash
    Block 3
    Content
    Block 2
    Hash
    Block 3
    Hash
    Config

    View full-size slide

  17. Node 1
    Peer-to-Peer Replikation
    Genesis
    Block
    Block 1 Block 2 Block 3
    Node 2
    Genesis
    Block
    Block 1 Block 2 Block 3
    Node n
    Genesis
    Block
    Block 1 Block 2 Block 3
    Block 4
    Block 4
    Block 4
    Block 5
    Block 5
    Block 5

    View full-size slide

  18. Node 1
    Nodes laufen unabhängig, ohne Zentrale
    Node 2
    Node 3
    Node 4 Node 5
    Node 6
    Node 7
    Node 8
    Node 9

    View full-size slide

  19. Zwei unterschiedliche Modelle
    Öffentliche Blockchains
    Ethereum, Bitcoin, ...
    Private Blockchains
    Telco E
    Telco C
    Telco A
    Telco F
    Telco G
    Telco B
    Telco D
    BNA
    Telco X
    Verbände, Konsortien,
    Regierungen, ...
    ?
    !
    Telco X

    View full-size slide

  20. Wo sind die Clients?

    View full-size slide

  21. AWS für Telco B
    Infura
    RZ Telco Z
    Azure
    Azure (VM Telco C)
    RZ Telco A
    Client
    (Telco A)
    Client
    (Telco X)
    Client
    (Telco Y)
    Client
    (Telco Z)
    Node 1
    Node 2
    Node 3
    (Telco A)
    Node 4
    (Infura)
    Node 5
    Node 6
    (Telco B)
    Node 7
    (Telco C)
    Client
    (Telco B)
    RZ Telco C
    Client
    (Telco C)
    Client – hat Private Key
    Node ist
    Teil der BC
    Verbindung zu vertrauenswürdiger Node
    (HTTPs, Web Sockets, IPC, ...)

    View full-size slide

  22. Blöcke und Transaktionen

    View full-size slide

  23. • Aussagen, die technisch später nicht änderbar und nicht
    löschbar sind (= Transaktionen)
    Was ist in einem Block?
    (Das ganze natürlich maschinenlesbar, zB als Transaktions-Records)
    Der verifizierte Kunde Max Mustermann,
    geboren am 1.1.1911 möchte seine
    Telefonnummer 0151-123 123 123 von
    Telco A zu uns übertragen
    Signiert:
    Telco B
    Wir sind mit der Übertragung
    einverstanden.
    Signiert:
    Telco A

    View full-size slide

  24. • Transaktionen sind in einer eindeutigen Sequenz
    Eigenschaften von Transaktionen
    Block 1
    Tx #1
    Tx #2
    Tx #3
    Block 2
    Tx #4
    Tx #5
    Block 3
    Tx #6
    Tx #7
    Tx #8
    Block 4
    Tx #9
    Block 5
    Tx #10
    ...

    View full-size slide

  25. • Transaktionen sind signiert
    Eigenschaften von Transaktionen
    Tx #1
    Signiert:
    User A
    • Können pseudonymisch signiert sein (zB BitCoin)

    View full-size slide

  26. • Transaktionsteile können verschlüsselt sein
    Eigenschaften von Transaktionen
    {"tx":"requestTransfer",
    "phone":"0151-123123123",
    owner: "TelcoA",
    encryptedCustomerData:
    "0xe2cbcf5f890afabc4dbd236d19f949db
    05fcec2155..."}
    Signiert:
    Telco B
    Mit dem Public Key von
    Telco A verschlüsselt
    • Nur der Empfänger kann entschlüsseln
    • Empfänger kann pseudonymisiert sein!

    View full-size slide

  27. • Inhalte können auch Hashes von externen Daten
    sein
    Eigenschaften von Transaktionen
    {"tx":"requestTransfer",
    "phone":"0151-123123123",
    owner: "TelcoA",
    signedScannedContractHash:
    "0x80ebe76679b4812cde61d555c9026...",
    encryptedCustomerData: "..."}
    Signiert:
    Telco B
    "Ich hab hier ein PDF (das ich aber
    nicht herzeige) mit diesem Hash"
    • Für spätere Beweisbarkeit der Existenz
    und Unversehrtheit von externen Daten
    zur Zeit der Transaktionserstellung

    View full-size slide

  28. Blockchain: replizierte, unveränderliche*
    Sequenz von Transaktionen
    * in genau definierten Grenzen. Später mehr dazu.
    Zwischenfazit

    View full-size slide

  29. • Wie wird geprüft, ob Transaktionen
    überhaupt durchgeführt werden dürfen?
    Gültigkeit von Transaktionen?
    Wir sind mit der Übertragung der Nummer
    0151-123 123 123 einverstanden.
    Signiert:
    Telco B
    Telco C
    0151-123 123 123
    ist gar nicht bei
    Telco B, sondern
    bei uns!
    • Könnte organisatorisch durch Gesetze, Verträge
    und Strafen gelöst werden. Oder technisch.

    View full-size slide

  30. Blockchains und
    Programmcode

    View full-size slide

  31. • Die Regeln, nach denen bestimmt wird, ob eine Transaktion
    gültig ist
    • Lesen und schreiben den "World State"
    • Ist-Zustand aller Daten einer Blockchain
    • Kann über die Blöcke (als Transaktionslog) aufgebaut werden
    Smart Contracts

    View full-size slide

  32. Node 1
    Key Value
    0151123123123 Telco C
    01511111111111 Telco A
    01511111111112 Telco Z
    Wir sind mit der Übertragung der Nummer
    0151-123 123 123 an Telco A
    einverstanden.
    Signiert:
    Telco B
    // Pseudocode
    function confirmTransfer(tx) {
    if (state[tx.data.number] == tx.signer) {
    state[tx.data.number] == tx.data.receiver;
    } else throw;
    }
    {"transact": "confirmTransfer",
    "data": {
    "number": "0151123123123",
    "receiver": "Telco A"
    }}
    state[tx.data.number] == tx.signer
    Kryptographische Prüfung (hier
    Pseudocode!)
    throw Transaktion als ungültig markiert
    Failed

    View full-size slide

  33. Node 1
    Key Value
    0151123123123 Telco C
    01511111111111 Telco A
    01511111111112 Telco Z
    Wir sind mit der Übertragung der Nummer
    0151-123 123 123 an Telco A
    einverstanden.
    Signiert:
    Telco C
    // Pseudocode
    function confirmTransfer(tx) {
    if (state[tx.data.number] == tx.signer) {
    state[tx.data.number] == tx.data.receiver;
    } else throw;
    }
    {"transact": "confirmTransfer",
    "data": {
    "number": "0151123123123",
    "receiver": "Telco A"
    }}
    state[tx.data.number] == tx.signer
    Kryptographische Prüfung (hier
    Pseudocode!)
    state[tx.data.number] == tx.data.receiver
    World State wird geändert
    Key Value
    0151123123123 Telco A
    01511111111111 Telco A
    01511111111112 Telco Z
    OK

    View full-size slide

  34. Alle Nodes benötigen gleichen Stand der Smart Contracts um
    korrekt zu funktionieren!

    View full-size slide

  35. Docker-Container
    (managed)
    Wo laufen die Smart Contracts?
    Ethereum Node
    In der Node Konfigurierter Prozess
    Smart
    Contract
    Execution
    Environment
    Tendermint Node
    Server-Code
    (Interface-
    Konvention: ABCI)
    Contract Creation
    Transaktion
    Prozessstart &
    Config
    GRPC/Socket
    Managed Container
    Hyperledger Fabric
    Node
    Chaincode (Go, JS
    via Go-Bridge)
    Socket
    peer chaincode install

    View full-size slide

  36. Wie kommen die Transaktionen
    in die Blöcke?

    View full-size slide

  37. Node 1 – Max Block: 20
    Node 1 – Max Block: 21 Node 2 – Max Block: 20
    Key Value
    0151123123123 Telco C
    01511111111111 Telco A
    01511111111112 Telco Z
    Node 3 – Max Block: 20
    Key Value
    0151123123123 Telco C
    01511111111111 Telco A
    01511111111112 Telco Z
    Block 21 (in Progress)
    Tx #78
    Tx #79
    Key Value
    0151123123123 Telco C
    01511111111111 Telco A
    01511111111112 Telco Z
    Pending Transactions
    (Mempool, p2p Sync)
    Tx X
    Tx Y
    Tx Y
    Tx Z
    Tx Z
    Tx X
    Tx X
    Tx Z
    Tx Y
    Smart Contract
    Ausführung für #78
    Failed!
    Smart Contract
    Ausführung für #79
    Block
    hash
    Key Value
    0151123123123 Telco A
    01511111111111 Telco A
    01511111111112 Telco Z
    Block
    abgeschlossen

    View full-size slide

  38. Node 1 – Max Block: 20
    Node 1 – Max Block: 21 Node 2 – Max Block: 20
    Key Value
    0151123123123 Telco C
    01511111111111 Telco A
    01511111111112 Telco Z
    Node 3 – Max Block: 20
    Key Value
    0151123123123 Telco C
    01511111111111 Telco A
    01511111111112 Telco Z
    Key Value
    0151123123123 Telco A
    01511111111111 Telco A
    01511111111112 Telco Z
    Pending Transactions
    (Mempool, p2p Sync)
    Tx Z
    Block 21
    Block 21
    Block 21
    Block 21
    Tx #78
    Tx #79
    Failed!
    Block
    hash
    Block 21
    Block 21
    Block 21
    Block 21
    Tx #78
    Tx #79
    Failed!
    Block
    hash
    Block 21
    Block 21
    Block 21
    Block 21
    Tx #78
    Tx #79
    Failed!
    Block
    hash

    View full-size slide

  39. Node 1 – Max Block: 20
    Node 1 – Max Block: 21 Node 2 – Max Block: 21
    Key Value
    0151123123123 Telco A
    01511111111111 Telco A
    01511111111112 Telco Z
    Node 3 – Max Block: 21
    Key Value
    0151123123123 Telco A
    01511111111111 Telco A
    01511111111112 Telco Z
    Key Value
    0151123123123 Telco A
    01511111111111 Telco A
    01511111111112 Telco Z
    Pending Transactions
    (Mempool, p2p Sync)
    Tx Z
    Block 21
    Block 21
    Block 21
    Block 21
    Tx #78
    Tx #79
    Failed!
    Block
    hash
    Block 21
    Block 21
    Block 21
    Block 21
    Tx #78
    Tx #79
    Failed!
    Block
    hash
    Block 21
    Block 21
    Block 21
    Block 21
    Tx #78
    Tx #79
    Failed!
    Block
    hash

    View full-size slide

  40. • Smart Contracts müssen deterministisch sein (für
    alle Nodes im Netzwerk)
    • Externe Kommunikation: asynchron (Events), mit
    signierter Antwort-Transaktion an Smart Contract
    • Diese Konzept heißt "Oracle"
    Smart Contracts, Externe Daten & Co

    View full-size slide

  41. Blockchain: replizierte, unveränderliche
    Sequenz von Transaktionen, die
    bestimmten Regeln entsprechen
    Zwischenfazit

    View full-size slide

  42. Block-Ersteller

    View full-size slide

  43. • Wer bestimmt den nächsten Block? (Bzw: "wer
    könnte die Geschichte der Chain neu schreiben?")
    • Krypto-ökonomische Verfahren
    • Proof-of-Work: Kryptorätsel (Stromverbrauch!)
    • Proof-of-Stake: Monetäre Auswirkungen
    • Proof-of-Authority: Vertragliche Vereinbarung
    Auswahl des Blockerstellers

    View full-size slide

  44. Node 1
    17
    ... 18 19 20
    Node 3
    17
    ... 18 19 20
    Node 2
    17
    ... 18 19 20
    Node 4
    17
    ... 18 19 20
    21a
    21a
    21a 21b
    21b
    21b
    21a
    21a
    21b
    21b

    View full-size slide

  45. Node 1
    17
    ... 18 19 20
    Node 3
    17
    ... 18 19 20
    Node 2
    17
    ... 18 19 20
    Node 4
    17
    ... 18 19 20
    21a
    21a
    21b
    21b
    21a
    21a
    21b
    21b

    View full-size slide

  46. Node 1
    17
    ... 18 19 20
    Node 3
    17
    ... 18 19 20
    Node 2
    17
    ... 18 19 20
    Node 4
    17
    ... 18 19 20
    21a
    21a
    21b
    21b
    21a
    21a
    21b
    21b
    22
    22
    22
    22 23
    22
    22 22
    22
    23
    23
    23

    View full-size slide

  47. • Nur eine Node erstellt üblicherweise einen neuen Block
    (dynamisches Auswahlverfahren pro Block)
    • Vor allem bei Proof-of-Work Blockchains:
    • Kollisionen: Protokollspezifische Definition der korrekten Chain
    • Number of Confirmations!

    View full-size slide

  48. Blockchain: replizierte, unveränderliche
    Sequenz von Transaktionen, die
    bestimmten Regeln entsprechen und die
    einer genau definierter Konfliktbehandlung
    folgen.

    View full-size slide

  49. Benutzer
    Client Web API
    Node
    Tendermint Smart Contract World State

    View full-size slide

  50. • Beobachten – Hype ignorieren
    • Ausprobieren – It's not Magic
    • Vorbereiten – Neue Usecases
    Nächste Schritte
    • Tools in diesem Talk: Tendermint, Ethereum, Quorum, Hyperledger Fabric
    • Client/Server/Contract-Kommunikation: web3 (Ethereum), Tendermint ABCI
    • Samples: https://github.com/thinktecture/blockchain-tendermint-sample
    • Slides: https://speakerdeck.com/ingorammer
    • Contact: @ingorammer, @manuelrauber

    View full-size slide