hyperledger fabric deep dive · 2020-04-27 · 4 blockchain concepts •consider the business...

29
Hyperledger Fabric Deep Dive Understand the technology that underpins IBM Blockchain Platform V1.4, 24 January 2020 Barry Silliman Blockchain Enablement on IBM Z and LinuxONE IBM North America Technical Sales [email protected]

Upload: others

Post on 05-Aug-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Hyperledger Fabric Deep Dive · 2020-04-27 · 4 Blockchain concepts •Consider the business concepts that comprise blockchain solutions: – Assetsmodeled as data structures –

Hyperledger Fabric Deep DiveUnderstand the technology that underpins IBM Blockchain Platform

V1.4, 24 January 2020

Barry SillimanBlockchain Enablement on IBM Z and LinuxONEIBM North America Technical [email protected]

Page 2: Hyperledger Fabric Deep Dive · 2020-04-27 · 4 Blockchain concepts •Consider the business concepts that comprise blockchain solutions: – Assetsmodeled as data structures –

Hyperledger FabricConcepts and ComponentsUnderstand the technology that underpins IBM Blockchain Platform

OverviewThe very basics of Hyperledger Fabric

Page 3: Hyperledger Fabric Deep Dive · 2020-04-27 · 4 Blockchain concepts •Consider the business concepts that comprise blockchain solutions: – Assetsmodeled as data structures –

4

Blockchain concepts

• Consider the business concepts that comprise blockchain solutions:– Assets modeled as data structures– Contracts modeled as algorithms– Transactions modeled as invocations of algorithms– Business Networks modeled as peer-to-peer networks– Participants modeled as nodes on these networks

• IBM Blockchain Platform is based around Hyperledger Fabric• We will now look at how Hyperledger Fabric exposes these

business concepts to the blockchain developer

Page 4: Hyperledger Fabric Deep Dive · 2020-04-27 · 4 Blockchain concepts •Consider the business concepts that comprise blockchain solutions: – Assetsmodeled as data structures –

© 2020 IBM Corporation 5

A simple consensus example (1/4) – a puzzle!

• Situation: A presenter in a room with 100 people, 10 of whom are mathematicians!• Problem: Answer the question: What is the square root of 2401?• Question: Can everyone agree on an answer?

You are here!

Or here!

But not here ;)

a puzzlea processa problem

a policy

P

M M M M M

M M M M M

A

A

A

A

P

M

audience

mathematician

presenter

attendant

Page 5: Hyperledger Fabric Deep Dive · 2020-04-27 · 4 Blockchain concepts •Consider the business concepts that comprise blockchain solutions: – Assetsmodeled as data structures –

© 2020 IBM Corporation 6

A simple consensus example (2/4) – a process

Solution approach

1. The presenter asks every mathematician to calculate √24012. Every mathematician writes their answer on a piece of paper, signs with their (digital) signature3. The presenter collects every mathematician's signed response4. The room attendants distribute copies of the signed answer to every member of the audience5. Every audience member checks that every mathematician agrees the answer, or not!6. Everyone is happy; there is consensus!

P

M M M M MM M M M M

AAA

a puzzlea processa problem

a policy

Page 6: Hyperledger Fabric Deep Dive · 2020-04-27 · 4 Blockchain concepts •Consider the business concepts that comprise blockchain solutions: – Assetsmodeled as data structures –

© 2020 IBM Corporation 7

A simple consensus example (3/4) – a problem

Issues

1. How many mathematicians should the presenter ask?2. How many mathematicians need to agree for an answer to be correct?3. What happens if the mathematicians disagree on the answer, or the presenter selects a bad answer?

à Everyone needs to agree what constitutes a good answer

P

M M M M MM M M M M

AAA

a puzzlea processa problem

a policy

Page 7: Hyperledger Fabric Deep Dive · 2020-04-27 · 4 Blockchain concepts •Consider the business concepts that comprise blockchain solutions: – Assetsmodeled as data structures –

© 2020 IBM Corporation 8

A simple consensus example (4/4) – a policy

The importance of policy

1. The audience agrees on a policy for good answers2. Example policies:

– all mathematicians must agree– the majority of mathematicians must agree

à Using this policy everyone can now agree on what makes a good answer

P

M M M M MM M M M M

AAA

a puzzlea processa problem

a policy

Page 8: Hyperledger Fabric Deep Dive · 2020-04-27 · 4 Blockchain concepts •Consider the business concepts that comprise blockchain solutions: – Assetsmodeled as data structures –

9

