Blockchain für Architekten und Entwickler - Was steckt wirklich dahinter?

7a1b0b24e5251ee7f5407681cca7d142?s=47 Ingo Rammer
September 27, 2018

Blockchain für Architekten und Entwickler - Was steckt wirklich dahinter?

In zehn Jahren werden wir Blockchains so selbstverständlich nutzen wie heute Datenbanken – und das nicht wegen seltsamer Cryptowährungen, die bereits heute schon mehr an Tulpenmanie als an seriöses Software-Engineering denken lassen. In dieser Session zeigt Ihnen Ingo Rammer die konkreten Motivationen, Hintergründe, Technologie und Anwendungsfälle, die den Hype überstehen werden. Sie lernen die fundamentalen Elemente, Arten und Betriebsmodi von öffentlichen und privaten Blockchains kennen und wissen am Ende, wie Sie diese Technologien in Ihren Projekten einsetzen können. Und das nicht nur abstrakt und theoretisch, sondern an konkreten Codebeispielen auf Basis von aktuellen Blockchain-Entwicklertechnologien.

7a1b0b24e5251ee7f5407681cca7d142?s=128

Ingo Rammer

September 27, 2018
Tweet

Transcript

  1. Blockchain für Architekten und Entwickler Was steckt wirklich dahinter? Ingo

    Rammer ingo.rammer@thinktecture.com CEO
  2. Ingo Rammer Gründer und Geschäftsführer der Thinktecture AG, einem technischen

    Beratungsunternehmen für Software-Architekten, -Entwickler und Entscheider Mein Fokus: Blockchain Technologien für B2B-Verwendung, von den Tiefen der Technologie bis hin zu ISO TC 307 Mitglied der Hyperledger Foundation & Enterprise Ethereum Alliance @ingorammer | ingo.rammer@thinktecture.com | https://thinktecture.com
  3. • 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
  4. • Technische Grundlagen statt Magie • Drei Typen von Anwendungsfällen

    Zwei Kernpunkte meines Vortrags
  5. Blockchain-Grundlagen am Beispiel Rufnummernportierung

  6. 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, ...
  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, ... Also, bei uns ist alles in Ordnung, fragen Sie die andere Seite ? Also, bei uns ist alles in Ordnung, fragen Sie die andere Seite
  8. • 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
  9. • Unabhängige Akteure • Unterschiedliche Vertrauensstellungen • Wunsch nach Transparenz,

    zB durch vertrauenswürdige, replizierte Datenstrukturen • Ohne Notwendigkeit zentraler Stellen Unser Szenario
  10. Blockchain Basics

  11. "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?
  12. Blockchain Genesis Block Block 1 Random Content Genesis Hash Daten-

    sätze Genesis Hash Block 1 Hash Block 2 Daten- sätze Block 1 Hash Block 2 Hash Block 3 Daten- sätze Block 2 Hash Block 3 Hash Config
  13. 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
  14. Node 1 Nodes laufen unabhängig, ohne Zentrale Node 2 Node

    3 Node 4 Node 5 Node 6 Node 7 Node 8 Node 9
  15. 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
  16. Öffentliche Blockchains • Teilnehmer-Identitäten sind nicht bekannt • Daher durchwegs

    Mining zur Sicherung der Integrität (Proof-of-Work, Nakamoto Consensus) • Alle Informationen sind typischerweise öffentlich • Niedrige Transaktionszahlen: Global nur wenige Dutzend pro Sekunde (Bitcoin, Ethereum)!
  17. Private Blockchains • Teilnehmer sind bekannt, Zugriff technisch gesichert •

    Daher auch: Kein Mining notwendig (Proof-of-Authority statt Proof-of-Work) E C A F G B D BNA X G #1 #2 #3 G #1 #2 #3 G #1 #2 #3 #4 • Transaktionen können öffentlich oder privat sein (direkter Punkt-zu- Punkt Austausch zwischen zwei Beteiligten) • Massiv höhere Transaktionszahlen (hunderte, tausende oder zehntausende pro Sekunde) • Technologien zB Hyperledger Fabric (auch IBM, SAP, Oracle), Quorum, ...
  18. Wo sind die Clients?

  19. 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, ...)
  20. Blöcke und Transaktionen

  21. • Signierte 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
  22. • 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 ...
  23. • 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
  24. • 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 zum Zeitpunkt der Blockerstellung
  25. • Punkt-zu-Punkt übertragene Daten können referenziert werden Eigenschaften von Transaktionen

    {"tx":"requestTransfer", "phone":"0151-123123123", owner: "TelcoA", externalDataHash: "0x5489b348f7a433...", } Signiert: Telco B Diese Daten werden Punkt-zu-Punkt gesendet • Zur Datensicherheit können Teile der Transaktionsdaten nur zwischen den Beteiligten ausgetauscht werden (zB Hyperledger Fabric oder Quorum)
  26. Blockchain: replizierte, unveränderliche* Sequenz von Transaktionen * in genau definierten

    Grenzen. Später mehr dazu. Zwischenfazit
  27. Blockchains und Programmcode

  28. • 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.
  29. • Die Regeln, nach denen bestimmt wird, ob eine Transaktion

    gültig ist • Lesen und schreiben den "World State“: die eigentlichen Daten einer Blockchain Smart Contracts Number Owner 0151123123123 Telco C 01511111111111 Telco A 01511111111112 Telco Z
  30. Node 1 Number Owner 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 function confirmTransfer(tx) { if (state[tx.data.number] == tx.signer) { state[tx.data.number] = tx.data.receiver; } else throw; } state[tx.data.number] == tx.signer Kryptographische Prüfung throw Transaktion als ungültig markiert Failed
  31. Node 1 Number Owner 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 function confirmTransfer(tx) { if (state[tx.data.number] == tx.signer) { state[tx.data.number] = tx.data.receiver; } else throw; } state[tx.data.number] == tx.signer Kryptographische Prüfung World State wird geändert OK Number Owner 0151123123123 Telco A 01511111111111 Telco A 01511111111112 Telco Z state[tx.data.number] = tx.data.receiver
  32. Alle Nodes benötigen gleichen Stand der Smart Contracts um korrekt

    zu funktionieren!
  33. 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
  34. Wie kommen die Transaktionen in die Blöcke?

  35. 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
  36. 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
  37. 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
  38. • 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
  39. Blockchain: replizierte, unveränderliche Sequenz von Transaktionen, die bestimmten Regeln entsprechen

    und die einer genau definierter Konfliktbehandlung folgen.
  40. … aber was kann man damit konkret machen? So weit,

    so gut …
  41. Drei typische Klassen von Anwendungsfällen für Blockchains

  42. Dokumentierend Kollaborativ Transformierend • Dokumentierende Anwendungsfälle • „Timestamping“: Technischer Beweis

    der Integrität von Dokumenten und Daten (Unveränderbarkeit und Vollständigkeit) zu einem gewissen Zeitpunkt • Als Kombination mit öffentlichen Blockchains oder wenn Regulator selbst Mitglied der Blockchain ist • Einfach umzusetzen, schneller Mehrwert • Kein oder geringer Fokus auf Smart Contracts
  43. Dokumentierend Kollaborativ Transformierend • Datenaustausch und Prozesstransparenz • Prozessschritte/-stati als

    Transaktionen an Blockchain • Digitalisierung von analogen Prozessen über Firmengrenzen • Rufnummernportierung wie in unserem Beispiel • Bsp: „Loi Hamon“ in Frankreich • Möglichkeit der Integration mit BPM-Tools wie Camunda • Interaktionen werden oft von Industriegremien oder Vereinen definiert
  44. Dokumentierend Kollaborativ Transformierend • Eröffnen neue Geschäftsmodelle und Märkte •

    Stellen nächsten Schritt in der Digitalisierung dar • Reality-Check: Durch viele Stakeholder komplexer in der Definition und Implementation • Beispiel: Unfallfreie Jahreskilometern von Carsharing-Nutzern zusätzlich zur SF Stufe
  45. • Kommerzielle Interessen (mehr als 2 Mio Carsharing-Nutzer!) • Kunden:

    bessere Tarife • Versicherung: Wettbewerbsvorteil • Carsharing-Anbieter: Wettbewerbsvorteil; evtl. Provision • Herausforderungen • DSGVO-kompatible Datenweitergabe • Skalierung hin zu vielen Anbietern auf beiden Seiten • Daten sollen Konkurs oder Aussteigen eines Anbieters überleben (also nicht erst “bei Bedarf“ generiert werden) Unfallfreie Carsharing km/Jahr
  46. Kundin generiert digitale ID (im Browser oder als Kundenkarte, …)

    Carsharing Anbieter • Verknüpfung der ID mit Kundennummer (Identitätsprüfung) • Opt-In auf Web Site Versicherung Blockchain Mai 2018 Kunde 1122 – 97 km Mai 2018 Kunde 5745 – 34 km Juni 2018 Kunde 1122 – 535 km Juni 2018 Kunde 5745 – 16 km Kundin Periodische Veröffentlichung der Daten
  47. Carsharing Anbieter Versicherung Blockchain 239587030 4957443873 459089845 3458999… 947989834 5345534524

    958458205 755345… 9447757234 2349348572 345580923 84949283… 209389084 923840982 342394820 9348934… Kundin Veröffentlichung der signierten Daten, verschlüsselt mit dem jeweiligen PubKey aus der ID eines Kunden Kundin kann ihre Daten jederzeit (zB im Web) entschlüsseln (niemand sonst! Nicht mal der Anbieter.) Mai 2018 Kunde 1122 – 97 km - Anbieter1 Juni 2018 Kunde 1122 – 535 km - Anbieter1 Daten können von der Kundin weitergegeben, und vom Empfänger signaturgeprüft werden. Auch wenn Anbieter nicht mehr existieren würde! (Datenhoheit bei Kundin!)
  48. Carsharing Anbieter #1 Versicherung 1 Blockchain Kundin Carsharing Anbieter #2

    Mietwagen Anbieter Versicherung 2 Versicherung 3 0304... 4586... 6436... 9384... 5463... 5854... … Feb 2018, 50 km, Stadt- mobil Feb 2018, 25 km, DB März 2018, 1534 km, Sixt Weitergabe durch Kundin
  49. Vielen Dank! • Zitierte Technologien: Hyperledger Fabric, Parity • Slides:

    https://speakerdeck.com/ingorammer • Contact: ingo.rammer@thinktecture.com • Twitter: @ingorammer Dokumentierend Kollaborativ Transformierend
  50. EXTRA CONTENT

  51. Block-Ersteller

  52. • 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
  53. Jetzt doch: Cryptocurrencies! pragma solidity ^0.4.16; contract TokenSample { mapping

    (address => uint256) public balances; event Transfer(address indexed _from, address indexed _to, uint256 _value); function TokenSample(uint256 _initialAmount) public { balances[msg.sender] = _initialAmount; } function transfer(address _to, uint256 _value) public returns (bool success) { require(balances[msg.sender] >= _value); balances[msg.sender] -= _value; balances[_to] += _value; Transfer(msg.sender, _to, _value); return true; } }
  54. • Stromverbrauch durch Mining à Proof-of-Stake statt Proof-of-Work • Transaktionsdurchsatz

    à Layer 2 Protokolle (zB Hierarchische Blockchain-Strukturen für Sharding und/oder Off-Chain Integrationen mit externen State-Channels) • Governance: On-Chain (Voting durch Coinholder) vs Off-Chain (Hard Fork durch Miner) Größte aktuelle Entwicklungen
  55. Kollisionen

  56. 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
  57. 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
  58. 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
  59. • 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!