This document outlines steps for completing two Hyperledger Composer workshops on deploying and testing sample business networks. The first lab guides users through deploying an existing car auction sample network on the Composer playground and testing basic transactions. The second lab instructs users to create their own business network by defining assets, participants and transactions.
1. Blockchain Hyperledger Composer Workshop
Joël Viale – Solution Architect, Blockchain
IBM Global Industry Solutions Center
Joel.viale@fr.ibm.com
Meetup
October 4th 2018
2. Introduction on Hyperledger:
- HL Fabric
- HL Composer
What’s Next?
Lab 1 – Deploy and test a
sample business network
Lab 2 – Create your own
business network
3. Introduction on Hyperledger:
- HL Fabric
- HL Composer
What’s Next?
Lab 1 – Deploy and test a
sample business network
Lab 2 – Create your own
business network
4. 4
Choosing what to share
The business network decides what to share on the ledger
• Assets are anything of value
– On the blockchain, these are represented
digitally using a pre-agreed format
• Transactions change the state of an asset and
are provably recorded on the blockchain
– e.g. transfer ownership, change color
• Transactions are underpinned by smart contracts
– Verifiable business rules that cause the
asset to change state
5. 5
Hyperledger: A Linux Foundation project
• IBM Blockchain Platform is underpinned by technology
from the Hyperledger project
• Hyperledger is a collaborative effort created to advance
cross-industry blockchain technologies for business
• Founded February 2016; now more than 250 member
organizations
• Open source
Open standards
Open governance model
Source: https://www.hyperledger.org/members
Updated: 17 September 2018
Premier
General
Associate
Academia Associate
6. 6
Distributed ledger
• An implementation of blockchain technology that is
a foundation for developing blockchain applications
• Emphasis on ledger, smart contracts, consensus,
confidentiality, resiliency and scalability.
• V1.2 released July 2018
– Includes significant confidentiality and
service discovery improvements
• IBM is one of the many contributing organizations
Fabric Explored
7. 7
Ledger
…
The blockchain developer
Blockchain
Developer
D
f(abc);
Smart
Contract
Blockchain developers’ primary interests are…
They should NOT have to care about operational concerns, such as:
Peers Consensus
…and how they interact with the ledger and other systems of record:
Systems
IntegrationEvents
!
Traditional
Data
Sources
Traditional
Processing
Platforms
Application
X Security
8. 8
A ledger often consists of two data structures
• Blockchain
o A linked list of blocks
o Each block describes a set of transactions
(e.g. the inputs to a smart contract invocation)
o Immutable – blocks cannot be tampered
• World State
o An ordinary database (e.g. key/value store)
o Stores the combined outputs of all transactions
o Not usually immutableWorld state
block
txn txn txn
Blockchain
9. 9
Block detail (simplified)
- A blockchain is made up of a series of blocks with new blocks always added to the end
- Each block contains zero or more transactions and some additional metadata
- Blocks achieve immutability by including the result of a hash function of the previous block
- The first block is known as the “genesis” block
Block 16
Previous Block Hash:
57ec2fda71
Block Hash: 87ea2ffe94Block Hash: 57ec2fda71
Block 15
Previous Block Hash:
d68b2f0a3b
Block 17
Previous Block Hash:
87ea2ffe94
Block Hash: 44bf2efe32
Transaction
Transaction
Transaction
Transaction
TransactionTransaction
…
…
10. 10
Working with the ledger example: a change of
ownership transaction
World state
Transaction input - sent from application
invoke(myContract, setOwner,
myCar, Matt)
…
myCar.vin = 1234
myCar.owner = Matt
myCar.make = Audi
…
World state: new contents
Smart contract implementation
setOwner(Car, newOwner) {
set Car.owner = newOwner
}
txn txn txnmyCar.vin =
1234, ...
“Invoke, myContract,
setOwner, myCar, Matt”
Application
f(abc);
Smart
Contract
11. 11
Integrating with existing systems – possibilities
Transform
Existing
systems
1. System
events
2. Blockchain
events
3. Call into blockchain network
from existing systems
Blockchain network Existing
systems
!
!
12. 12
Hyperledger Fabric V1 Architecture
Client
Application
SDK
(HFC)
Membership
Services
Peer
Endorser
Ledger
Committer
A
Chaincode B
!Events
Ordering-Service
O
O O
O
✓
Fabric-CA
✓
External-CA
Hyperledger Fabric Network
optionaloptional
Admin
13. 13
Application proposes transaction
Endorsement policy:
• “E0, E1 and E2 must sign”
• (P3, P4 are not part of the policy)
Client application submits a transaction
proposal for Smart Contract A. It must
target the required peers {E0, E1, E2}
Sample transaction: Step 1/7 – Propose transaction
E0
E1
E2
Client
Application
S
D
K
Endorser Ledger
Committing
Peer
Application
Ordering Node
Smart Contract
(Chaincode)
Endorsement
Policy
Key:
Hyperledger Fabric Network
Ordering-Service
O
O O
OP
P4P3
A
B
A
B
A
B
A
D
14. 14
Sample transaction: Step 2/7 – Execute proposal
Endorsers Execute Proposals
E0, E1 & E2 will each execute the
proposed transaction. None of these
executions will update the ledger
Each execution will capture the set of
Read and Written data, called RW sets,
which will now flow in the fabric.
Transactions can be signed & encrypted
Key:
Hyperledger Fabric Network
Ordering-Service
Endorser Ledger
Committing
Peer
Application
Ordering Node
Smart Contract
(Chaincode)
Endorsement
Policy
O
O O
O
E0
E1
E2
P
P4P3
A
B
A
B
A
B
A
D
Client
Application
S
D
K
15. 15
Sample transaction: Step 3/7 – Proposal Response
Application receives responses
RW sets are asynchronously returned to
application
The RW sets are signed by each
endorser, and also includes each record
version number
(This information will be checked much
later in the consensus process)
Key:
Hyperledger Fabric Network
Ordering-Service
Endorser Ledger
Committing
Peer
Application
Ordering Node
Smart Contract
(Chaincode)
Endorsement
Policy
O
O O
O
E0
E1
E2
P
P4P3
A
B
A
B
A
B
A
D
Client
Application
S
D
K
16. 16
Sample transaction: Step 4/7 – Order Transaction
Responses submitted for ordering
Application submits responses as a
transaction to be ordered.
Ordering happens across the fabric in
parallel with transactions submitted by
other applications
(other applications)
Key:
Hyperledger Fabric Network
Ordering-Service
Endorser Ledger
Committing
Peer
Application
Ordering Node
Smart Contract
(Chaincode)
Endorsement
Policy
O
O O
O
E0
E1
E2
P
P4P3
A
B
A
B
A
B
A
D
Client
Application
S
D
K
17. 17
Hyperledger Fabric Network
Ordering-Service
Sample transaction: Step 5/7 – Deliver Transaction
Orderer delivers to committing peers
Ordering service collects transactions
into proposed blocks for distribution to
committing peers. Peers can deliver to
other peers in a hierarchy (not shown)
Different ordering algorithms available:
• SOLO (Single node, development)
• Kafka (Crash fault tolerance)
O
O O
O
*
Key:
Endorser Ledger
Committing
Peer
Application
Ordering Node
Smart Contract
(Chaincode)
Endorsement
Policy
E0
E1
E2
P
P4P3
A
B
A
B
A
B
A
D
Client
Application
S
D
K
18. 18
Hyperledger Fabric Network
Ordering-Service
Sample transaction: Step 6/7 – Validate Transaction
Committing peers validate transactions
Every committing peer validates against
the endorsement policy. Also check RW
sets are still valid for current world state
Validated transactions are applied to the
world state and retained on the ledger
Invalid transactions are also retained on
the ledger but do not update world state
Endorser Ledger
Committing
Peer
Application
Ordering Node
Smart Contract
(Chaincode)
Endorsement
Policy
Key:
O
O O
O
E0
E1
E2
P
P4P3
A
B
A
B
A
B
A
D
Client
Application
S
D
K
* * *
*
*
19. 19
Client
Application
S
D
K
Hyperledger Fabric Network
Ordering-Service
Sample transaction: Step 7/7 – Notify Transaction
Committing peers notify applications
Applications can register to be notified
when transactions succeed or fail, and
when blocks are added to the ledger
Applications will be notified by each peer
to which they are connected!
!
!
!
! !
Key:
Endorser Ledger
Committing
Peer
Application
Ordering Node
Smart Contract
(Chaincode)
Endorsement
Policy
O
O O
O
E0
E1
E2
P
P4P3
A
B
A
B
A
B
A
D
20. Introduction on Hyperledger:
- HL Fabric
- HL Composer
What’s Next?
Lab 1 – Deploy and test a
sample business network
Lab 2 – Create your own
business network
21. 21
Business Application
Hyperledger Composer
Blockchain (Hyperledger Fabric)
– A suite of high level application abstractions for business networks
– Emphasis on business-centric vocabulary for quick solution creation
– Reduce risk, and increase understanding and flexibility
– Features
– Model your business networks, test and expose via APIs
– Applications invoke APIs transactions to interact with business network
– Integrate existing systems of record using loopback/REST
– Fully open and part of Linux Foundation Hyperledger
– Try it in your web browser now: http://composer-playground.mybluemix.net/
https://hyperledger.github.io/composer/
Hyperledger Composer: Accelerating time to value
22. 22
• Services that interact with the
registries
• Create, delete, update,
query and invoke smart
contracts
• Implemented inside
business applications,
integration logic and
REST services
• Hosted by the Business
Application Consumer
• Implements the logic deployed to
the blockchain
• Models describe assets,
participants & transactions
• Transaction processors
provide the JavaScript
implementation of
transactions
• ACLs define privacy rules
• May also define events and
registry queries
• Provides the front-end for
the end-user
• May be several of
these applications
• Interacts with business
logic via standard
interfaces (e.g. REST)
• Composer can generate
the REST interface from
model and a sample
application
Business Logic Presentation Logic
Three main components to develop
Smart Contracts
23. 23
Assets, Participants and Transactions
Vehicle Vehicle
Listing AuctioneerMember
Place Offer
Close Bidding
Transaction
Processors
24. 24
– It is possible to restrict which resources can be read
and modified by which participants
– Rules are defined in an .acl file and deployed with
the rest of the model
– Transaction processors can also look up the
current user and implement rules
programmatically
– ACL rules can be simple (e.g. everybody can read all
resources) or more complex (e.g. only the owner of an
asset can do everything to it)
– Application supplies credentials (userid/secret) of the
participant when connecting to the Fabric network
– This also applies to Playground!
– Remember to grant System ACL all access if
necessary
Access Control
25. 25
– Events allow applications to take action when a transaction occurs
– Events are defined in models
– Events are emitted by transaction processor scripts
– Events are caught by business applications
– Caught events include transaction ID and other relevant information
– Queries allow applications to perform complex registry searches
– They can be statically defined in a separate .qry file or generated
dynamically by the application
– They are invoked in the application using buildQuery() or query()
– Queries require the blockchain to be backed by CouchDB
Events and Queries
26. 26
– Web tool for defining and testing Hyperledger
Composer models and scripts
– Designed for the application developer
– Define assets, participants and
transactions
– Implement transaction processor scripts
– Test by populating registries and
invoking transactions
– Deploy to instances of Hyperledger Fabric V1,
or simulate completely within browser
– Install on your machine or run online at
http://composer-playground.mybluemix.net
Smart Contract Development: Composer Playground
27. 27
– Business Network Archive (.BNA) is a package of the
resources used by Fabric:
– Model files (.CTO)
– Transaction processors (.JS)
– Access Control Lists (.ACL)
– Static queries (.QRY)
– Documentation and versioning (.MD)
– It does not contain the client application
– The BNA simplifies deployment of blockchain and
promotion between environments
– c.f. TAR, WAR, EAR, JAR, BAR…
– Create BNA files from Playground or command line
– Build from filesystem or NPM module
model.cto logic.js
Business Network Archive
readme.mdqueries.qry
?
permissions.acl
composer archive create –archiveFile my.bna
--sourceType module --sourceName myNetwork
Resources are then packaged into a BNA file
28. 28
– Manage cards from both Playground and command-line
– Create, delete, export, import, list
– Create requires userid/secret or certificate/private key
– Use cards to connect to Fabric from Playground,
command-line or from within your application
Business Network Cards
– Business Network Cards are a convenient packaging of identity and connection profile
– Contains everything you need to connect to blockchain business network
– Each card refers to a single participant and single business network
– Analogous to an ATM card
composer network install -a my.bna -c my.card
29. 29
– Domain specific APIs very attractive to mobile and web
developers. Resources and operations are business-
meaningful
– Composer exploits Loopback framework to create REST
APIs: https://loopback.io/
– Extensive test facilities for REST methods using loopback
– Secured using JS Passport, giving >400 options for
authentication
– Composer provides back-end integration with any
loopback compatible product
– e.g. IBM Integration Bus, API Connect, StrongLoop
– Outbound and Inbound (where supported by
middleware)
Systems of Record Integration
30. 30
– Define, Test and Deploy Business Networks
– Create domain APIs and sample applications
– Integrate existing systems and data
https://hyperledger.github.io/composer/
http://composer-playground.mybluemix.net/
Get started with Hyperledger Composer
31. Introduction on Hyperledger:
- HL Fabric
- HL Composer
What’s Next?
Lab 1 – Deploy and test a
sample business network
Lab 2 – Create your own
business network
32. 32
– Connect to Composer Web Playground (Online):
– Deploy an existing sample
– Test some transactions
Access the latest Composer tutorials at:
https://hyperledger.github.io/composer/latest/tutorials/playground-tutorial.html
Lab 1 Content
33. 33
– Open the URL: https://composer-playground.mybluemix.net
– You should see the My Business Networks screen. The My Business Networks
page shows you a summary of the business networks you can connect to, and the
identities you can use to connect to them.
– Don't worry about this too much for the time being, as you're going to test an
existing network
Step One: Open the Hyperledger Composer Playground
34. 34
– Click “Deploy a new business network” under the Web Browser heading to get
started.
– For this first lab, you’re going to deploy an existing example
– Under “2. Model Network Starter Template”, select “carauction-network”
– This will automatically fill the required basic information of your network. You can still
override those values
– Click Deploy
Step Two: Instantiating an existing business network
35. 35
– Now that you've created and deployed the business network, you should see a new
business network card called admin for your business network carauction-network in
your wallet. The wallet can contain business network cards to connect to multiple
deployed business networks.
– When connecting to an external blockchain, business network cards represent
everything necessary to connect to a business network. They include connection
details, authentication material, and metadata.
– To connect to our business network click Connect now under your business
network card.
Step Three: Connecting to the business network
36. 36
– Go to the “Test” tab
– Click on “Auctioneer” on the left
– Click on “+ Create New Participant”
– Use the following payload:
{"$class": "org.acme.vehicle.auction.Auctioneer", "email": "auction@acme.org",
"firstName": "Jenny", "lastName": "Jones" }
– Click “Create New” in the bottom
Step Four: Test your business network
4.1. Create an ‘Auctioneer’
37. 37
– Repeat the same procedure to create 2 new participants of type “Member”
– Use the following payloads:
{ "$class": "org.acme.vehicle.auction.Member", "balance": 5000, "email":
"memberA@acme.org", "firstName": "Amy", "lastName": "Williams" }
{ "$class": "org.acme.vehicle.auction.Member", "balance": 5000, "email":
"memberB@acme.org", "firstName": "Billy", "lastName": "Thompson" }
Step Four: Test your business network
4.2. Create two new ‘Member’
38. 38
– Repeat the same procedure to create one new asset of type “Vehicle”
– Use the following payload:
{ "$class": "org.acme.vehicle.auction.Vehicle", "vin": "vin:1234", "owner":
"resource:org.acme.vehicle.auction.Member#memberA@acme.org" }
Step Four: Test your business network
4.3. Create one ‘Vehicle’
39. 39
– Repeat the same procedure to create one new asset of type “VehicleListing”
– Use the following payload:
{ "$class": "org.acme.vehicle.auction.VehicleListing", "listingId": "listingId:ABCD",
"reservePrice": 3500, "description": "Arium Nova", "state": "FOR_SALE", "vehicle":
"resource:org.acme.vehicle.auction.Vehicle#vin:1234" }
Step Four: Test your business network
4.4. Create one ‘Vehicle’
40. 40
– As soon as a VehicleListing has been created (and is in the FOR_SALE state)
participants can submit Offer transactions to bid on a vehicle listing.
– On the “Test” tab, click on “SubmitTransaction” in the bottom left
– Select “Offer” from the dropdown list as the Transaction Type
– Use the following payload:
{ "$class": "org.acme.vehicle.auction.Offer", "bidPrice": 2000, "listing":
"resource:org.acme.vehicle.auction.VehicleListing#listingId:ABCD", "member":
"resource:org.acme.vehicle.auction.Member#memberA@acme.org" }
– Repeat the same for:
{ "$class": "org.acme.vehicle.auction.Offer", "bidPrice": 3500, "listing":
"resource:org.acme.vehicle.auction.VehicleListing#listingId:ABCD", "member":
"resource:org.acme.vehicle.auction.Member#memberB@acme.org" }
Step Four: Test your business network
4.5. Submit an ‘Offer’ transaction
41. 41
– To indicate the auction is now closed, submit the “CloseBidding” transaction
– Use the following payload:
{ "$class": "org.acme.vehicle.auction.CloseBidding", "listing":
"resource:org.acme.vehicle.auction.VehicleListing#listingId:ABCD" }
Step Four: Test your business network
4.6. End the auction
42. 42
– To see the Vehicle was sold you need to click on the Vehicle asset registry to check
the owner of the car.
– The reserve price was met by owner memberB@acme.org so you should see the
owner of the vehicle is now memberB@acme.org.
– If you check the state of the VehicleListing with listingId:ABCD is should be SOLD.
– If you click on the Member asset registry you can check the balance of each User.
– You should see that the balance of the buyer memberB@acme.org has been
debited by 3500
– whilst the balance of the seller memberA@acme.org has been credited with 3500
Congratulations!
Step Four: Test your business network
4.7. See the results of the auction
43. 43
– Now that transactions have successfully run, you can log out of the business
network, ending up at the My Business Network screen where you started.
– In the upper-right of the screen is a button labelled admin. This lists your current
identity
– To log out, click admin to open the dropdown menu, and click My Business
Networks
– You can use this to navigate back and forth between your different networks
Logging out of the business network
44. Introduction on Hyperledger:
- HL Fabric
- HL Composer
What’s Next?
Lab 1 – Deploy and test a
sample business network
Lab 2 – Create your own
business network
45. 45
– Purpose of Lab 2
– Below are some recommendations on selecting the right use-case
Next step 1: Create your own business network
46. 46
Good blockchain use-case or bad?
Food
Provenance
Know Your
Customer
Track Your
Child
Electronic
Medical
Records
Holiday
Tracking
Tool
Secure
Document
Store
47. 47
– Identifying a good blockchain use-case is not always easy!
– However there should always be:
1. A business problem to be solved
• That cannot be more efficiently solved with other
technologies
2. An identifiable business network
• With Participants, Assets and Transactions
3. A need for trust
• Consensus, Immutability, Finality or Provenance
What makes a good blockchain use case?
48. 48
– First use-cases are even more difficult to identify!
1. A limited scope, but still solves a real business problem
• Minimum Viable Product in a few weeks of effort
2. A smaller business network
• Usually without requiring regulators and consortia
3. Allows for scaling with more participants and scenarios
• Consider shadow chains to mitigate risks
Start small, succeed and grow fast!
What makes a good first blockchain use case?
49. 49
1. What is the specific business problem / challenge that the first project will address?
2. What is the current way of solving this business problem?
3. Assuming the business problem is large, what specific aspects of this business problem will be addressed?
4. Who are the business network participants (organizations) involved and what are their roles?
5. Who are the specific people within the organization and what are their job roles?
6. What assets are involved and what is the key information associated with the assets?
7. What are the transactions involved, between whom, and what assets are associated with transactions?
8. What are the main steps in the current workflow and how are these executed by the business network participants?
9. What is the expected benefit of applying blockchain technology to the business problem for each of the network
participants?
10. What legacy systems are involved? What degree of integration with the legacy systems is needed?
Sample questions to ask for the selected use case:
51. 51
– Purpose of Lab 3
Next step 2: Install the development environment and
develop from there
52. 52
– Purpose of Lab 3
Next step 3: Create your own Blockchain HL Fabric
network in a Kubernetes cluster (or IBM Starter Plan)
53. Introduction on Hyperledger:
- HL Fabric
- HL Composer
What’s Next?
Lab 1 – Deploy and test a
sample business network
Lab 2 – Create your own
business network
54. 54
– Connect to Composer Web Playground (Online)
– Create your own business network
– Test your own transactions
– This tutorial can be followed on line at:
https://hyperledger.github.io/composer/latest/tutorials/playground-tutorial.html
Lab 2 Content
55. 55
– Open the URL: https://composer-playground.mybluemix.net
– You should see the My Business Networks screen. The My Business Networks
page shows you a summary of the business networks you can connect to, and the
identities you can use to connect to them.
– Don't worry about this too much for the time being, as you're going to create your
own network
Step One: Open the Hyperledger Composer Playground
56. 56
– Click “Deploy a new business network” under the Web Browser heading to get
started.
– The new business network needs a name, you can call it like you want, i.e. tutorial-
network
– Optionally, you can enter a description for your business network.
– Next we must select a business network to base yours on, because you want to
build the network from scratch, click empty-business-network
– Now that our network is defined, click Deploy
Step Two: Creating a new business network
57. 57
– Now that you've created and deployed the business network, you should see a new
business network card called admin for your business network tutorial-network in
your wallet. The wallet can contain business network cards to connect to multiple
deployed business networks.
– When connecting to an external blockchain, business network cards represent
everything necessary to connect to a business network. They include connection
details, authentication material, and metadata.
– To connect to our business network click Connect now under your business
network card.
Step Three: Connecting to the business network
58. 58
– As you can see, we're in the Define tab right now, this tab is where you create and
edit the files that make up a business network definition, before deploying them and
testing them using the Test tab.
– As you selected an empty business network template, we need to modify the
template files provided.
– The first step is to update the model file. Model files define the assets,
participants, transactions, and events in our business network.
– For more information on the modeling language, check the documentation:
https://hyperledger.github.io/composer/latest/reference/cto_language.html
– Click the Model file to view it.
– Delete the lines of code in the model file and start creating your own lines. You can
get use the following lines as a guide:
Step Four: Adding a model file
59. 59
/**
* My commodity trading network
*/
namespace org.example.mynetwork
asset Commodity identified by tradingSymbol {
o String tradingSymbol
o String description
o String mainExchange
o Double quantity --> Trader owner
}
participant Trader identified by tradeId {
o String tradeId
o String firstName
o String lastName
}
transaction Trade {
Commodity commodity
--> Trader newOwner
}
Step Four: Adding a model file
60. 60
– Now that the domain model has been defined, we can define the transaction logic
for the business network. Composer expresses the logic for a business network
using JavaScript functions. These functions are automatically executed when a
transaction is submitted for processing
– For more information on writing transaction processor functions, check the
documentation:
https://hyperledger.github.io/composer/latest/reference/js_scripts.html
– Click the “Add a file” button.
– Click the Script file and click Add.
– Delete the lines of code in the script file and replace it with your own code. You can
use the following as a guide:
Step Five: Adding a transaction processor script file
61. 61
/**
*Track the trade of a commodity from one trader to another
*@param {org.example.mynetwork.Trade} trade - the trade to be processed
*@transaction
*/
async function tradeCommodity(trade) {
trade.commodity.owner = trade.newOwner;
let assetRegistry = await
getAssetRegistry('org.example.mynetwork.Commodity');
await assetRegistry.update(trade.commodity);
}
Step Five: Adding a transaction processor script file
62. 62
– Access control files define the access control rules for business networks. Your
network should be simple, so the default access control file doesn't need editing
– The basic file gives the current participant networkAdmin full access to business
network and system-level operations.
– While you can have multiple model or script files, you can only have one access
control file in any business network.
– For more information on access control files, check the documentation:
https://hyperledger.github.io/composer/latest/reference/acl_language.html
Step Six: Access control
63. 63
– Now that you have model, script, and access control files, we need to deploy and
test your business network.
– Click Deploy changes to upgrade the business network.
Step Seven: Deploying the updated business network
64. 64
– Next, you need to test your business network by creating some participants, some
asset, and then submit transactions.
– Click the Test tab to get started
– Use your experience and instructions from Lab 1 to test your network
Step Eight: Testing the business network definition
65. A little extra…
Lab 3 – Setup your development
environment on your computer
and create a full Composer
solution
66. 66
– You can follow the online tutorial:
https://hyperledger.github.io/composer/latest/tutorials/developer-tutorial.html
Setup your development environment locally
67. 67
– You can follow the online tutorial:
https://ibm-blockchain.github.io/ or
https://github.com/IBM/blockchain-network-on-kubernetes
Create a Blockchain Hyperledger Fabric network in a
Kubernetes cluster
68. Questions? Tweet us or
go to ibm.com/blockchain
@IBMBlockchain
IBM Blockchain
IBM Blockchain
Thank you
Joël Viale