Transaction Endorsement

Page 9: Hyperledger Fabric Deep Dive · 2020-04-27 · 4 Blockchain concepts •Consider the business concepts that comprise blockchain solutions: – Assetsmodeled as data structures –

© 2020 IBM Corporation 10

Hyperledger Fabric multi-party transactions

• A transaction describes a change to a system Examples:– a change in bank balance– a student receives an academic qualification– a parcel is delivered

• Traditionally transactions are signed by a single organization– a bank signs payment transactions– a university signs graduation transactions– a logistics company signs parcel receipt transactions

• Multi-party transactions are the heart of Hyperledger Fabric– e.g. buyer and seller both sign car transfer transaction– e.g. logistics and delivery companies both sign parcel transaction

• Understand multi-party transactions and you will understand Fabric!

car transfer transaction:

identifier: 1234567890

proposal: input: {CAR1, seller, buyer} signature: input*seller

response: output:

{CAR1.oldOwner=seller, CAR1.newOwner=buyer}

signatures:output*selleroutput*buyer

A transaction to transfer a car is signed by both the buyer and the seller

Page 10: Hyperledger Fabric Deep Dive · 2020-04-27 · 4 Blockchain concepts •Consider the business concepts that comprise blockchain solutions: – Assetsmodeled as data structures –

Hyperledger FabricConcepts and ComponentsUnderstand the technology that underpins IBM Blockchain Platform

OverviewThe very basics of Hyperledger Fabric

Page 11: Hyperledger Fabric Deep Dive · 2020-04-27 · 4 Blockchain concepts •Consider the business concepts that comprise blockchain solutions: – Assetsmodeled as data structures –

12

Hyperledger Fabric Components and Concepts

• Peers

• Ledgers

• Channels

• Applications

• Policies

• Smart Contracts

• Certificate Authorities

• Ordering Service

P1L

P2L

ORG 1

A1 CA1

PS

O5O4O3O2O1

C

Page 12: Hyperledger Fabric Deep Dive · 2020-04-27 · 4 Blockchain concepts •Consider the business concepts that comprise blockchain solutions: – Assetsmodeled as data structures –

© 2020 IBM Corporation

A Hyperledger Fabric network

• A Hyperledger Fabric network comprises a set of nodes

• The most common type of node is a peer– Peers are owned by different organizations– Organizations can own any number of nodes (2 or 3 is common)

• Peers are connected using channels– The channel defines the scope of your network– Each channel has a single ledger that is replicated to every peer that is a member of it

P1 P2

ORG 1

P3 P4

ORG 2

P5 P6

ORG 3

C

Page 13: Hyperledger Fabric Deep Dive · 2020-04-27 · 4 Blockchain concepts •Consider the business concepts that comprise blockchain solutions: – Assetsmodeled as data structures –

© 2020 IBM Corporation

The network is governed using policies

• Organizations in a consortium agree to form a network using a set of policies

• A network's policies encode each organization's rights, like a constitutionExamples:– Every organization has the same authority over the network– All organizations must agree on any change to the network– A majority of organizations must agree on any change

to the network– A majority of organizations including a particular

organization must agree a change

• Transition between constitutions possible with agreement

• Hyperledger Fabric uses identity and policy throughout– Just like real world relationships between organizations

ORG 1

ORG 2

ORG 3

ORG 4ORG 5

ORG 6

ORG 7✓

✓ ✓

Page 14: Hyperledger Fabric Deep Dive · 2020-04-27 · 4 Blockchain concepts •Consider the business concepts that comprise blockchain solutions: – Assetsmodeled as data structures –

© 2020 IBM Corporation

Understanding the ledger

• The ledger comprises two data structures– A blockchain: an immutable log of transactions

shared across the peers in the network– A world state: a database of current asset

values, derived from the blockchain

• Smart contracts read to and write from the world state(they are like database stored procedures)

• Applications submit transactions, each of which asks the network to invoke a smart contract with a set of parameters. Transaction order & output is agreed on by the network through consensus.

• World state may be complemented by private data collections

A1

Smart ContractaddCar(…) { putState(…) }queryCar(…) { return getState(…) }

Applicationcontract.submitTransaction(

‘addCar’, ‘CAR2’, ‘Arium’, …);

ORG 1

READ {}WRITE {‘CAR2’, …};SIGNED BY ORG1Blockchain

Transactions

CAR1 = {…}CAR2 = {‘Arium’, …}CAR3 = {…}

World state

Current values

P1

Ledger

