Slide 1

Slide 1 text

Hyperledger Fabric Die Open-Source Basis für Ihre Blockchain Ingo Rammer [email protected]

Slide 2

Slide 2 text

Ingo Rammer Gründer und Geschäftsführer der Thinktecture AG, einem kleinen (20 Personen) technischen Beratungsunternehmen für Software- Architekten und –Entwickler Mein persönlicher Fokus: Blockchain Technologien für B2B-Verwendung, von den Tiefen der Technologie bis hin zu ISO TC 307, Enterprise Ethereum Alliance und Hyperledger Foundation Slides: https://thinktecture.com/presentations Kontakt: [email protected] Twitter: @ingorammer

Slide 3

Slide 3 text

• Wozu das Ganze? Warum private Blockchains? • Was ist Hyperledger, was ist Fabric? • Bausteine eines Fabric-Netzwerks • Transaktionsbehandlung in Fabric • Chaincode Grundlagen Agenda

Slide 4

Slide 4 text

• Gegenseitiges Vertrauen im B2B-Bereich grundsätzlich vorhanden (und vom jeweiligen Rechtssystem gedeckt) • Digitalisierung von analogen Papierprozessen über Firmengrenzen • Single Source of Truth – bei Prozessdaten und –schritten • Im Papierprozess komplex und mit Konsolidierungsaufwand • Zentrale Lösungen teilweise nur unter regulatorischem Zwang etabliert • ... und was passiert eigentlich, wenn wir Ländergrenzen überschreiten? • "Ja warum nehmt ihr denn nicht einfach eine replizierte Datenbank?" Private Blockchains?

Slide 5

Slide 5 text

• Klassische replizierte Datenbanken typischerweise entweder: • Single Writer, Multiple Readers • Oder komplexe Konsolidierungsregeln im Applikationscode (zB Couch DB) • Offene Fragen • Stabilität: Single Point of Failure des Single Writers • Vertrauen: Datenintegrität und Neutralität des Single Writers • Technologisch: Codeausführung, Versionierung, Berechtigungsmanagement • Datensparsamkeit: Oft zusätzliches Punkt-zu-Punkt Netzwerk notwendig • Governance: wer darf Daten austauschen? • Diese Fragen werden von Tools für private Blockchains adressiert Replizierte Datenbank?

Slide 6

Slide 6 text

• Hyperledger: ein Portfolio-Projekt der Linux Foundation für mehrere Blockchain-Technologien • Fabric: Eine Plattform um private, permissionierte Blockchain- Netzwerke aufzubauen • Fokus: B2B • Keine ICOs, öffentliche Cryptowährungen, … • Permissionierungs- und Governance-Konstrukte • Berechtigungen: Organisationen, federated Identity, … • Governance: Mehrheit, m-von-n, … • Private Daten: Channels, Private Data Collections • Das Backend für Blockchain-Angebote von IBM, SAP, Oracle, ... Was ist Hyperledger Fabric?

Slide 7

Slide 7 text

Das Szenario für heute ...

Slide 8

Slide 8 text

• "Dezentralisierte Portierung von Telefonnummern" • Mehrere Telekom-Unternehmen und ein Regulator (Bundesnetzagentur) sind Teilnehmer des Netzwerks • Smart Contract verarbeitet die aktuelle Inhaberschaft/Verantwortung für Telefonnummern (Mapping: Nummer-zu-Anbieter) Das Szenario für diese Session

Slide 9

Slide 9 text

Kernelemente eines Fabric Netzwerks

Slide 10

Slide 10 text

Organisationen: Teilnehmer des Netzwerks Telco 1 Telco 2 Regulator

Slide 11

Slide 11 text

Organisationen können Nodes betreiben Telco 1 Telco 2 Regulator

Slide 12

Slide 12 text

Organisationen verwalten jeweils ihre User Telco 1 Telco 2 Regulator MSP (Membership Service Provider): Zertifikaterstellung für User & Nodes

Slide 13

Slide 13 text

Channel 1 Channel 2 Nodes können Channels beitreten peer1.telco1.com peer1.telco2.com peer1.regulator.com

Slide 14

Slide 14 text

• Channels sind unabhängige Blockchains • Nur die Teilnehmer eines Channels sehen dessen Daten • Channels sind permissioniert • Transiente oder permanente Subsets: Private Data Collections • Smart Contracts werden pro Channel verwaltet Channels sind Blockchains

Slide 15

Slide 15 text

• Chaincode sind die Smart Contracts in Fabric • Auf ein Subset der Peers deployed • Versioniert und permissioniert • Greifen auf State DB (zB Couch DB) der lokalen Node zu Chaincode

Slide 16

Slide 16 text

Transaktionsfluss und Konsens in Fabric

Slide 17

Slide 17 text

Client app S D K O1 O2 O3 O4 E1 E2 E3 P2 P1 C1 C1 C2 C1 P E O C Endorser Orderer Peer (Committer) Chaincode

Slide 18

Slide 18 text

P E O C Endorser Orderer Peer (Committer) Chaincode Client app O1 O2 O3 O4 E1 E2 E3 P2 P1 C1 C1 C2 C1 Tx 1) Client erzeugt Transaction Proposal und sendet es an Endorser 2) Endorser simulieren Transaktion und signieren Read-/Write-Set Tx 3) Client sendet TX mit Endorse- ments an Orderer 4) Orderer inkludieren TX in einem folgenden Block 5) Orderer senden Block an Peers S D K 6) Peers validieren Endorsement & Concurrency. Nehmen Block in ihre Chains & State DBs auf Other app S D K 7) Peers senden Events an Subscriber

