Blockchain Technologien für B2B-Verwendung Manuel Rauber Consultant bei Thinktecture AG @ingorammer, @manuelrauber [email protected], [email protected] https://thinktecture.com
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
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! ?
#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
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
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?
(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, ...)
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
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!
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
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.
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
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
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
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
Auswahlverfahren pro Block) • Vor allem bei Proof-of-Work Blockchains: • Kollisionen: Protokollspezifische Definition der korrekten Chain • Number of Confirmations!
à 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