Page 15: Hyperledger Fabric Deep Dive · 2020-04-27 · 4 Blockchain concepts •Consider the business concepts that comprise blockchain solutions: – Assetsmodeled as data structures –

© 2020 IBM Corporation

An example ledger showing private and public state

Blockchain

PUBLIC to all orgs

all cars

CAR1: {TESLA, MODEL S , 2019, REG1}

CAR2: {FORD, F150, 2016, REG2}

CAR3: {PEUGEOT, 205GT, 1987, REG3}

CAR4: {HONDA, CIVIC, 2001, REG4}

PRIVATE to DMV, Police

car owners

CAR1: {JERRY CUOMO}

CAR2: {ERIKA PEREZ}

CAR3: {ANDY CARELLI}

CAR4: {GARI SINGH}

PRIVATE to Police

CAR1: {REG1, STOLEN}

CAR4: {REG4, SPEEDING, NYC}

PUBLIC to all orgs

view: year<2000

CAR3: {REG3, 1987}

T1Buy CAR1

T2Register CAR3

T3Scrap CAR4

T4Sell CAR1

T5Sell CAR2

T6Log stolen CAR1

Page 16: Hyperledger Fabric Deep Dive · 2020-04-27 · 4 Blockchain concepts •Consider the business concepts that comprise blockchain solutions: – Assetsmodeled as data structures –

© 2020 IBM Corporation

The basic structure of the client application

• Building an application that interacts with a Hyperledger Fabric network is extremely simple:

1. Connect to a gateway using an identity from a wallet

2. Select an available network and smart contract

3. Submit transactions and check their responses

4. Disconnect from the gateway

• The complexity of dealing with the network (e.g., consensus) is hidden from the application programmer

– All interactions are through a Software Development Kit (SDK)

P1

A1

ORG 1

SP2

S

Page 17: Hyperledger Fabric Deep Dive · 2020-04-27 · 4 Blockchain concepts •Consider the business concepts that comprise blockchain solutions: – Assetsmodeled as data structures –

© 2020 IBM Corporation

How applications query the ledger• Querying the ledger is the simplest operation an application can perform!

– They can query any peer's ledger to determine the value of an object; every instance is the same!– Applications typically query their own organization's peers

P1 P2

ORG 1

A2

P3 P4

ORG 2

A3

P5 P6

ORG 3

car1 = contract.evaluateTransaction(‘queryCar’, ‘CAR1’);

A1{”color”:”blue”,... }

S S S

Page 18: Hyperledger Fabric Deep Dive · 2020-04-27 · 4 Blockchain concepts •Consider the business concepts that comprise blockchain solutions: – Assetsmodeled as data structures –

© 2020 IBM Corporation

How applications submit transactions to the network• Applications invoke smart contracts installed on endorsing peers to create multi-party transactions• Ordering service groups endorsed transactions into blocks which are distributed to every peer• Every peer validates every transaction using the smart contract's endorsement policy

P1 P2

ORG 1

P3 P4

ORG 2

P5 P6

ORG 3

contract.submitTransaction(‘addCar’, ‘CAR2’, ‘Arium’, …);

A1 Ordering service ORG(s)

O1 O2 O3 Other apps

SP

S

* *****

SS

*

READ {}WRITE {‘CAR2’, …};SIGNED BY ORG1

READ {}WRITE {‘CAR2’, …};SIGNED BY ORG1, ORG2

READ {}WRITE {‘CAR2’, …};SIGNED BY ORG2

ORG1+ORG2MUST SIGN

© 2020 IBM Corporation

How applications submit transactions to the network

• Applications use smart contracts installed on endorsing peers to create multi-party txs• Ordering Service groups transactions into blocks which are distributed to every node• Every peer validates every transaction using the smart contract's endorsement policy

P1 P2

ORG 1

P3 P4

ORG 2

P5 P6

ORG 3

contract.submitTransaction(‘addCar’, ‘CAR2’, ‘Arium’, …);

A1 Ordering Service ORG(s)

O1 O2 O3 Other apps

SP

S SS

1

READ {}WRITE {‘CAR2’, …};SIGNED BY ORG1, ORG2

ORG1+ORG2MUST SIGN

3 4

5 5 5 5 5 5

6 6 6 6 6 6

7

1. Propose2. Execute3. Submit4. Create block5. Validate6. Update7. Notify

2 2

Page 19: Hyperledger Fabric Deep Dive · 2020-04-27 · 4 Blockchain concepts •Consider the business concepts that comprise blockchain solutions: – Assetsmodeled as data structures –