Slide 19

Slide 19 text

• Endorsement, Ordering, Validation • Endorsement: ein Subset der Peers entscheidet, ob Transaktion gültig ist (basierend auf Chaincode) • Ordering: Erzeugen einer Sequenz von Transaktionen; Verpacken in Blöcke • Validation: Vor dem finalen Commit prüft jeder Peer, ob Endorsement und Concurrency korrekt sind Dreistufiger Konsens

Slide 20

Slide 20 text

Smart Contracts in Fabric

Slide 21

Slide 21 text

• Lesen und schreiben Daten der State DB ("world state") auf lokaler Node, um Ledger-Änderungen zu verifizieren • Können in unterschiedlichen Sprachen entwickelt werden (GRPC Interface) • SDKs für Go, Node.js, Java; .NET in progress Fabric Chaincode Basiskonzepte

Slide 22

Slide 22 text

• Prüfen von Berechtigungen und/oder Eigentümerschaft von digitalen Assets • GetState von State DB • Ändern des World States in DB; Eigentümerschaft von digitalen Assets übertragen • PutState/DeleteState • Bereitstellen von Events an SDK Subscriber Programmieraufgaben bei Chaincode

Slide 23

Slide 23 text

const {Contract} = require('fabric-contract-api'); class SimpleContract extends Contract { constructor() { super('myContract'); } async myOperation(ctx, param1, param2) { // ... } } module.exports.contracts = [SimpleContract]; { chaincodeId: 'simplecontract', fcn: 'myContract:myOperation', args: ['10', 'abc'], // ... } Schnittstelle zu Fabric, für Interaktionen mit Transaktionsdaten und State DB

Slide 24

Slide 24 text

// reading values let someValue = await ctx.stub.getState('myKey'); // query multiple values let result = await ctx.stub.getQueryResult(...); // storing values let newValue = 1234; await ctx.stub.putState('myKey', Buffer.from(newValue.toString())); // setting an event await ctx.stub.setEvent('valuechanged', Buffer.from(newValue.toString())); // access the client's identity (transaction signer) if (ctx.clientIdentity.mspId == "Telco1") { ... }

Slide 25

Slide 25 text

Fabric Client Development (Node & Java SDKs)

Slide 26

Slide 26 text

Initialisieren des Clients let FabricClient = require('fabric-client'); let client = new FabricClient(); await client.createUser(/* ... supply cryptographic information */); let channel = client.newChannel('demochannel'); let peer = client.newPeer('grpc://localhost:7061'); await channel.initialize({discover: true, target: peer});

Slide 27

Slide 27 text

Aufrufen von Chaincode let txId = client.newTransactionID(); let proposalRequest = { txId: txId chaincodeId: 'simplecontract', fcn: 'myContract:myOperation', args: ['10', 'abc'], // everything is passed as string }; let result = await channel.sendTransactionProposal(proposalRequest); let request = { proposalResponses: result[0], proposal: result[1] }; let submissionResult = await channel.sendTransaction(request);

Slide 28

Slide 28 text

Chaincode Lifecycle

Slide 29

Slide 29 text

Chaincode Deployment peer1.telco1.com peer1.regulator.com Chaincode Package oder Quellcode Install (durch Admin einer Organisation) peer chaincode install <…> peer chaincode install <…> numbertransfer, v1 numbertransfer, v1

Slide 30

Slide 30 text

Chaincode Instantiation peer1.telco1.com peer1.regulator.com numbertransfer, v1 numbertransfer, v1 channel1 peer chaincode instantiate <…> numbertransfer:v1

Slide 31

Slide 31 text

• Chaincode wird paketiert und explizit auf einzelnen Peers installiert • Nicht alle Peers benötigen jeden Chaincode • Chaincode kann auf einem Peer in mehreren Versionen existieren • Chaincode wird pro Channel instanziiert • Instanziierung == Verknüpfung einer spezifischen Chaincode Version mit einem Channel, mit gleichzeitiger Definition einer spezifischen Endorsement Policy • Chaincode kann pro Channel upgraded werden (=> mit einer neuen Version verknüpft, die auf den Peers installiert wurde) Chaincode / Smart Contracts

Slide 32

Slide 32 text

• Nahezu jede Operation in Fabric ist permissioniert • Configurationsänderungen, Channel-Teilnahme, ... • Chaincode Endorsement Policies Berechtigungen und Policies AND ('Regulator1.Admin', OutOf(2, 'Telco1.Admin', 'Telco2.Admin', 'Telco3.Admin')) • Any, all, m-out-of, majority (für Config-Änderungen) • And, Or

Slide 33

Slide 33 text

• Bausteine eines Fabric-Netzwerks • Transaktionsbehandlung in Fabric • Chaincode und Client SDK Grundlagen –Smart Contracts in Fabric • Policies und Endorsement • ... warum private Blockchain-Netzwerke mehr bieten können, als reine replizierte Datenbanken. Fazit – das haben Sie gesehen

Slide 34

Slide 34 text

Danke! Slides: https://thinktecture.com/presentations Kontakt: [email protected] Twitter: @ingorammer