© 2020 IBM Corporation

Understanding application gateways• Network topology constantly changing

– Peers, Orderers, CAs, smart contracts, ledgers

• Gateways isolate business logic from topology – Allows client applications to focus on the

WHAT not the HOW– A conceptual part of the client SDK

• Gateways handle all interaction with the network1. Client SDK uses a connection profile to specify

the location of a peer2. Peer returns available network services (e.g.,

peers, smart contracts) to gateway3. Through the gateway object, the client SDK

interacts with the channel’s services

ORG 1 ORG 2

A1

const connectionProfile = yaml.safeLoad('../gateway/driveNet.yaml');const connectionOptions = {..., commitTimeout: 100,... };

const gateway = new Gateway(); await gateway.connect(connectionProfile, connectionOptions);

Gateway

P1 P2 P3

Connection Profile

Page 20: Hyperledger Fabric Deep Dive · 2020-04-27 · 4 Blockchain concepts •Consider the business concepts that comprise blockchain solutions: – Assetsmodeled as data structures –

21

Connecting to multiple networks

• Applications can work with multiple networks at once– Each gateway instance can connect to multiple

channels– All instantiated smart contracts accessible on

the channel– Submit and evaluate multiple transactions– Can also connect to multiple gateways from

within the same application

• Each network instance can use aseparate identity

const network1 = await gateway.getNetwork('PaperNet');const network2 = await gateway.getNetwork('BondNet');

const euroContract = await network1.getContract('EuroCommercialPaperContract');const bondContract = await network2.getContract('BondContract');

const issueResponse = await euroContract.submitTransaction('issue', 'MagnetoCorp'...);const sellResponse = await bondContract.submitTransaction('sell', 'BOND007'...)

ORG 1 ORG 2

A1

Gateway

P1 P3P2PaperNet

BondNet

Page 21: Hyperledger Fabric Deep Dive · 2020-04-27 · 4 Blockchain concepts •Consider the business concepts that comprise blockchain solutions: – Assetsmodeled as data structures –

© 2020 IBM Corporation

The importance of identity

P1 P2

ORG 1

P3 P4

ORG 2

P5 P6

ORG 3

• Every component has an associated X.509 identity issued by its organization's Certificate Authority• The component uses its identity to determine its organizational role• This role determines the level of access it has to network resources, e.g., read/write the ledger

CA1 CA2 CA3A1 A2

O1 O2 O3CA4

Ordering ORG(s)

A3

Page 22: Hyperledger Fabric Deep Dive · 2020-04-27 · 4 Blockchain concepts •Consider the business concepts that comprise blockchain solutions: – Assetsmodeled as data structures –

© 2020 IBM Corporation

Understanding wallets• Wallets store the identities available to a component• Applications can use multiple wallets & identities• Applications connect to gateway with identity, as part of gateway connection options• Membership Services Provider (MSP) uniquely identifies the identities and roles for a channel

P1 P2

ORG 1

CA1A1

1 2 3

P3 P4

ORG 2

CA2A2

4

ORG1.admin

ORG1.member

ORG2.member

1

2

4

41

MSP

Wallet Walletconst userName = ‘[email protected]';const wallet = new FileSystemWallet('../matt/wallet');

const connectionOptions = { identity: userName,wallet: wallet, …};

await gateway.connect(connectionProfile, connectionOptions);

Page 23: Hyperledger Fabric Deep Dive · 2020-04-27 · 4 Blockchain concepts •Consider the business concepts that comprise blockchain solutions: – Assetsmodeled as data structures –

24

Fine-tuning connection options• Gateway connections can be customized

using connection options– wallet and identity must be set by app– All other options have sensible defaults

• Strategies codify most popular behaviour– e.g., "wait for any/all peers in my organization"

• EventStrategies.MSPID_SCOPE_ANYFORTX• EventStrategies.MSPID_SCOPE_ALLFORTX

• Handlers for programmable interactions– User function gets control at appropriate point in

transaction lifecycle with relevant topology - i.e., peers• e.g. startListening(), waitForEvents(), cancelListening()...

– Keeps handler logic separate from business logic– Advanced feature; only required for special scenarios

ORG 1

A1

Gateway

ConnectionOptions

P1 P2

1Connection

Profile

Additional Options

Gateway.Builder builder = Gateway.createBuilder();

builder.commitHandler(DefaultCommitHandlers.MSPID_SCOPE_ANYFORTX);

builder.identity(wallet,"admin").networkConfig(networkConfigPath);

Gateway gateway = builder.connect());

Page 24: Hyperledger Fabric Deep Dive · 2020-04-27 · 4 Blockchain concepts •Consider the business concepts that comprise blockchain solutions: – Assetsmodeled as data structures –

© 2020 IBM Corporation 25

Bringing it all together: a client application example

Path walletPath = Paths.get("wallet"); Wallet wallet = Wallet.createFileSystemWallet(walletPath); // Access file wallet

Path networkConfigPath = Paths.get("..", "..", "paper-network", "connection.json"); // Identify a network using a CCP

Gateway.Builder builder = Gateway.createBuilder(); // Create gateway to the networkbuilder.commitHandler(DefaultCommitHandlers.MSPID_SCOPE_ANYFORTX); // One peer from my organization to replybuilder.identity(wallet, "admin").networkConfig(networkConfigPath);

try (Gateway gateway = builder.connect()) { // connect to the gateway

Network network = gateway.getNetwork("market1234"); // get the networkContract contract = network.getContract("commercial-paper"); // get contract in network

String paper = contract.submitTransaction("issue", "IBM", "1000000", "2019-10-31") // issue paper by IBM

contract.submitTransaction("move", paper, "ACME", "900000")) // sell paper to ACME

} catch (Exception ex) {ex.printStackTrace();

}

Page 25: Hyperledger Fabric Deep Dive · 2020-04-27 · 4 Blockchain concepts •Consider the business concepts that comprise blockchain solutions: – Assetsmodeled as data structures –

© 2020 IBM Corporation 26

Programming smart contracts• A smart contract governs the lifecycle of an object. e.g., createCar, queryCar, updateCar, scrapCar...• Implemented as a class; method contains relevant transaction logic in JavaScript, TypeScript, Java & Go*• Installed on relevant organizations’ peer(s). Execution results in a digitally signed transaction response.

@Contract(name="org.papernet.commercialpaper")@Defaultclass CommercialPaper implements ContractInterface {

public Context createContext(ChaincodeStub stub) {return new CommercialPaperContext(stub);

}

@Transactionpublic CommercialPaper issue(

CommercialPaperContext ctx,String issuer,String value,String date,int faceValue) {

// Interact with the ledgergetState(existingPaper);putState(newPaper);...

* Go under development

Page 26: Hyperledger Fabric Deep Dive · 2020-04-27 · 4 Blockchain concepts •Consider the business concepts that comprise blockchain solutions: – Assetsmodeled as data structures –

© 2019 IBM Corporation 27

Getting Started with Hyperledger Fabric

• The IBM Blockchain Platform makes it easy to get started with Hyperledger Fabric• Download VSCode developer tool from VSCode marketplace. Linux, Windows and MacOS)• Create local networks, smart contracts and applications. Move to multi-cloud when you're ready!

https://marketplace.visualstudio.com/items?itemName=IBMBlockchain.ibm-blockchain-platform

Page 27: Hyperledger Fabric Deep Dive · 2020-04-27 · 4 Blockchain concepts •Consider the business concepts that comprise blockchain solutions: – Assetsmodeled as data structures –

28

Summary

• The Hyperledger Fabric transaction– Structure drives system design and application architecture

• Smart contract– Contains transaction definitions for entire lifecycle of

business object(s) stored in a decentralized ledger– built-in contract class makes programming easy

• Application– Consensus is complex, but the SDK makes it easy for

applications– submitTransaction(), evaluateTransaction(), addListener()– gateway connectionOptions for ultimate customizability

Page 28: Hyperledger Fabric Deep Dive · 2020-04-27 · 4 Blockchain concepts •Consider the business concepts that comprise blockchain solutions: – Assetsmodeled as data structures –

Thank youBarry SillimanBlockchain Enablement on IBM Z and LinuxONEIBM North America Technical [email protected]

www.ibm.com/blockchain

developer.ibm.com/blockchain

www.hyperledger.org

© Copyright IBM Corporation 2020. All rights reserved. The information contained in these materials is provided for informational purposes only, and is provided AS IS without warranty of any kind, express or implied. Any statement of direction represents IBM's current intent, is subject to change or withdrawal, and represents only goals and objectives. IBM, the IBM logo, and other IBM products and services are trademarks of the International Business Machines Corporation, in the United States, other countries or both. Other company, product, or service names may be trademarks or service marks of others.

Page 29: Hyperledger Fabric Deep Dive · 2020-04-27 · 4 Blockchain concepts •Consider the business concepts that comprise blockchain solutions: – Assetsmodeled as data structures –