SlideShare a Scribd company logo
1 of 46
Download to read offline
1
Hands-on: Blockchain - Hyperledger Fabric V1.0
running on LinuxONE, see it in action!
Speaker Name: Anderson W. Bassani (abassani@br.ibm.com)
Introduction:
In this Blockchain Laboratory, the participant
will have the opportunity to deploy a Hyperledger
Fabric on one Linux on z virtual Machine, running on
IBM LinuxONE Community Cloud, using Docker Containers.
Originally presented and delivered at IBM Technical
University 2017 – Mogi das Cruzes, São Paulo. August
9, 2017.
Exercises Guide
2
Exercise instructions
In this lab exercise you will complete the following tasks:
__ 1.First, let’s review Hyperledger Fabric:
__ a. Terminology
__ b. Architecture
__ c. Differences between Hyperledger Fabric V0.6 to V1.0
__ 2.Second, create your own Linux on z virtual server and deploy a
Hyperledger Fabric
__ a. Sign up for a LinuxONE Community Cloud trial account
__ b. Log on, create a SSH key pair, and deploy a virtual
server instance
__ c. Setup PuTTY to use a private key
__ d. Access the virtual server with Secure Shell (SSH)
__ e. Build the Hyperledger Fabric
__ f. Create a four-peer network
__ g. Deploy the example smart contract application
3
Task
__ 1. Create your own Linux on z virtual server and deploy a Hyperledger
Fabric
__ a. Sign up for a LinuxONE Community Cloud trial account
Important: In this Lab, you can now skip to Step 6: Install the
Prerequisites on page 26.
The instructor already created one Linux server and a key pair (private
and public key) for each group.
Ask the instructor your Group Number, from 01 to 12.
Besides that fact, the LinuxONE Community Cloud is available on the
internet, so you reproduce all the steps on your company or at Club Med
Lake Paradise’s pool!
Step 1: Registration
If you have not done so already, register at:
https://developer.ibm.com/linuxone/
for a 120-day trial account. You will receive an email containing
credentials to access the LinuxONE Community Cloud self-service portal.
This is where you can start exploring all our available services.
Exercises Guide
4
Image:
__ 1. Click on Start your trial now button.
__ 2. You will be redirected to
https://linuxone20.cloud.marist.edu/cloud/#/register for a page
registration.
Image:
5
__ 3. Fill all the mandatory fields. You will also need a valid email
and cellphone to receive a valid code.
__ 4. Insert your phone number and click “Get Code”
__ 5. Check your phone for a 6-digit number. Or follow the above
instructions to receive the code by email.
__ 6. Type the code on the necessary field. Example:
Exercises Guide
6
__ 7. Click on “Request your trial” button.
__ 8. You should now receive an email with credentials. If you receive
the error below, please contact the linux1@us.ibm.com team.
__ 9. End of the exercise. You are now the newest member of the LinuxONE
Community, enjoy it!
7
Image: Email with credentials to access the LinuxONE Community Cloud:
Exercises Guide
8
Step 2: Log on to the self-service portal
The portal URL and account credentials are located in the email
received from “LinuxONE Community Cloud”
(noreply@linuxone.cloud.marist.edu) with the subject “Registration
successful”.
__ 1. Click on the URL to access the cloud dashboard -
https://linuxone20.cloud.marist.edu/cloud
__ 2. Type in your account and password.
__ 3. Click on Sign In. The LinuxONE Community Cloud initial screen will
open.
9
Image: Initial screen
Exercises Guide
10
Step 3: Deploy a Virtual Server Instance and create a key pair.
__ 1. On the Insfrastructure options, click on Manage Instances.
__ 2. Click on Create
__ 3. Let’s maintain the type of this virtual server as General purpose
VM. The other option is Hackathon (code required) that isn’t our use
case today.
11
__ 4. Let’s enter the Instance name and some description. My default is
blockchainNN, where NN is the Group Number from 01 to 12. On the
Description I choose to write: Hyperledger Fabric V1.0 IBM TechU 2017.
__ 5. Click on SLES12 SP2 to select this image.
Exercises Guide
12
__ 6. On the Select a Flavor, let’s choose the LinuxONE-Medium. When you
click, the option is highlighted.
__ 7. On the Select a SSH Key Pair, click on create.
__ 8. On the key name, type what you want. In this exercise, I choose
the following standard keyblockchainNN, where NN is the Group Number,
from 01 to 12.
13
__ 9. Click on Create a new key pair.
__ 10. Click on Save File to save your private key file
(keyblockchain01.pem)
Note: Take care in storing this private key. There is no way to retrieve
this key once it has been saved.
__ 11. Click on keyblockchain01 to highlight the SSH Key Pair.
__ 12. Verify your selection, make any changes if necessary and click on
Create.
Exercises Guide
14
__ 13. Wait until your instance be deployed. The status change from
spawning to ACTIVE.
Image showing instances during deployment:
Image showing the VM in active state and responding to ping:
When the instance deployment is complete, you can click on View
Details to display additional information about your virtual server.
15
Image: The Instance Status after a successful deployment
This are the content of the RSA private key keyblockchain01.pem
-----BEGIN RSA PRIVATE KEY-----
MIIEqAIBAAKCAQEAuE1oL2UGKVVy7VDYqA8Gezw5QyMY5jM3q8r8cccOwCB1xKRA
wxoeMj9GVZ+vbbDGs8JPvREIXQbGE/dZg4UmAklqYMg6ODA6c3cTYalOLJKIpgo6
AFNmstzN7rQxSGJA0nNBGq1voahcM8lGlliOUAU1isdpIbaGHBOthMApjODj3JO3
FuqeBJm36zgrdZwh9tcfrgUlRpidiILpyApHHJRjn5HipS8Y4fX2Nhh4buI9xTlC
IsUrtPpDFL9gd2gAWTDXoZ5d9LqQHWpmHJSSz37+20KFBel5LalSW6j0kIEeD36/
j8vsYyWyCQv7LB4rwIndSCApY2S/wpg8hBZdOQIDAQABAoIBAD2o+CBTJjqR8f9f
uvyO+lYkkevaRCxQGmIJaWgPdunkckI1ycz8YfnhnYBsCl8ic3gUnGTe2/NznrVz
XalY1JyTP1nd40yFJikXP46++/6Bj+ItLbaKMKPKp8Mi2hIjfRhrou5v9Bcboq1Y
u5r1SbeP5pflm1DCJiAinTz6pWwSB1dFLSz3J0dcbVcd/XftVdq8OaHrwQd70QWJ
Dli+TW4G+9oTMibENOxlfdQod2ETxWuTSDqbu3cJznQQBjlgDZ1SPPfh704jSzQ2
U7VEoWasLIonelawapmrZkVwPVul/NohOI0qEBpLphO5xZumbGapdysl1lh93EmA
nlMyQAECggCBAMSCbOTS24ONKhGp2bvVvcUvlSkWK1Xcram7Zh43IcqlwMTfLb73
ymmPnvsFOZ13L4lqCv4wQor7ET8GSV1c+TVtmhfseGtsfctWfEba70XTmkrwDwAz
8ydmuPS2l5IbGutlSNZEJRdlTupAGDcdp7pSu0SzxCoszisc2rd40Fk5AoIAgQDw
GOztp73igsnM7i0WhFn2l6S8HrAv6PxL48khArzvHXTcsKndFjyAPQnfaC+t858b
Y74QmWEAS0HNpkkOvTwP6EBYhFViIIcCkf+RAVUUzxZVXZlTGnWFqaIR1jdkJCT4
0omSKtv88P+qBPd8ic3AvZOW3iM8Y8VAMXyy1ookAQKCAIEArLtUisMJ75W7P/GE
EYbtG5Ia1BXHm96xzDuMpMyjaGTQkHz40h8vjiCPh2jtXwuv/mL3LL4xD8dnPnYB
MQ8Tg7JGu/bBVvPzkzQ/Y6z4m/FHc82V8gC4II87zuddTjGDNR0/rBAUZn9HocMb
Rf9MOwyTze0SZlwiEWV4n8OTqIkCggCAGrbrRdYwLo/W3FJz+dloGSPuVHAlsm7+
A4Oo0V94njJs2lFd1RewS6R/ALia9YPx5B5I+5fVTy8Qd01VO6qakDqLTk4LIgv0
ebi88ulvCg2wsnbjpHeBNAoX2lw3dZD//B+Q5w6Vw6MdD1HWJ6k9l4CAd3zn9sQz
Il1fPpbYcAECggCAWk9/440ytrSsR9HUeqHmxvjTfMaGUF3jbh8x860D99Kb5tTv
etHyRPswCYdY7e5ABTRgwzyEX8EcAs89Die8TNklXOI+MLn2+K+xNYn7PAnmMjgW
16pz0JMn9S2Ex9kFBD3ua41AAnxSLc4yuFDU86t6qn0WJuqOl/rFcT7vkdM=
-----END RSA PRIVATE KEY-----
Exercises Guide
16
Step 4: Access the virtual server with Secure Shell (SSH).
Login for the root user is disabled. You must log in with the
linux1 user. This user has full sudo privilege.
Linux and macOS Users: Follow the instructions below if your workstation
have these operating systems installed
__ 1. Make sure your key has a file permission of 600. Run this command
to change it if necessary:
$ ls -l | grep key
-rw-r--r--@ 1 abassani staff 1683 Aug 5 18:56 keyblockchain01.pem
-rw-r--r--@ 1 abassani staff 1683 Aug 5 17:12 keyblockchain02.pem
-rw-r--r--@ 1 abassani staff 1687 Aug 5 19:05 keyblockchain03.pem
-rw-r--r--@ 1 abassani staff 1683 Aug 5 19:06 keyblockchain04.pem
-rw-r--r--@ 1 abassani staff 1683 Aug 5 19:06 keyblockchain05.pem
-rw-r--r--@ 1 abassani staff 1687 Aug 5 19:32 keyblockchain06.pem
$ chmod 600 keyblockchainNN.pem
__ 2. Run this command from a terminal to connect to your deployed
instance.
ssh –i keyblockchainNN.pem linux1@<instance IP address>
Where: NN is your Group Number, and the IP Address is provided
below:
17
Table with hostname, IP Address, linux user and ssh keys:
Hostname IP Address Linux
user
ssh key
blockchain01 148.100.4.191 linux1 keyblockchain01.pem
blockchain02 148.100.4.192 linux1 keyblockchain02.pem
blockchain03 148.100.5.156 linux1 keyblockchain03.pem
blockchain04 148.100.5.161 linux1 keyblockchain04.pem
blockchain05 148.100.5.159 linux1 keyblockchain05.pem
blockchain06 148.100.4.133 linux1 keyblockchain06.pem
blockchain07 148.100.4.136 linux1 keyblockchain07.pem
blockchain08 148.100.5.187 linux1 keyblockchain08.pem
blockchain09 148.100.5.164 linux1 keyblockchain09.pem
blockchain10 148.100.5.168 linux1 keyblockchain10.pem
blockchain11 148.100.5.189 linux1 keyblockchain11.pem
blockchain12 148.100.4.197 linux1 keyblockchain12.pem
If you don’t execute the procedure above to change the file
permissions you will receive the following error:
$ ssh -i keyblockchain01.pem linux1@148.100.5.154
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for 'keyblockchain01.pem' are too open.
It is required that your private key files are NOT accessible
by others.
This private key will be ignored.
Load key "keyblockchain01.pem": bad permissions
Permission denied (publickey).
Exercises Guide
18
Note: If you create a RHEL or SLES virtual server, you should use
‘linux1’ as your user. For Ubuntu, use the ‘ubuntu’ userid.
Note: This laboratory document all the steps for a SLES virtual server.
But all the steps are all tested for the following Linux distros:
• Red Hat Enterprise Linux (RHEL) 7.2
• SUSE Linux Enterprise Server (SLES) 12
• Ubuntu 16.04 LTS
19
Windows Workstation Users: Follow the instructions below if your
workstation have Windows installed
__ 1. You have to use an SSH client. A popular and free SSH client is
PuTTY. You can download PuTTY from this website:
http://www.putty.org/.
__ 2. Set up PuTTY on Windows to use SSH private key.
__ a. Download PuTTYgen from this website
http://www.chiark.greenend.ork.uk/~sgtatham/putty/download.html
__ b. Save the puttygen.exe (183 KB) binary file.
__ c. Double click to execute PUTTYGEN program. Click Run.
__ d. The PuTTY Key Generator initial screen will open.
Exercises Guide
20
__ e. Let’s protect the private key. Click File > Load private key
__ f. Select the folder that contains your private key. Select All
Files (the PuTTY try to locate PuTTY Private Key Files with extension
.ppk). Then, select the keyblockchainNN.pem private key file. Click
Open.
21
__ g. Click OK button to acknowledge the successful notice
__ h. Enter a key passphrase and confirm it.
Important: The key passphrase that was used for all the Groups =
ibmtechu2017
Exercises Guide
22
__ i. Click Save private key. Each Group have one
keyblockchainNN.ppk private key, so no one is able to connect on a
different virtual machine.
Note: the protected private key file (.ppk) just created is needed by
PuTTY.
__ j. Let’s now set up the PuTTY with the protected key already
created. Start PuTTY.
__ k. Select Connection > Expand SSH > Expand Auth and Click Browse
to select the protected private key file (.ppk)
Image example:
23
__ l. Select Connection > Data and enter linux1 in the Auto-login
username textbox
__ m. Select Session and enter the IP address for your virtual
server in the Host Name textbox. On the Saved Session, insert your Group
name (blockchainNN). Click Save.
Exercises Guide
24
Image Example:
__ n. Click Open and acknowledge the Security Alert by clicking
Yes.
__ o. Enter the passphrase for the protected private key.
Hint: the passphrase is ibmtechu2017
__ p. Welcome to Bash! You will receive the Welcome to LinuxONE
Community Cloud! Screen.
=================================================================================
Welcome to the IBM LinuxONE Community Cloud!
This server is for authorized users only. All activity is logged and monitored.
Individuals using this server must abide to the Terms and Conditions listed here:
https://developer.ibm.com/linuxone/linuxone-community-cloud-terms-conditions/.
Your access will be revoked for any non-compliance.
==================================================================================
25
Step 5: Manage your virtual server instance
You can use the self-service portal to:
1. Create an instance
2. Stop an instance
3. Start an instance
4. Delete an instance
Important: Read the information below about your virtual server instance
1. The root user login is disabled.
2. You must log in with the user linux1 or ubuntu and with your SSH
private key.
3. The linux1 user has full sudo privilege.
4. There is a 42 GB user disk mounted at /data.
5. Firewall is enabled. Only the SSH port is open. Modify the firewall
rules if you need other ports opened.
6. Your server will be shut off if is inactive for more than 7 days.
You can start it using the self-service portal.
Note: About your LinuxONE Community Cloud account
1. Your LinuxONE Community Cloud trial allows you to deploy one (1)
virtual server. You may delete this server and deploy another
instance using other images in the catalog.
2. Your server will be deleted and the trial account will be cancelled
if your server is shut off for more than 30 days.
3. You must abide to these terms of use
(https://developer.ibm.com/linuxone/terms-of-use/ ) which you have
agreed during registration. Any misuse will result in immediate
revoke of access to the cloud.
Exercises Guide
26
Step 6: Install the prerequisites
The laboratory can be run on any supported level of Mac OSX, Linux
and Windows machines. Our option is to run a Linux on z virtual server!
Please note that as several hundred MBs in the form of docker
images will be downloaded, suitable internet bandwidth and disk space is
required.
The following prerequisite software are also required:
• Git command line
• cURL (or Windows equivalent)
• Docker
• Docker Compose
• Node.js
It is important to ensure the correct versions of Docker, Docker
Compose and Node.js are installed.
Incorrect versions will lead to random errors. Please follow
directions on this page for installing the correct versions:
http://hyperledger-fabric.readthedocs.io/en/latest/prereqs.html
__ 1. Log on to your virtual server with the ‘linux1’ user.
ssh –i keyblockchain01.pem linux1@<server IP address>
Or use an SSH client like PuTTY.
__ 2. Switch to root user.
sudo su -
__ 3. Download and install Docker files.
__ a. For SLES virtual machine the Docker is already installed.
Check the version with the following commands:
27
zypper info docker
Refreshing service 'SMT-http_lxslsmt'.
Retrieving repository 'SUSE-PackageHub-12-SP2' metadata
.........................................................................
...........[done]
Building repository 'SUSE-PackageHub-12-SP2' cache
.........................................................................
................[done]
Loading repository data...
Reading installed packages...
Information for package docker:
-------------------------------
Repository : SLE-Module-Containers12-Updates
Name : docker
Version : 17.04.0_ce-98.2
Arch : s390x
Vendor : SUSE LLC <https://www.suse.com/>
Support Level : Level 3
Installed Size : 43.3 MiB
Installed : Yes
Status : up-to-date
Source package : docker-17.04.0_ce-98.2.src
Summary : The Linux container runtime
Description :
Docker complements LXC with a high-level API which operates at the
process
level. It runs unix processes with strong guarantees of isolation
and
repeatability across servers.
Docker is a great building block for automating distributed
systems:
large-scale
web deployments, database clusters, continuous deployment systems,
private
PaaS,
service-oriented architectures, etc.
__ b. And the Docker Version:
docker --version
Docker version 17.04.0-ce, build 78d1802
Exercises Guide
28
__ 4. Install pip. pip is a package management system used to install
and manage software packages written in Python. Many packages can be
found in the Python Package Index (PyPI) (from Wikipedia). Execute the
following command:
curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
You should see the following result:
# curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1558k 100 1558k 0 0 7602k 0 --:--:-- --:--:-- --:--:-- 7637k
__ 5. Check the python version
python --version
or
python -V
__ 6. Execute the following command to install pip and wheel:
python get-pip.py
As a result, you should see the following:
# python get-pip.py
Collecting pip
Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB)
100% |████████████████████████████████| 1.3MB 876kB/s
Collecting wheel
Downloading wheel-0.29.0-py2.py3-none-any.whl (66kB)
100% |████████████████████████████████| 71kB 8.3MB/s
Installing collected packages: pip, wheel
Successfully installed pip-9.0.1 wheel-0.29.0
__ 6. Install Docker Compose.
29
pip install docker-compose
__ 7. You can check the version of Docker Compose you have installed
with the following command:
docker-compose --version
The result:
docker-compose version 1.15.0, build e12f3b9
__ 8. Hyperledger Fabric uses the Go programming language 1.7.x for many
of its components. Given that we are writing a Go chaincode program (not
on this LAB at least ;-), we need to be sure that the source code is
located somewhere within the $GOPATH tree. First, you will need to check
that you have set your $GOPATH environment variable.
echo $GOPATH
__ 9. If nothing is displayed when you echo $GOPATH, you will need to set
it. Typically, the value will be a directory tree child of your
development workspace, if you have one, or as a child of your $HOME
directory. Since we’ll be doing a bunch of coding in Go, you might want
to add the following to your ~/.bashrc:
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
__ 10. If you will be developing applications for Hyperledger Fabric
leveraging the Hyperledger Fabric SDK for Node.js, you will need to have
version 6.9.x of Node.js installed.
zypper install nodejs6 nodejs-devel nodejs6-docs npm6
Answer yes to confirm the installation. You should see:
# zypper install nodejs6 nodejs-devel nodejs6-docs npm6
Refreshing service 'SMT-http_lxslsmt'.
Loading repository data...
Reading installed packages...
'nodejs-devel' not found in package names. Trying capabilities.
Resolving package dependencies...
__ 3. The following 4 NEW packages are going to be installed:
Exercises Guide
30
nodejs6 nodejs6-devel nodejs6-docs npm6
The following package is not supported by its vendor:
nodejs6-devel
4 new packages to install.
Overall download size: 7.5 MiB. Already cached: 0 B. After the operation, additional 38.1 MiB will be used.
Continue? [y/n/...? shows all options] (y): y
Retrieving package nodejs6-6.9.5-7.1.s390x (1/4), 4.9 MiB ( 20.6 MiB unpacked)
Retrieving: nodejs6-6.9.5-7.1.s390x.rpm ....................................................................................................[done]
Retrieving package nodejs6-docs-6.9.5-7.1.noarch (2/4), 427.2 KiB ( 7.4 MiB unpacked)
Retrieving: nodejs6-docs-6.9.5-7.1.noarch.rpm ..............................................................................................[done]
Retrieving package nodejs6-devel-6.9.5-7.1.s390x (3/4), 346.9 KiB ( 2.4 MiB unpacked)
Retrieving: nodejs6-devel-6.9.5-7.1.s390x.rpm ..............................................................................................[done]
Retrieving package npm6-6.9.5-7.1.s390x (4/4), 1.9 MiB ( 7.7 MiB unpacked)
Retrieving: npm6-6.9.5-7.1.s390x.rpm .......................................................................................................[done]
Checking for file conflicts: ...............................................................................................................[done]
(1/4) Installing: nodejs6-6.9.5-7.1.s390x ..................................................................................................[done]
(2/4) Installing: nodejs6-docs-6.9.5-7.1.noarch ............................................................................................[done]
(3/4) Installing: nodejs6-devel-6.9.5-7.1.s390x ............................................................................................[done]
(4/4) Installing: npm6-6.9.5-7.1.s390x .....................................................................................................[done]
31
Step 7: Download the Platform-specific Binaries
Let’s install the Hyperledger Fabric platform-specific binaries.
This process was designed to complement the Hyperledger Fabric Samples
(next session – Step 8) but can be used independently. If you are not
installing the samples right now, then simply create and enter a
directory into which to extract the contents of the platform-specific
binaries.
__ 1. Still with root privileges, please execute the following command
from within the directory into which you will extract the platform-
specific binaries:
cd /root
curl -sSL https://goo.gl/iX9dek | bash
The curl command above downloads and executes a bash script that
will download and extract all of the platform-specific binaries you will
need to set up your network and place them into the cloned repo you
created above. It retrieves four platform-specific binaries:
• cryptogen;
• configtxgen;
• configtxlator; and
• peer
Finally, the script will download the Hyperledger Fabric docker
images from Docker Hub into your local Docker registry and tag them as
‘latest’.
The script lists out the Docker images installed upon conclusion.
Look at the names for each image; these are the components that will
ultimately comprise our Hyperledger Fabric network.
You will also notice that you have two instances of the same image
ID - one tagged as “s390x-1.0.0” and one tagged as “latest”.
Image showing the end of the bash script execution:
...
===> List out hyperledger docker images
hyperledger/fabric-tools latest 7cd26291b56c 3 weeks ago 1.42GB
hyperledger/fabric-tools s390x-1.0.0 7cd26291b56c 3 weeks ago 1.42GB
hyperledger/fabric-couchdb latest 26049dead3d7 3 weeks ago 1.62GB
hyperledger/fabric-couchdb s390x-1.0.0 26049dead3d7 3 weeks ago 1.62GB
hyperledger/fabric-kafka latest a89ad1d0a0a3 3 weeks ago 1.4GB
hyperledger/fabric-kafka s390x-1.0.0 a89ad1d0a0a3 3 weeks ago 1.4GB
hyperledger/fabric-zookeeper latest cd1d0b980b9e 3 weeks ago 1.41GB
Exercises Guide
32
hyperledger/fabric-zookeeper s390x-1.0.0 cd1d0b980b9e 3 weeks ago 1.41GB
hyperledger/fabric-orderer latest dee450e190a1 3 weeks ago 194MB
hyperledger/fabric-orderer s390x-1.0.0 dee450e190a1 3 weeks ago 194MB
hyperledger/fabric-peer latest 80a0a7584af6 3 weeks ago 197MB
hyperledger/fabric-peer s390x-1.0.0 80a0a7584af6 3 weeks ago 197MB
hyperledger/fabric-javaenv latest ed9b3f85fcc2 3 weeks ago 1.48GB
hyperledger/fabric-javaenv s390x-1.0.0 ed9b3f85fcc2 3 weeks ago 1.48GB
hyperledger/fabric-ccenv latest 99d29b24f943 3 weeks ago 1.39GB
hyperledger/fabric-ccenv s390x-1.0.0 99d29b24f943 3 weeks ago 1.39GB
hyperledger/fabric-ca latest 775bfd123eb0 3 weeks ago 255MB
hyperledger/fabric-ca s390x-1.0.0 775bfd123eb0 3 weeks ago 255MB
__ 2. Just checking how much disk space was necessary with the following
command:
# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 2.0G 8.0K 2.0G 1% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 26M 1.9G 2% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/dasda2 5.8G 3.2G 2.4G 58% /
/dev/dasda1 388M 46M 323M 13% /boot/zipl
/dev/dasdb1 45G 2.1G 40G 5% /data
tmpfs 391M 0 391M 0% /run/user/1001
33
Step 8: Build your first network (BYFN)
The build your first network (BYFN) scenario provisions a sample
Hyperledger Fabric network consisting of two organizations, each
maintaining two peer nodes, and a “solo” ordering service.
Image showing an overview of the Laboratory Architecture:
__ 1. Determine a location on your machine where you want to place the
Hyperledger Fabric samples applications repository and open that in a
terminal window.
cd /data
__ 2. Then, execute the following command to clone the repository:
git clone https://github.com/hyperledger/fabric-samples.git
Exercises Guide
34
You will notice that there are a number of samples included in the
fabric-samples repository. We will be using the first-network sample.
Let’s open that sub-directory now.
__ 3. Execute the command to see the folder content:
cd fabric-samples
ls
You should see something similar like this:
# ls
.git LICENSE README.md basic-network chaincode fabcar
.gitignore MAINTAINERS.md balance-transfer bin chaincode-docker-devmode first-network
__ 4. Open the first-network folder.
cd first-network
Note: The supplied commands in this documentation MUST be run from your
first-network sub-directory of the fabric-samples repository clone. If
you elect to run the commands from a different location, the various
provided scripts will be unable to find the binaries.
__ 5. We provide a fully annotated script - byfn.sh - that leverages these
Docker images to quickly bootstrap a Hyperledger Fabric network comprised
of 4 peers representing two different organizations, and an orderer node.
It will also launch a container to run a scripted execution that will join
peers to a channel, deploy and instantiate chaincode and drive execution
of transactions against the deployed chaincode.
Here’s the help text for the byfn.sh script:
./byfn.sh -h
Read the information of the help command above.
If you choose not to supply a channel name, then the script will use
a default name of mychannel. The CLI timeout parameter (specified with the
-t flag) is an optional value; if you choose not to set it, then your CLI
container will exit upon conclusion of the script.
35
__ 6. Let’s generate the network artifacts. Ready to give it a go? Okay
then! Execute the following command:
./byfn.sh -m generate
__ 7. You will see a brief description as to what will occur, along with
a yes/no command line prompt. Respond with a y to execute the described
action. Type y and press enter:
y
You’ll see something similar like this:
Generating certs and genesis block for with channel 'mychannel' and CLI timeout of '10000'
Continue (y/n)?y
proceeding ...
/Users/xxx/dev/fabric-samples/bin/cryptogen
##########################################################
##### Generate certificates using cryptogen tool #########
##########################################################
org1.example.com
2017-06-12 21:01:37.334 EDT [bccsp] GetDefault -> WARN 001 Before using BCCSP, please call InitFactories(). Falling back to
bootBCCSP.
...
/Users/xxx/dev/fabric-samples/bin/configtxgen
##########################################################
######### Generating Orderer Genesis block ##############
##########################################################
2017-06-12 21:01:37.558 EDT [common/configtx/tool] main -> INFO 001 Loading configuration
2017-06-12 21:01:37.562 EDT [msp] getMspConfig -> INFO 002 intermediate certs folder not found at [/Users/xxx/dev/byfn/crypto-
config/ordererOrganizations/example.com/msp/intermediatecerts]. Skipping.: [stat /Users/xxx/dev/byfn/crypto-
config/ordererOrganizations/example.com/msp/intermediatecerts: no such file or directory]
...
2017-06-12 21:01:37.588 EDT [common/configtx/tool] doOutputBlock -> INFO 00b Generating genesis block
2017-06-12 21:01:37.590 EDT [common/configtx/tool] doOutputBlock -> INFO 00c Writing genesis block
#################################################################
### Generating channel configuration transaction 'channel.tx' ###
#################################################################
2017-06-12 21:01:37.634 EDT [common/configtx/tool] main -> INFO 001 Loading configuration
2017-06-12 21:01:37.644 EDT [common/configtx/tool] doOutputChannelCreateTx -> INFO 002 Generating new channel configtx
2017-06-12 21:01:37.645 EDT [common/configtx/tool] doOutputChannelCreateTx -> INFO 003 Writing new channel tx
#################################################################
####### Generating anchor peer update for Org1MSP ##########
#################################################################
2017-06-12 21:01:37.674 EDT [common/configtx/tool] main -> INFO 001 Loading configuration
2017-06-12 21:01:37.678 EDT [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update
2017-06-12 21:01:37.679 EDT [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update
#################################################################
####### Generating anchor peer update for Org2MSP ##########
#################################################################
2017-06-12 21:01:37.700 EDT [common/configtx/tool] main -> INFO 001 Loading configuration
2017-06-12 21:01:37.704 EDT [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update
2017-06-12 21:01:37.704 EDT [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update
__ 8. Check that there are no Docker containers running:
Exercises Guide
36
docker ps -a
This first step generates all of the certificates and keys for all
our various network entities, the genesis block used to bootstrap the
ordering service, and a collection of configuration transactions
required to configure a Channel.
__ 9. Let’s bring up the network with the following command:
./byfn.sh -m up
__ 10. Once again, you will be prompted as to whether you wish to
continue or abort. Respond with a y:
y
The result shoud be something like this:
Starting with channel 'mychannel' and CLI timeout of '10000'
Continue (y/n)?y
proceeding ...
Creating network "net_byfn" with the default driver
Creating peer0.org1.example.com
Creating peer1.org1.example.com
Creating peer0.org2.example.com
Creating orderer.example.com
Creating peer1.org2.example.com
Creating cli
____ _____ _ ____ _____
/ ___| |_ _| /  | _  |_ _|
___  | | / _  | |_) | | |
___) | | | / ___  | _ < | |
|____/ |_| /_/ _ |_| _ |_|
Channel name : mychannel
Creating channel...
Wait a few minutes. The logs will continue from there. This will
launch all of the containers, and then drive a complete end-to-end
application scenario. Upon successful completion, it should report the
following in your terminal window:
017-05-16 17:08:01.366 UTC [msp] GetLocalMSP -> DEBU 004 Returning existing local MSP
2017-05-16 17:08:01.366 UTC [msp] GetDefaultSigningIdentity -> DEBU 005 Obtaining
default signing identity
37
2017-05-16 17:08:01.366 UTC [msp/identity] Sign -> DEBU 006 Sign: plaintext:
0AB1070A6708031A0C08F1E3ECC80510...6D7963631A0A0A0571756572790A0161
2017-05-16 17:08:01.367 UTC [msp/identity] Sign -> DEBU 007 Sign: digest:
E61DB37F4E8B0D32C9FE10E3936BA9B8CD278FAA1F3320B08712164248285C54
Query Result: 90
2017-05-16 17:08:15.158 UTC [main] main -> INFO 008 Exiting.....
===================== Query on PEER3 on channel 'mychannel' is successful
=====================
===================== All GOOD, BYFN execution completed =====================
_____ _ _ ____
| ____| |  | | | _ 
| _| | | | | | | |
| |___ | | | | |_| |
|_____| |_| _| |____/
__ 11. Press ctrl + c or control + c to escape the above screen and
press Enter.
ctrl + c
__ 12. Repeate the docker ps -a command to display the running
containers:
# docker ps -a
CONTAINER
ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
06b88bf6ec78 dev-peer1.org2.example.com-mycc-1.0 "chaincode -peer.a..." About a minute ago Up About a
minute dev-peer1.org2.example.com-mycc-1.0
9d91c73cc444 dev-peer0.org1.example.com-mycc-1.0 "chaincode -peer.a..." About a minute ago Up About a
minute dev-peer0.org1.example.com-mycc-1.0
d856bafcd7f3 dev-peer0.org2.example.com-mycc-1.0 "chaincode -peer.a..." About a minute ago Up About a
minute dev-peer0.org2.example.com-mycc-1.0
d48333dd1691 hyperledger/fabric-tools "/bin/bash -c './s..." 2 minutes ago Up 2
minutes cli
d4fd49e30324 hyperledger/fabric-orderer "orderer" 2 minutes ago Up 2
minutes 0.0.0.0:7050->7050/tcp orderer.example.com
f0464a05e287 hyperledger/fabric-peer "peer node start" 2 minutes ago Up 2
minutes 0.0.0.0:9051->7051/tcp, 0.0.0.0:9053->7053/tcp peer0.org2.example.com
8c5a5536907f hyperledger/fabric-peer "peer node start" 2 minutes ago Up 2
minutes 0.0.0.0:8051->7051/tcp, 0.0.0.0:8053->7053/tcp peer1.org1.example.com
688303f824f0 hyperledger/fabric-peer "peer node start" 2 minutes ago Up 2
minutes 0.0.0.0:10051->7051/tcp, 0.0.0.0:10053->7053/tcp peer1.org2.example.com
514137fc97b1 hyperledger/fabric-peer "peer node start" 2 minutes ago Up 2
minutes 0.0.0.0:7051->7051/tcp, 0.0.0.0:7053->7053/tcp peer0.org1.example.com
Exercises Guide
38
__ 13. Congratulation! Right now Hyperledger Fabric is ready to take an
action!
http://hyperledger-fabric.readthedocs.io/en/latest/write_first_app.html
39
Step 9: Query and Invoke the Ledger
__ 1. We will enter the CLI container using the docker exec command:
docker exec -it cli bash
If successful you should see the following:
root@cc744b56c2d2:/opt/gopath/src/github.com/hyperledger/fabric/peer#
__ 2. By default, the script create or network and the channel with the
name mychannel. Export the variable to facilitate the next commands.
export CHANNEL_NAME=mychannel
__ 3. QUERY. Let’s query for the value of a to make sure the chaincode
was properly instantiated and the state DB was populated. The syntax for
query is as follows:
peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}'
__ 4. You should see the following:
Query Result: 90
Or a more complete output for comparison:
root@cc744b56c2d2:/opt/gopath/src/github.com/hyperledger/fabric/peer# export CHANNEL_NAME=mychannel
root@cc744b56c2d2:/opt/gopath/src/github.com/hyperledger/fabric/peer# env |grep CHANNEL
CHANNEL_NAME=mychannel
root@cc744b56c2d2:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode query -C
$CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}'
2017-08-07 03:37:40.325 UTC [msp] GetLocalMSP -> DEBU 001 Returning existing local MSP
2017-08-07 03:37:40.325 UTC [msp] GetDefaultSigningIdentity -> DEBU 002 Obtaining default signing identity
2017-08-07 03:37:40.325 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 003 Using default escc
2017-08-07 03:37:40.325 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 004 Using default vscc
2017-08-07 03:37:40.326 UTC [msp/identity] Sign -> DEBU 005 Sign: plaintext:
0A95070A6708031A0C0884C19FCC0510...6D7963631A0A0A0571756572790A0161
2017-08-07 03:37:40.326 UTC [msp/identity] Sign -> DEBU 006 Sign: digest:
DA87A0B6CC18BCB9B3BB719314B522398ECBA0519AFC4822AE05BD04D038F901
Query Result: 90
2017-08-073:37:40.331 UTC [main] main -> INFO 007 Exiting....
Exercises Guide
40
__ 5. Query the value of b.
peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","b"]}'
__ 6. You should see the following
Query Result: 210
__ 7. INVOKE. Now let’s move 10 from a to b. This transaction will cut a
new block and update the state DB. The syntax for invoke is as follows:
peer chaincode invoke -o orderer.example.com:7050 --tls
$CORE_PEER_TLS_ENABLED --cafile
/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrgani
zations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.e
xample.com-cert.pem -C $CHANNEL_NAME -n mycc -c
'{"Args":["invoke","a","b","10"]}'
You should see something similar:
root@cc744b56c2d2:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode invoke -o
orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile
/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/ordere
r.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C $CHANNEL_NAME -n mycc -c
'{"Args":["invoke","a","b","10"]}'
2017-08-07 03:38:20.119 UTC [msp] GetLocalMSP -> DEBU 001 Returning existing local MSP
2017-08-07 03:38:20.119 UTC [msp] GetDefaultSigningIdentity -> DEBU 002 Obtaining default signing identity
2017-08-07 03:38:20.121 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 003 Using default escc
2017-08-07 03:38:20.121 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 004 Using default vscc
2017-08-07 03:38:20.121 UTC [msp/identity] Sign -> DEBU 005 Sign: plaintext:
0A94070A6608031A0B08ACC19FCC0510...696E766F6B650A01610A01620A023130
2017-08-07 03:38:20.121 UTC [msp/identity] Sign -> DEBU 006 Sign: digest:
80C7150550CF136DA7269AB2DE91454D54AAFD9835601553C0CBECCFA6C6FF98
2017-08-07 03:38:20.128 UTC [msp/identity] Sign -> DEBU 007 Sign: plaintext:
0A94070A6608031A0B08ACC19FCC0510...3A57B3F0F25E42D7D6814307AE83C838
2017-08-07 03:38:20.128 UTC [msp/identity] Sign -> DEBU 008 Sign: digest:
2034902319411D491C7BCCA740BD9C3D8173A51AA6578E309EFDFF043B4D0F8A
2017-08-07 03:38:20.135 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> DEBU 009 ESCC invoke result:
version:1 response:<status:200 message:"OK" > payload:"n
206246345003317203372365H032007241A345201305H3310212;3603052700162241367UT3073010
22YnE022024n004lscc022014nnn004mycc022002010003022-
n004mycc022%n007n001a022002010004n007n001b022002010004032007n001a03200280032010
n001b032003220032003010310001"013022004mycc0320031.0"
endorsement:<endorser:"n007Org1MSP022200006-----BEGIN -----
nMIICGjCCAcCgAwIBAgIRAO/gdL7dB/bQms+3u+kYb0IwCgYIKoZIzj0EAwIwczELnMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3
JuaWExFjAUBgNVBAcTDVNhbiBGncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2NhnLm9yZzEuZXhh
bXBsZS5jb20wHhcNMTcwODA3MDMyMDA3WhcNMjcwODA1MDMyMDA3nWjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEW
MBQGA1UEBxMNnU2FuIEZyYW5jaXNjbzEfMB0GA1UEAxMWcGVlcjAub3JnMS5leGFtcGxlLmNvbTBZnMBMGByqGSM49AgEGCCqGSM49Aw
EHA0IABBUYX5aSDcIWufE/UxpPwDgd3kcsocLQn/IAaYyz5N7nOBUx/ooiprCp2bEjFLWZgm8mWrlGGUuHpWESt8NYLBDyjTTBLMA4Gn
A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIOyU5AYf5DoXn9lwvJ4hRC3RAzcgvIVPtw5IGk/678bjJMAoGCCqG
41
SM49BAMCA0gAMEUCIQD8n+kxnDbWWp8ZExWElfBbOKKTi878xp4RVOtrwGEPuNAIgNjCMihC3x6iQqFas4mO/TLhVnC94LpqQwbrEFoP
vTKOc=n-----END -----n" signature:"0D002 }321351211335314~266313E246
202204032J3427217252250211)h362G 034u212^343002 w000262'
351330351360t252304C2272327:W263360362^B327326201C0072562033108" >
2017-08-07 03:38:20.137 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 00a Chaincode invoke successful.
result: status:200
2017-08-073:38:20.137 UTC [main] main -> INFO 00b Exiting.....
__ 8. QUERY. Let’s confirm that our previous invocation executed
properly. We initialized the key a with a value of 90 and just removed
10 with our previous invocation. Therefore, a query against a should
reveal 80. The syntax for query is as follows:
peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}'
__ 9. You should see the following for the value of a:
Query Result: 80
Or a more complete output:
root@cc744b56c2d2:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode query -C
$CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}'
2017-08-07 03:39:53.814 UTC [msp] GetLocalMSP -> DEBU 001 Returning existing local MSP
2017-08-07 03:39:53.814 UTC [msp] GetDefaultSigningIdentity -> DEBU 002 Obtaining default signing identity
2017-08-07 03:39:53.814 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 003 Using default escc
2017-08-07 03:39:53.814 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 004 Using default vscc
2017-08-07 03:39:53.814 UTC [msp/identity] Sign -> DEBU 005 Sign: plaintext:
0A95070A6708031A0C0889C29FCC0510...6D7963631A0A0A0571756572790A0161
2017-08-07 03:39:53.814 UTC [msp/identity] Sign -> DEBU 006 Sign: digest:
7177773F03F4FBAB3B6C28E849358B5D8102A8203773244447DF62A58E54FB8D
Query Result: 80
2017-08-07 03:39:53.820 UTC [main] main -> INFO 007 Exiting.....
__ 10. Query the value of b.
peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","b"]}'
__ 11. You should see the following
...
Query Result: 220
2017-08-07 04:08:28.388 UTC [main] main -> INFO 007 Exiting.....
Exercises Guide
42
Exercise review and wrap-up
Having completed this exercise, you should be able to:
• Describe of blockchain is and how does it integrates in the
existing business processes
• Describe blockchain major components
• Deploy a Linux on z virtual server on IBM Community Cloud
• Install the Hyperledger Fabric using Docker Containers
• Install and test a smart contract
Next steps:
• Explore the additional bibliography on the Appendix below, like
this one https://www.ibm.com/blockchain/getting-started.html
43
Bibliography
Here it is some addition materials and references:
1. IBM and Blockchain - https://www.ibm.com/blockchain
2. IBM LinuxONE Community Cloud -https://developer.ibm.com/linuxone
3. Hyperledger Project - https://www.hyperledger.org/
4. PuTTY Set up - https://developer.ibm.com/linuxone/wp-
content/uploads/sites/57/2016/02/PUTTY-Set-up.pdf
5. Deploy a Virtual Server on LinuxONE – Quick Start Guide -
https://developer.ibm.com/linuxone/wp-
content/uploads/sites/57/virtual-servers-quick-start.pdf
6. LinuxONE Terms of Use - https://developer.ibm.com/linuxone/terms-
of-use/
7. Blockchain Quick Start Guide -
https://developer.ibm.com/linuxone/wp-
content/uploads/sites/57/blockchain-quick-start.pdf
8. Donna's Dillenberger's YouTube video:
https://www.youtube.com/watch?v=EqZr4LPQIWk
9. https://docs.docker.com/engine/userguide/intro/
10. https://docs.docker.com/engine/installation
11. https://hub.docker.com/r/ibmblockchain/fabric-peer/
12. https://github.com/vpaprots/fabric-
images/blob/master/docs/LinuxONE.md
13. https://raw.githubusercontent.com/cheeye/blockchain/master/docker-
compose.yml
14. An introduction text about Blockchain -
https://www.ibm.com/developerworks/cloud/library/cl-blockchain-
basics-intro-bluemix-trs/index.html
15. Blockchain Terminology -
https://www.ibm.com/developerworks/cloud/library/cl-blockchain-
basics-glossary-bluemix-trs/index.html
16. Hyperledger Fabric – Link to Protocol Specification -
https://github.com/hyperledger/fabric/blob/master/docs/protocol-
spec.md
17. Hyperledger Fabric - https://hyperledger-
fabric.readthedocs.io/en/latest/
18. Docker Images -
https://hub.docker.com/u/ibmblockchain/?cm_mc_uid=16545731835815018
912963&cm_mc_sid_50200000=1501961957&cm_mc_sid_52640000=1501961957
Exercises Guide
44
Appendix – Handy Commands
Stop all Docker containers
docker stop $(docker ps –a –q)
Removes all Docker instances
docker rm –f $(docker ps –a –q)
Romoves all Docker images
docker rmi –f $(docker images –q)
45
Appendix
# docker info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 17.04.0-ce
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Swarm: inactive
Runtimes: oci runc
Default Runtime: runc
Init Binary:
containerd version: (expected: 422e31ce907fd9c3833a38d7b8fdd023e5a76e73)
runc version: N/A (expected: 9c2d8d184e5da67c95d601382adf14862e4f2228)
init version: N/A (expected: 949e6facb77383876aeff8a6944dde66b3089574)
Security Options:
apparmor
Kernel Version: 4.4.59-92.17-default
Operating System: SUSE Linux Enterprise Server 12 SP2
OSType: linux
Architecture: s390x
CPUs: 2
Total Memory: 3.815GiB
Name: blockchain007
ID: 2B2Q:PFKC:YKUS:V245:4ZJR:NDMN:7EV5:BK3Y:N37N:CVXI:IQ7Z:IC2M
Docker Root Dir: /data/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
WARNING: No swap limit support
WARNING: No kernel memory limit support
/etc/sysconfig # cat docker
## Path : System/Management
## Description : Extra cli switches for docker daemon
## Type : string
## Default : ""
## ServiceRestart : docker
#
DOCKER_OPTS="--graph=/data/docker"
peer chaincode install -n mycc -v 1.0 -p
github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02
Exercises Guide
46
With gratitude
This humble instructor could not complete this laboratory without
the help of these teams:
• IBM Poughkeepsie Customer Center
• IBM LinuxONE Community Cloud
• IBM Systems Lab Services Brazil – specially Anderson Augusto da
Silveira and Tito Garrido Ogando
• Sandra Russell
• Eugene Ong
• Qi Ye
• Eva Yan, thanks for your help ;-)

More Related Content

What's hot

Dejan Podgorsek - Is Hyperledger Fabric secure enough for your Business?
Dejan Podgorsek - Is Hyperledger Fabric secure enough for your Business?Dejan Podgorsek - Is Hyperledger Fabric secure enough for your Business?
Dejan Podgorsek - Is Hyperledger Fabric secure enough for your Business?Hacken_Ecosystem
 
Hyperledger Composer architecture
Hyperledger Composer architectureHyperledger Composer architecture
Hyperledger Composer architectureSimon Stone
 
MuleSoft Meetup Vancouver 5th Virtual Event
MuleSoft Meetup Vancouver 5th Virtual EventMuleSoft Meetup Vancouver 5th Virtual Event
MuleSoft Meetup Vancouver 5th Virtual EventVikalp Bhalia
 
Hyperledger community update 20180528
Hyperledger community update 20180528Hyperledger community update 20180528
Hyperledger community update 20180528Arnaud Le Hors
 
Ethereum Smart Contracts on Hyperledger Fabric
Ethereum Smart Contracts on Hyperledger Fabric Ethereum Smart Contracts on Hyperledger Fabric
Ethereum Smart Contracts on Hyperledger Fabric Horea Porutiu
 
Hyperledger Composer Update 2017-04-05
Hyperledger Composer Update 2017-04-05Hyperledger Composer Update 2017-04-05
Hyperledger Composer Update 2017-04-05Dan Selman
 
Introduction of Hyperledger Fabric & Composer
Introduction of Hyperledger Fabric & Composer Introduction of Hyperledger Fabric & Composer
Introduction of Hyperledger Fabric & Composer Dr. Ketan Parmar
 
Hyperledger community update 201805
Hyperledger community update 201805Hyperledger community update 201805
Hyperledger community update 201805Arnaud Le Hors
 
Defrag X Keynote: Deploying and managing Global Blockchain Network
Defrag X Keynote: Deploying and managing Global Blockchain NetworkDefrag X Keynote: Deploying and managing Global Blockchain Network
Defrag X Keynote: Deploying and managing Global Blockchain NetworkDuncan Johnston-Watt
 
MeetUp: Kerberos - Protocol for Authentication & Authorization @Criteo
MeetUp: Kerberos - Protocol for Authentication & Authorization @CriteoMeetUp: Kerberos - Protocol for Authentication & Authorization @Criteo
MeetUp: Kerberos - Protocol for Authentication & Authorization @CriteoGilles Legoux
 
IBM presents: Hyperledger Fabric Hands On Workshop - part 1
IBM presents: Hyperledger Fabric Hands On Workshop - part 1IBM presents: Hyperledger Fabric Hands On Workshop - part 1
IBM presents: Hyperledger Fabric Hands On Workshop - part 1Grant Steinfeld
 
Toronto Virtual Meetup #7 - Anypoint VPC, VPN and DLB Architecture
Toronto Virtual Meetup #7 - Anypoint VPC, VPN and DLB ArchitectureToronto Virtual Meetup #7 - Anypoint VPC, VPN and DLB Architecture
Toronto Virtual Meetup #7 - Anypoint VPC, VPN and DLB ArchitectureAlexandra N. Martinez
 
Hyperledger Fabric update Meetup 20181101
Hyperledger Fabric update Meetup 20181101Hyperledger Fabric update Meetup 20181101
Hyperledger Fabric update Meetup 20181101Arnaud Le Hors
 
The Future of PKI. Using automation tools and protocols to bootstrap trust in...
The Future of PKI. Using automation tools and protocols to bootstrap trust in...The Future of PKI. Using automation tools and protocols to bootstrap trust in...
The Future of PKI. Using automation tools and protocols to bootstrap trust in...DATA SECURITY SOLUTIONS
 
Authorization and Authentication in Microservice Environments
Authorization and Authentication in Microservice EnvironmentsAuthorization and Authentication in Microservice Environments
Authorization and Authentication in Microservice EnvironmentsLeanIX GmbH
 
[Cluj] Turn SSL ON
[Cluj] Turn SSL ON[Cluj] Turn SSL ON
[Cluj] Turn SSL ONOWASP EEE
 

What's hot (20)

Dejan Podgorsek - Is Hyperledger Fabric secure enough for your Business?
Dejan Podgorsek - Is Hyperledger Fabric secure enough for your Business?Dejan Podgorsek - Is Hyperledger Fabric secure enough for your Business?
Dejan Podgorsek - Is Hyperledger Fabric secure enough for your Business?
 
Conoscerehyperledger
ConoscerehyperledgerConoscerehyperledger
Conoscerehyperledger
 
Hyperledger Composer architecture
Hyperledger Composer architectureHyperledger Composer architecture
Hyperledger Composer architecture
 
MuleSoft Meetup Vancouver 5th Virtual Event
MuleSoft Meetup Vancouver 5th Virtual EventMuleSoft Meetup Vancouver 5th Virtual Event
MuleSoft Meetup Vancouver 5th Virtual Event
 
Hyperledger community update 20180528
Hyperledger community update 20180528Hyperledger community update 20180528
Hyperledger community update 20180528
 
Ethereum Smart Contracts on Hyperledger Fabric
Ethereum Smart Contracts on Hyperledger Fabric Ethereum Smart Contracts on Hyperledger Fabric
Ethereum Smart Contracts on Hyperledger Fabric
 
Hyperledger Composer Update 2017-04-05
Hyperledger Composer Update 2017-04-05Hyperledger Composer Update 2017-04-05
Hyperledger Composer Update 2017-04-05
 
Introduction of Hyperledger Fabric & Composer
Introduction of Hyperledger Fabric & Composer Introduction of Hyperledger Fabric & Composer
Introduction of Hyperledger Fabric & Composer
 
Hyperledger community update 201805
Hyperledger community update 201805Hyperledger community update 201805
Hyperledger community update 201805
 
Defrag X Keynote: Deploying and managing Global Blockchain Network
Defrag X Keynote: Deploying and managing Global Blockchain NetworkDefrag X Keynote: Deploying and managing Global Blockchain Network
Defrag X Keynote: Deploying and managing Global Blockchain Network
 
Excelian hyperledger fabric-feb17
Excelian hyperledger fabric-feb17Excelian hyperledger fabric-feb17
Excelian hyperledger fabric-feb17
 
MeetUp: Kerberos - Protocol for Authentication & Authorization @Criteo
MeetUp: Kerberos - Protocol for Authentication & Authorization @CriteoMeetUp: Kerberos - Protocol for Authentication & Authorization @Criteo
MeetUp: Kerberos - Protocol for Authentication & Authorization @Criteo
 
Kerberos
KerberosKerberos
Kerberos
 
IBM presents: Hyperledger Fabric Hands On Workshop - part 1
IBM presents: Hyperledger Fabric Hands On Workshop - part 1IBM presents: Hyperledger Fabric Hands On Workshop - part 1
IBM presents: Hyperledger Fabric Hands On Workshop - part 1
 
Hyperledger fabric 3
Hyperledger fabric 3Hyperledger fabric 3
Hyperledger fabric 3
 
Toronto Virtual Meetup #7 - Anypoint VPC, VPN and DLB Architecture
Toronto Virtual Meetup #7 - Anypoint VPC, VPN and DLB ArchitectureToronto Virtual Meetup #7 - Anypoint VPC, VPN and DLB Architecture
Toronto Virtual Meetup #7 - Anypoint VPC, VPN and DLB Architecture
 
Hyperledger Fabric update Meetup 20181101
Hyperledger Fabric update Meetup 20181101Hyperledger Fabric update Meetup 20181101
Hyperledger Fabric update Meetup 20181101
 
The Future of PKI. Using automation tools and protocols to bootstrap trust in...
The Future of PKI. Using automation tools and protocols to bootstrap trust in...The Future of PKI. Using automation tools and protocols to bootstrap trust in...
The Future of PKI. Using automation tools and protocols to bootstrap trust in...
 
Authorization and Authentication in Microservice Environments
Authorization and Authentication in Microservice EnvironmentsAuthorization and Authentication in Microservice Environments
Authorization and Authentication in Microservice Environments
 
[Cluj] Turn SSL ON
[Cluj] Turn SSL ON[Cluj] Turn SSL ON
[Cluj] Turn SSL ON
 

Similar to Blockchain - Hyperledger Fabric v1.0 Running on LinuxONE, see it in action!

Lab Exercise: IBM Blockchain runs also on LinuxONE, see it in action!
Lab Exercise: IBM Blockchain runs also on LinuxONE, see it in action!Lab Exercise: IBM Blockchain runs also on LinuxONE, see it in action!
Lab Exercise: IBM Blockchain runs also on LinuxONE, see it in action!Anderson Bassani
 
Handson1 6 federp
Handson1 6 federpHandson1 6 federp
Handson1 6 federpfederpmatc
 
Drupal Continuous Integration with Jenkins - Deploy
Drupal Continuous Integration with Jenkins - DeployDrupal Continuous Integration with Jenkins - Deploy
Drupal Continuous Integration with Jenkins - DeployJohn Smith
 
Blockchain Hyperledger Lab
Blockchain Hyperledger LabBlockchain Hyperledger Lab
Blockchain Hyperledger LabDev_Events
 
sfdx continuous Integration with Jenkins on aws (Part I)
sfdx continuous Integration with Jenkins on aws (Part I)sfdx continuous Integration with Jenkins on aws (Part I)
sfdx continuous Integration with Jenkins on aws (Part I)Jérémy Vial
 
Taishaun_OwnensCNS-533_Lab
Taishaun_OwnensCNS-533_LabTaishaun_OwnensCNS-533_Lab
Taishaun_OwnensCNS-533_LabTaishaun Owens
 
Managing VMware with PowerShell - VMworld 2008
Managing VMware with PowerShell - VMworld 2008Managing VMware with PowerShell - VMworld 2008
Managing VMware with PowerShell - VMworld 2008Carter Shanklin
 
DCHQ Cloud Application Platform | Linux Containers | Docker PaaS
DCHQ Cloud Application Platform | Linux Containers | Docker PaaSDCHQ Cloud Application Platform | Linux Containers | Docker PaaS
DCHQ Cloud Application Platform | Linux Containers | Docker PaaSdchq
 
Software industrialization
Software industrializationSoftware industrialization
Software industrializationBibek Lama
 
Krenel Based Virtual Machine In Centos7
Krenel Based Virtual Machine In Centos7Krenel Based Virtual Machine In Centos7
Krenel Based Virtual Machine In Centos7a_ratra
 
Managing Web Infrastructure Systems with Windows PowerShell 2.0 Demo Script
Managing Web Infrastructure Systems with Windows PowerShell 2.0 Demo ScriptManaging Web Infrastructure Systems with Windows PowerShell 2.0 Demo Script
Managing Web Infrastructure Systems with Windows PowerShell 2.0 Demo ScriptMicrosoft TechNet
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Laporan Praktikum Keamanan Siber - Tugas 1 - Kelas C - Kelompok 3.pdf
Laporan Praktikum Keamanan Siber - Tugas 1 - Kelas C - Kelompok 3.pdfLaporan Praktikum Keamanan Siber - Tugas 1 - Kelas C - Kelompok 3.pdf
Laporan Praktikum Keamanan Siber - Tugas 1 - Kelas C - Kelompok 3.pdfIGedeArieYogantaraSu
 
Setting up the hyperledger composer in ubuntu
Setting up the hyperledger composer in ubuntuSetting up the hyperledger composer in ubuntu
Setting up the hyperledger composer in ubuntukesavan N B
 
Auditing System Password Using L0phtcrack
Auditing System Password Using L0phtcrackAuditing System Password Using L0phtcrack
Auditing System Password Using L0phtcrackVishal Kumar
 
Exploiting Client-Side Vulnerabilities and Establishing a VNC Session
Exploiting Client-Side Vulnerabilities and Establishing a VNC SessionExploiting Client-Side Vulnerabilities and Establishing a VNC Session
Exploiting Client-Side Vulnerabilities and Establishing a VNC SessionVishal Kumar
 

Similar to Blockchain - Hyperledger Fabric v1.0 Running on LinuxONE, see it in action! (20)

Lab Exercise: IBM Blockchain runs also on LinuxONE, see it in action!
Lab Exercise: IBM Blockchain runs also on LinuxONE, see it in action!Lab Exercise: IBM Blockchain runs also on LinuxONE, see it in action!
Lab Exercise: IBM Blockchain runs also on LinuxONE, see it in action!
 
Handson1 6 federp
Handson1 6 federpHandson1 6 federp
Handson1 6 federp
 
Microsoft Lync Server 2010 Installation
Microsoft Lync Server 2010 InstallationMicrosoft Lync Server 2010 Installation
Microsoft Lync Server 2010 Installation
 
Drupal Continuous Integration with Jenkins - Deploy
Drupal Continuous Integration with Jenkins - DeployDrupal Continuous Integration with Jenkins - Deploy
Drupal Continuous Integration with Jenkins - Deploy
 
Blockchain Hyperledger Lab
Blockchain Hyperledger LabBlockchain Hyperledger Lab
Blockchain Hyperledger Lab
 
CodeShip
CodeShipCodeShip
CodeShip
 
DNS Cache White Paper
DNS Cache White PaperDNS Cache White Paper
DNS Cache White Paper
 
sfdx continuous Integration with Jenkins on aws (Part I)
sfdx continuous Integration with Jenkins on aws (Part I)sfdx continuous Integration with Jenkins on aws (Part I)
sfdx continuous Integration with Jenkins on aws (Part I)
 
Taishaun_OwnensCNS-533_Lab
Taishaun_OwnensCNS-533_LabTaishaun_OwnensCNS-533_Lab
Taishaun_OwnensCNS-533_Lab
 
Managing VMware with PowerShell - VMworld 2008
Managing VMware with PowerShell - VMworld 2008Managing VMware with PowerShell - VMworld 2008
Managing VMware with PowerShell - VMworld 2008
 
DCHQ Cloud Application Platform | Linux Containers | Docker PaaS
DCHQ Cloud Application Platform | Linux Containers | Docker PaaSDCHQ Cloud Application Platform | Linux Containers | Docker PaaS
DCHQ Cloud Application Platform | Linux Containers | Docker PaaS
 
Software industrialization
Software industrializationSoftware industrialization
Software industrialization
 
Krenel Based Virtual Machine In Centos7
Krenel Based Virtual Machine In Centos7Krenel Based Virtual Machine In Centos7
Krenel Based Virtual Machine In Centos7
 
DotNetNuke
DotNetNukeDotNetNuke
DotNetNuke
 
Managing Web Infrastructure Systems with Windows PowerShell 2.0 Demo Script
Managing Web Infrastructure Systems with Windows PowerShell 2.0 Demo ScriptManaging Web Infrastructure Systems with Windows PowerShell 2.0 Demo Script
Managing Web Infrastructure Systems with Windows PowerShell 2.0 Demo Script
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Laporan Praktikum Keamanan Siber - Tugas 1 - Kelas C - Kelompok 3.pdf
Laporan Praktikum Keamanan Siber - Tugas 1 - Kelas C - Kelompok 3.pdfLaporan Praktikum Keamanan Siber - Tugas 1 - Kelas C - Kelompok 3.pdf
Laporan Praktikum Keamanan Siber - Tugas 1 - Kelas C - Kelompok 3.pdf
 
Setting up the hyperledger composer in ubuntu
Setting up the hyperledger composer in ubuntuSetting up the hyperledger composer in ubuntu
Setting up the hyperledger composer in ubuntu
 
Auditing System Password Using L0phtcrack
Auditing System Password Using L0phtcrackAuditing System Password Using L0phtcrack
Auditing System Password Using L0phtcrack
 
Exploiting Client-Side Vulnerabilities and Establishing a VNC Session
Exploiting Client-Side Vulnerabilities and Establishing a VNC SessionExploiting Client-Side Vulnerabilities and Establishing a VNC Session
Exploiting Client-Side Vulnerabilities and Establishing a VNC Session
 

More from Anderson Bassani

Cloud stack for z Systems - July 2016
Cloud stack for z Systems - July 2016Cloud stack for z Systems - July 2016
Cloud stack for z Systems - July 2016Anderson Bassani
 
OpenStack and z/VM – What is it and how do I get it?
OpenStack and z/VM – What is it and how do I get it?OpenStack and z/VM – What is it and how do I get it?
OpenStack and z/VM – What is it and how do I get it?Anderson Bassani
 
LPAR Design Tool V8 -T01 for IBM z Systems
LPAR Design Tool V8 -T01 for IBM z SystemsLPAR Design Tool V8 -T01 for IBM z Systems
LPAR Design Tool V8 -T01 for IBM z SystemsAnderson Bassani
 
Instalando um servidor virtual Linux on z (Red hat ou SUSE) no emulador z pdt
Instalando um servidor virtual Linux on z (Red hat ou SUSE) no emulador z pdtInstalando um servidor virtual Linux on z (Red hat ou SUSE) no emulador z pdt
Instalando um servidor virtual Linux on z (Red hat ou SUSE) no emulador z pdtAnderson Bassani
 
IBM z/OS V2R2 Networking Technologies Update
IBM z/OS V2R2 Networking Technologies UpdateIBM z/OS V2R2 Networking Technologies Update
IBM z/OS V2R2 Networking Technologies UpdateAnderson Bassani
 
IBM z/OS V2R2 Performance and Availability Topics
IBM z/OS V2R2 Performance and Availability TopicsIBM z/OS V2R2 Performance and Availability Topics
IBM z/OS V2R2 Performance and Availability TopicsAnderson Bassani
 
IBM z/OS Version 2 Release 2 -- Fueling the digital enterprise
IBM z/OS Version 2 Release 2 -- Fueling the digital enterpriseIBM z/OS Version 2 Release 2 -- Fueling the digital enterprise
IBM z/OS Version 2 Release 2 -- Fueling the digital enterpriseAnderson Bassani
 
The IBM z13 - January 14, 2015 - IBM Latin America Hardware Announcement LG15...
The IBM z13 - January 14, 2015 - IBM Latin America Hardware Announcement LG15...The IBM z13 - January 14, 2015 - IBM Latin America Hardware Announcement LG15...
The IBM z13 - January 14, 2015 - IBM Latin America Hardware Announcement LG15...Anderson Bassani
 
IBM RACEv - Ferramenta para análise técnico e financeira para Plataforma Main...
IBM RACEv - Ferramenta para análise técnico e financeira para Plataforma Main...IBM RACEv - Ferramenta para análise técnico e financeira para Plataforma Main...
IBM RACEv - Ferramenta para análise técnico e financeira para Plataforma Main...Anderson Bassani
 
Unisanta - Visão Geral de hardware Servidor IBM System z
Unisanta - Visão Geral de hardware Servidor IBM System zUnisanta - Visão Geral de hardware Servidor IBM System z
Unisanta - Visão Geral de hardware Servidor IBM System zAnderson Bassani
 
Visão geral do hardware do servidor System z e Linux on z - Concurso Mainframe
Visão geral do hardware do servidor System z e Linux on z - Concurso MainframeVisão geral do hardware do servidor System z e Linux on z - Concurso Mainframe
Visão geral do hardware do servidor System z e Linux on z - Concurso MainframeAnderson Bassani
 
IBM Shopz - Procedimento de solicitação RSU para z/VM
IBM Shopz - Procedimento de solicitação RSU para z/VMIBM Shopz - Procedimento de solicitação RSU para z/VM
IBM Shopz - Procedimento de solicitação RSU para z/VMAnderson Bassani
 
Relatório Anual IBM 2013 v1
Relatório Anual IBM 2013 v1Relatório Anual IBM 2013 v1
Relatório Anual IBM 2013 v1Anderson Bassani
 
Servidor IBM zEnterprise BC12
Servidor IBM zEnterprise BC12Servidor IBM zEnterprise BC12
Servidor IBM zEnterprise BC12Anderson Bassani
 

More from Anderson Bassani (17)

Cloud stack for z Systems - July 2016
Cloud stack for z Systems - July 2016Cloud stack for z Systems - July 2016
Cloud stack for z Systems - July 2016
 
OpenStack and z/VM – What is it and how do I get it?
OpenStack and z/VM – What is it and how do I get it?OpenStack and z/VM – What is it and how do I get it?
OpenStack and z/VM – What is it and how do I get it?
 
LPAR Design Tool V8 -T01 for IBM z Systems
LPAR Design Tool V8 -T01 for IBM z SystemsLPAR Design Tool V8 -T01 for IBM z Systems
LPAR Design Tool V8 -T01 for IBM z Systems
 
Instalando um servidor virtual Linux on z (Red hat ou SUSE) no emulador z pdt
Instalando um servidor virtual Linux on z (Red hat ou SUSE) no emulador z pdtInstalando um servidor virtual Linux on z (Red hat ou SUSE) no emulador z pdt
Instalando um servidor virtual Linux on z (Red hat ou SUSE) no emulador z pdt
 
IBM z/OS V2R2 Networking Technologies Update
IBM z/OS V2R2 Networking Technologies UpdateIBM z/OS V2R2 Networking Technologies Update
IBM z/OS V2R2 Networking Technologies Update
 
IBM z/OS V2R2 Performance and Availability Topics
IBM z/OS V2R2 Performance and Availability TopicsIBM z/OS V2R2 Performance and Availability Topics
IBM z/OS V2R2 Performance and Availability Topics
 
IBM Wave for z/VM
IBM Wave for z/VMIBM Wave for z/VM
IBM Wave for z/VM
 
z/OS V2R2 Enhancements
z/OS V2R2 Enhancementsz/OS V2R2 Enhancements
z/OS V2R2 Enhancements
 
IBM z/OS Version 2 Release 2 -- Fueling the digital enterprise
IBM z/OS Version 2 Release 2 -- Fueling the digital enterpriseIBM z/OS Version 2 Release 2 -- Fueling the digital enterprise
IBM z/OS Version 2 Release 2 -- Fueling the digital enterprise
 
The IBM z13 - January 14, 2015 - IBM Latin America Hardware Announcement LG15...
The IBM z13 - January 14, 2015 - IBM Latin America Hardware Announcement LG15...The IBM z13 - January 14, 2015 - IBM Latin America Hardware Announcement LG15...
The IBM z13 - January 14, 2015 - IBM Latin America Hardware Announcement LG15...
 
IBM RACEv - Ferramenta para análise técnico e financeira para Plataforma Main...
IBM RACEv - Ferramenta para análise técnico e financeira para Plataforma Main...IBM RACEv - Ferramenta para análise técnico e financeira para Plataforma Main...
IBM RACEv - Ferramenta para análise técnico e financeira para Plataforma Main...
 
Unisanta - Visão Geral de hardware Servidor IBM System z
Unisanta - Visão Geral de hardware Servidor IBM System zUnisanta - Visão Geral de hardware Servidor IBM System z
Unisanta - Visão Geral de hardware Servidor IBM System z
 
Visão geral do hardware do servidor System z e Linux on z - Concurso Mainframe
Visão geral do hardware do servidor System z e Linux on z - Concurso MainframeVisão geral do hardware do servidor System z e Linux on z - Concurso Mainframe
Visão geral do hardware do servidor System z e Linux on z - Concurso Mainframe
 
Maximize o valor do z/OS
Maximize o valor do z/OSMaximize o valor do z/OS
Maximize o valor do z/OS
 
IBM Shopz - Procedimento de solicitação RSU para z/VM
IBM Shopz - Procedimento de solicitação RSU para z/VMIBM Shopz - Procedimento de solicitação RSU para z/VM
IBM Shopz - Procedimento de solicitação RSU para z/VM
 
Relatório Anual IBM 2013 v1
Relatório Anual IBM 2013 v1Relatório Anual IBM 2013 v1
Relatório Anual IBM 2013 v1
 
Servidor IBM zEnterprise BC12
Servidor IBM zEnterprise BC12Servidor IBM zEnterprise BC12
Servidor IBM zEnterprise BC12
 

Recently uploaded

08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 

Recently uploaded (20)

08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 

Blockchain - Hyperledger Fabric v1.0 Running on LinuxONE, see it in action!

  • 1. 1 Hands-on: Blockchain - Hyperledger Fabric V1.0 running on LinuxONE, see it in action! Speaker Name: Anderson W. Bassani (abassani@br.ibm.com) Introduction: In this Blockchain Laboratory, the participant will have the opportunity to deploy a Hyperledger Fabric on one Linux on z virtual Machine, running on IBM LinuxONE Community Cloud, using Docker Containers. Originally presented and delivered at IBM Technical University 2017 – Mogi das Cruzes, São Paulo. August 9, 2017.
  • 2. Exercises Guide 2 Exercise instructions In this lab exercise you will complete the following tasks: __ 1.First, let’s review Hyperledger Fabric: __ a. Terminology __ b. Architecture __ c. Differences between Hyperledger Fabric V0.6 to V1.0 __ 2.Second, create your own Linux on z virtual server and deploy a Hyperledger Fabric __ a. Sign up for a LinuxONE Community Cloud trial account __ b. Log on, create a SSH key pair, and deploy a virtual server instance __ c. Setup PuTTY to use a private key __ d. Access the virtual server with Secure Shell (SSH) __ e. Build the Hyperledger Fabric __ f. Create a four-peer network __ g. Deploy the example smart contract application
  • 3. 3 Task __ 1. Create your own Linux on z virtual server and deploy a Hyperledger Fabric __ a. Sign up for a LinuxONE Community Cloud trial account Important: In this Lab, you can now skip to Step 6: Install the Prerequisites on page 26. The instructor already created one Linux server and a key pair (private and public key) for each group. Ask the instructor your Group Number, from 01 to 12. Besides that fact, the LinuxONE Community Cloud is available on the internet, so you reproduce all the steps on your company or at Club Med Lake Paradise’s pool! Step 1: Registration If you have not done so already, register at: https://developer.ibm.com/linuxone/ for a 120-day trial account. You will receive an email containing credentials to access the LinuxONE Community Cloud self-service portal. This is where you can start exploring all our available services.
  • 4. Exercises Guide 4 Image: __ 1. Click on Start your trial now button. __ 2. You will be redirected to https://linuxone20.cloud.marist.edu/cloud/#/register for a page registration. Image:
  • 5. 5 __ 3. Fill all the mandatory fields. You will also need a valid email and cellphone to receive a valid code. __ 4. Insert your phone number and click “Get Code” __ 5. Check your phone for a 6-digit number. Or follow the above instructions to receive the code by email. __ 6. Type the code on the necessary field. Example:
  • 6. Exercises Guide 6 __ 7. Click on “Request your trial” button. __ 8. You should now receive an email with credentials. If you receive the error below, please contact the linux1@us.ibm.com team. __ 9. End of the exercise. You are now the newest member of the LinuxONE Community, enjoy it!
  • 7. 7 Image: Email with credentials to access the LinuxONE Community Cloud:
  • 8. Exercises Guide 8 Step 2: Log on to the self-service portal The portal URL and account credentials are located in the email received from “LinuxONE Community Cloud” (noreply@linuxone.cloud.marist.edu) with the subject “Registration successful”. __ 1. Click on the URL to access the cloud dashboard - https://linuxone20.cloud.marist.edu/cloud __ 2. Type in your account and password. __ 3. Click on Sign In. The LinuxONE Community Cloud initial screen will open.
  • 10. Exercises Guide 10 Step 3: Deploy a Virtual Server Instance and create a key pair. __ 1. On the Insfrastructure options, click on Manage Instances. __ 2. Click on Create __ 3. Let’s maintain the type of this virtual server as General purpose VM. The other option is Hackathon (code required) that isn’t our use case today.
  • 11. 11 __ 4. Let’s enter the Instance name and some description. My default is blockchainNN, where NN is the Group Number from 01 to 12. On the Description I choose to write: Hyperledger Fabric V1.0 IBM TechU 2017. __ 5. Click on SLES12 SP2 to select this image.
  • 12. Exercises Guide 12 __ 6. On the Select a Flavor, let’s choose the LinuxONE-Medium. When you click, the option is highlighted. __ 7. On the Select a SSH Key Pair, click on create. __ 8. On the key name, type what you want. In this exercise, I choose the following standard keyblockchainNN, where NN is the Group Number, from 01 to 12.
  • 13. 13 __ 9. Click on Create a new key pair. __ 10. Click on Save File to save your private key file (keyblockchain01.pem) Note: Take care in storing this private key. There is no way to retrieve this key once it has been saved. __ 11. Click on keyblockchain01 to highlight the SSH Key Pair. __ 12. Verify your selection, make any changes if necessary and click on Create.
  • 14. Exercises Guide 14 __ 13. Wait until your instance be deployed. The status change from spawning to ACTIVE. Image showing instances during deployment: Image showing the VM in active state and responding to ping: When the instance deployment is complete, you can click on View Details to display additional information about your virtual server.
  • 15. 15 Image: The Instance Status after a successful deployment This are the content of the RSA private key keyblockchain01.pem -----BEGIN RSA PRIVATE KEY----- MIIEqAIBAAKCAQEAuE1oL2UGKVVy7VDYqA8Gezw5QyMY5jM3q8r8cccOwCB1xKRA wxoeMj9GVZ+vbbDGs8JPvREIXQbGE/dZg4UmAklqYMg6ODA6c3cTYalOLJKIpgo6 AFNmstzN7rQxSGJA0nNBGq1voahcM8lGlliOUAU1isdpIbaGHBOthMApjODj3JO3 FuqeBJm36zgrdZwh9tcfrgUlRpidiILpyApHHJRjn5HipS8Y4fX2Nhh4buI9xTlC IsUrtPpDFL9gd2gAWTDXoZ5d9LqQHWpmHJSSz37+20KFBel5LalSW6j0kIEeD36/ j8vsYyWyCQv7LB4rwIndSCApY2S/wpg8hBZdOQIDAQABAoIBAD2o+CBTJjqR8f9f uvyO+lYkkevaRCxQGmIJaWgPdunkckI1ycz8YfnhnYBsCl8ic3gUnGTe2/NznrVz XalY1JyTP1nd40yFJikXP46++/6Bj+ItLbaKMKPKp8Mi2hIjfRhrou5v9Bcboq1Y u5r1SbeP5pflm1DCJiAinTz6pWwSB1dFLSz3J0dcbVcd/XftVdq8OaHrwQd70QWJ Dli+TW4G+9oTMibENOxlfdQod2ETxWuTSDqbu3cJznQQBjlgDZ1SPPfh704jSzQ2 U7VEoWasLIonelawapmrZkVwPVul/NohOI0qEBpLphO5xZumbGapdysl1lh93EmA nlMyQAECggCBAMSCbOTS24ONKhGp2bvVvcUvlSkWK1Xcram7Zh43IcqlwMTfLb73 ymmPnvsFOZ13L4lqCv4wQor7ET8GSV1c+TVtmhfseGtsfctWfEba70XTmkrwDwAz 8ydmuPS2l5IbGutlSNZEJRdlTupAGDcdp7pSu0SzxCoszisc2rd40Fk5AoIAgQDw GOztp73igsnM7i0WhFn2l6S8HrAv6PxL48khArzvHXTcsKndFjyAPQnfaC+t858b Y74QmWEAS0HNpkkOvTwP6EBYhFViIIcCkf+RAVUUzxZVXZlTGnWFqaIR1jdkJCT4 0omSKtv88P+qBPd8ic3AvZOW3iM8Y8VAMXyy1ookAQKCAIEArLtUisMJ75W7P/GE EYbtG5Ia1BXHm96xzDuMpMyjaGTQkHz40h8vjiCPh2jtXwuv/mL3LL4xD8dnPnYB MQ8Tg7JGu/bBVvPzkzQ/Y6z4m/FHc82V8gC4II87zuddTjGDNR0/rBAUZn9HocMb Rf9MOwyTze0SZlwiEWV4n8OTqIkCggCAGrbrRdYwLo/W3FJz+dloGSPuVHAlsm7+ A4Oo0V94njJs2lFd1RewS6R/ALia9YPx5B5I+5fVTy8Qd01VO6qakDqLTk4LIgv0 ebi88ulvCg2wsnbjpHeBNAoX2lw3dZD//B+Q5w6Vw6MdD1HWJ6k9l4CAd3zn9sQz Il1fPpbYcAECggCAWk9/440ytrSsR9HUeqHmxvjTfMaGUF3jbh8x860D99Kb5tTv etHyRPswCYdY7e5ABTRgwzyEX8EcAs89Die8TNklXOI+MLn2+K+xNYn7PAnmMjgW 16pz0JMn9S2Ex9kFBD3ua41AAnxSLc4yuFDU86t6qn0WJuqOl/rFcT7vkdM= -----END RSA PRIVATE KEY-----
  • 16. Exercises Guide 16 Step 4: Access the virtual server with Secure Shell (SSH). Login for the root user is disabled. You must log in with the linux1 user. This user has full sudo privilege. Linux and macOS Users: Follow the instructions below if your workstation have these operating systems installed __ 1. Make sure your key has a file permission of 600. Run this command to change it if necessary: $ ls -l | grep key -rw-r--r--@ 1 abassani staff 1683 Aug 5 18:56 keyblockchain01.pem -rw-r--r--@ 1 abassani staff 1683 Aug 5 17:12 keyblockchain02.pem -rw-r--r--@ 1 abassani staff 1687 Aug 5 19:05 keyblockchain03.pem -rw-r--r--@ 1 abassani staff 1683 Aug 5 19:06 keyblockchain04.pem -rw-r--r--@ 1 abassani staff 1683 Aug 5 19:06 keyblockchain05.pem -rw-r--r--@ 1 abassani staff 1687 Aug 5 19:32 keyblockchain06.pem $ chmod 600 keyblockchainNN.pem __ 2. Run this command from a terminal to connect to your deployed instance. ssh –i keyblockchainNN.pem linux1@<instance IP address> Where: NN is your Group Number, and the IP Address is provided below:
  • 17. 17 Table with hostname, IP Address, linux user and ssh keys: Hostname IP Address Linux user ssh key blockchain01 148.100.4.191 linux1 keyblockchain01.pem blockchain02 148.100.4.192 linux1 keyblockchain02.pem blockchain03 148.100.5.156 linux1 keyblockchain03.pem blockchain04 148.100.5.161 linux1 keyblockchain04.pem blockchain05 148.100.5.159 linux1 keyblockchain05.pem blockchain06 148.100.4.133 linux1 keyblockchain06.pem blockchain07 148.100.4.136 linux1 keyblockchain07.pem blockchain08 148.100.5.187 linux1 keyblockchain08.pem blockchain09 148.100.5.164 linux1 keyblockchain09.pem blockchain10 148.100.5.168 linux1 keyblockchain10.pem blockchain11 148.100.5.189 linux1 keyblockchain11.pem blockchain12 148.100.4.197 linux1 keyblockchain12.pem If you don’t execute the procedure above to change the file permissions you will receive the following error: $ ssh -i keyblockchain01.pem linux1@148.100.5.154 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0644 for 'keyblockchain01.pem' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignored. Load key "keyblockchain01.pem": bad permissions Permission denied (publickey).
  • 18. Exercises Guide 18 Note: If you create a RHEL or SLES virtual server, you should use ‘linux1’ as your user. For Ubuntu, use the ‘ubuntu’ userid. Note: This laboratory document all the steps for a SLES virtual server. But all the steps are all tested for the following Linux distros: • Red Hat Enterprise Linux (RHEL) 7.2 • SUSE Linux Enterprise Server (SLES) 12 • Ubuntu 16.04 LTS
  • 19. 19 Windows Workstation Users: Follow the instructions below if your workstation have Windows installed __ 1. You have to use an SSH client. A popular and free SSH client is PuTTY. You can download PuTTY from this website: http://www.putty.org/. __ 2. Set up PuTTY on Windows to use SSH private key. __ a. Download PuTTYgen from this website http://www.chiark.greenend.ork.uk/~sgtatham/putty/download.html __ b. Save the puttygen.exe (183 KB) binary file. __ c. Double click to execute PUTTYGEN program. Click Run. __ d. The PuTTY Key Generator initial screen will open.
  • 20. Exercises Guide 20 __ e. Let’s protect the private key. Click File > Load private key __ f. Select the folder that contains your private key. Select All Files (the PuTTY try to locate PuTTY Private Key Files with extension .ppk). Then, select the keyblockchainNN.pem private key file. Click Open.
  • 21. 21 __ g. Click OK button to acknowledge the successful notice __ h. Enter a key passphrase and confirm it. Important: The key passphrase that was used for all the Groups = ibmtechu2017
  • 22. Exercises Guide 22 __ i. Click Save private key. Each Group have one keyblockchainNN.ppk private key, so no one is able to connect on a different virtual machine. Note: the protected private key file (.ppk) just created is needed by PuTTY. __ j. Let’s now set up the PuTTY with the protected key already created. Start PuTTY. __ k. Select Connection > Expand SSH > Expand Auth and Click Browse to select the protected private key file (.ppk) Image example:
  • 23. 23 __ l. Select Connection > Data and enter linux1 in the Auto-login username textbox __ m. Select Session and enter the IP address for your virtual server in the Host Name textbox. On the Saved Session, insert your Group name (blockchainNN). Click Save.
  • 24. Exercises Guide 24 Image Example: __ n. Click Open and acknowledge the Security Alert by clicking Yes. __ o. Enter the passphrase for the protected private key. Hint: the passphrase is ibmtechu2017 __ p. Welcome to Bash! You will receive the Welcome to LinuxONE Community Cloud! Screen. ================================================================================= Welcome to the IBM LinuxONE Community Cloud! This server is for authorized users only. All activity is logged and monitored. Individuals using this server must abide to the Terms and Conditions listed here: https://developer.ibm.com/linuxone/linuxone-community-cloud-terms-conditions/. Your access will be revoked for any non-compliance. ==================================================================================
  • 25. 25 Step 5: Manage your virtual server instance You can use the self-service portal to: 1. Create an instance 2. Stop an instance 3. Start an instance 4. Delete an instance Important: Read the information below about your virtual server instance 1. The root user login is disabled. 2. You must log in with the user linux1 or ubuntu and with your SSH private key. 3. The linux1 user has full sudo privilege. 4. There is a 42 GB user disk mounted at /data. 5. Firewall is enabled. Only the SSH port is open. Modify the firewall rules if you need other ports opened. 6. Your server will be shut off if is inactive for more than 7 days. You can start it using the self-service portal. Note: About your LinuxONE Community Cloud account 1. Your LinuxONE Community Cloud trial allows you to deploy one (1) virtual server. You may delete this server and deploy another instance using other images in the catalog. 2. Your server will be deleted and the trial account will be cancelled if your server is shut off for more than 30 days. 3. You must abide to these terms of use (https://developer.ibm.com/linuxone/terms-of-use/ ) which you have agreed during registration. Any misuse will result in immediate revoke of access to the cloud.
  • 26. Exercises Guide 26 Step 6: Install the prerequisites The laboratory can be run on any supported level of Mac OSX, Linux and Windows machines. Our option is to run a Linux on z virtual server! Please note that as several hundred MBs in the form of docker images will be downloaded, suitable internet bandwidth and disk space is required. The following prerequisite software are also required: • Git command line • cURL (or Windows equivalent) • Docker • Docker Compose • Node.js It is important to ensure the correct versions of Docker, Docker Compose and Node.js are installed. Incorrect versions will lead to random errors. Please follow directions on this page for installing the correct versions: http://hyperledger-fabric.readthedocs.io/en/latest/prereqs.html __ 1. Log on to your virtual server with the ‘linux1’ user. ssh –i keyblockchain01.pem linux1@<server IP address> Or use an SSH client like PuTTY. __ 2. Switch to root user. sudo su - __ 3. Download and install Docker files. __ a. For SLES virtual machine the Docker is already installed. Check the version with the following commands:
  • 27. 27 zypper info docker Refreshing service 'SMT-http_lxslsmt'. Retrieving repository 'SUSE-PackageHub-12-SP2' metadata ......................................................................... ...........[done] Building repository 'SUSE-PackageHub-12-SP2' cache ......................................................................... ................[done] Loading repository data... Reading installed packages... Information for package docker: ------------------------------- Repository : SLE-Module-Containers12-Updates Name : docker Version : 17.04.0_ce-98.2 Arch : s390x Vendor : SUSE LLC <https://www.suse.com/> Support Level : Level 3 Installed Size : 43.3 MiB Installed : Yes Status : up-to-date Source package : docker-17.04.0_ce-98.2.src Summary : The Linux container runtime Description : Docker complements LXC with a high-level API which operates at the process level. It runs unix processes with strong guarantees of isolation and repeatability across servers. Docker is a great building block for automating distributed systems: large-scale web deployments, database clusters, continuous deployment systems, private PaaS, service-oriented architectures, etc. __ b. And the Docker Version: docker --version Docker version 17.04.0-ce, build 78d1802
  • 28. Exercises Guide 28 __ 4. Install pip. pip is a package management system used to install and manage software packages written in Python. Many packages can be found in the Python Package Index (PyPI) (from Wikipedia). Execute the following command: curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" You should see the following result: # curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1558k 100 1558k 0 0 7602k 0 --:--:-- --:--:-- --:--:-- 7637k __ 5. Check the python version python --version or python -V __ 6. Execute the following command to install pip and wheel: python get-pip.py As a result, you should see the following: # python get-pip.py Collecting pip Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB) 100% |████████████████████████████████| 1.3MB 876kB/s Collecting wheel Downloading wheel-0.29.0-py2.py3-none-any.whl (66kB) 100% |████████████████████████████████| 71kB 8.3MB/s Installing collected packages: pip, wheel Successfully installed pip-9.0.1 wheel-0.29.0 __ 6. Install Docker Compose.
  • 29. 29 pip install docker-compose __ 7. You can check the version of Docker Compose you have installed with the following command: docker-compose --version The result: docker-compose version 1.15.0, build e12f3b9 __ 8. Hyperledger Fabric uses the Go programming language 1.7.x for many of its components. Given that we are writing a Go chaincode program (not on this LAB at least ;-), we need to be sure that the source code is located somewhere within the $GOPATH tree. First, you will need to check that you have set your $GOPATH environment variable. echo $GOPATH __ 9. If nothing is displayed when you echo $GOPATH, you will need to set it. Typically, the value will be a directory tree child of your development workspace, if you have one, or as a child of your $HOME directory. Since we’ll be doing a bunch of coding in Go, you might want to add the following to your ~/.bashrc: export GOPATH=$HOME/go export PATH=$PATH:$GOPATH/bin __ 10. If you will be developing applications for Hyperledger Fabric leveraging the Hyperledger Fabric SDK for Node.js, you will need to have version 6.9.x of Node.js installed. zypper install nodejs6 nodejs-devel nodejs6-docs npm6 Answer yes to confirm the installation. You should see: # zypper install nodejs6 nodejs-devel nodejs6-docs npm6 Refreshing service 'SMT-http_lxslsmt'. Loading repository data... Reading installed packages... 'nodejs-devel' not found in package names. Trying capabilities. Resolving package dependencies... __ 3. The following 4 NEW packages are going to be installed:
  • 30. Exercises Guide 30 nodejs6 nodejs6-devel nodejs6-docs npm6 The following package is not supported by its vendor: nodejs6-devel 4 new packages to install. Overall download size: 7.5 MiB. Already cached: 0 B. After the operation, additional 38.1 MiB will be used. Continue? [y/n/...? shows all options] (y): y Retrieving package nodejs6-6.9.5-7.1.s390x (1/4), 4.9 MiB ( 20.6 MiB unpacked) Retrieving: nodejs6-6.9.5-7.1.s390x.rpm ....................................................................................................[done] Retrieving package nodejs6-docs-6.9.5-7.1.noarch (2/4), 427.2 KiB ( 7.4 MiB unpacked) Retrieving: nodejs6-docs-6.9.5-7.1.noarch.rpm ..............................................................................................[done] Retrieving package nodejs6-devel-6.9.5-7.1.s390x (3/4), 346.9 KiB ( 2.4 MiB unpacked) Retrieving: nodejs6-devel-6.9.5-7.1.s390x.rpm ..............................................................................................[done] Retrieving package npm6-6.9.5-7.1.s390x (4/4), 1.9 MiB ( 7.7 MiB unpacked) Retrieving: npm6-6.9.5-7.1.s390x.rpm .......................................................................................................[done] Checking for file conflicts: ...............................................................................................................[done] (1/4) Installing: nodejs6-6.9.5-7.1.s390x ..................................................................................................[done] (2/4) Installing: nodejs6-docs-6.9.5-7.1.noarch ............................................................................................[done] (3/4) Installing: nodejs6-devel-6.9.5-7.1.s390x ............................................................................................[done] (4/4) Installing: npm6-6.9.5-7.1.s390x .....................................................................................................[done]
  • 31. 31 Step 7: Download the Platform-specific Binaries Let’s install the Hyperledger Fabric platform-specific binaries. This process was designed to complement the Hyperledger Fabric Samples (next session – Step 8) but can be used independently. If you are not installing the samples right now, then simply create and enter a directory into which to extract the contents of the platform-specific binaries. __ 1. Still with root privileges, please execute the following command from within the directory into which you will extract the platform- specific binaries: cd /root curl -sSL https://goo.gl/iX9dek | bash The curl command above downloads and executes a bash script that will download and extract all of the platform-specific binaries you will need to set up your network and place them into the cloned repo you created above. It retrieves four platform-specific binaries: • cryptogen; • configtxgen; • configtxlator; and • peer Finally, the script will download the Hyperledger Fabric docker images from Docker Hub into your local Docker registry and tag them as ‘latest’. The script lists out the Docker images installed upon conclusion. Look at the names for each image; these are the components that will ultimately comprise our Hyperledger Fabric network. You will also notice that you have two instances of the same image ID - one tagged as “s390x-1.0.0” and one tagged as “latest”. Image showing the end of the bash script execution: ... ===> List out hyperledger docker images hyperledger/fabric-tools latest 7cd26291b56c 3 weeks ago 1.42GB hyperledger/fabric-tools s390x-1.0.0 7cd26291b56c 3 weeks ago 1.42GB hyperledger/fabric-couchdb latest 26049dead3d7 3 weeks ago 1.62GB hyperledger/fabric-couchdb s390x-1.0.0 26049dead3d7 3 weeks ago 1.62GB hyperledger/fabric-kafka latest a89ad1d0a0a3 3 weeks ago 1.4GB hyperledger/fabric-kafka s390x-1.0.0 a89ad1d0a0a3 3 weeks ago 1.4GB hyperledger/fabric-zookeeper latest cd1d0b980b9e 3 weeks ago 1.41GB
  • 32. Exercises Guide 32 hyperledger/fabric-zookeeper s390x-1.0.0 cd1d0b980b9e 3 weeks ago 1.41GB hyperledger/fabric-orderer latest dee450e190a1 3 weeks ago 194MB hyperledger/fabric-orderer s390x-1.0.0 dee450e190a1 3 weeks ago 194MB hyperledger/fabric-peer latest 80a0a7584af6 3 weeks ago 197MB hyperledger/fabric-peer s390x-1.0.0 80a0a7584af6 3 weeks ago 197MB hyperledger/fabric-javaenv latest ed9b3f85fcc2 3 weeks ago 1.48GB hyperledger/fabric-javaenv s390x-1.0.0 ed9b3f85fcc2 3 weeks ago 1.48GB hyperledger/fabric-ccenv latest 99d29b24f943 3 weeks ago 1.39GB hyperledger/fabric-ccenv s390x-1.0.0 99d29b24f943 3 weeks ago 1.39GB hyperledger/fabric-ca latest 775bfd123eb0 3 weeks ago 255MB hyperledger/fabric-ca s390x-1.0.0 775bfd123eb0 3 weeks ago 255MB __ 2. Just checking how much disk space was necessary with the following command: # df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 2.0G 8.0K 2.0G 1% /dev tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 2.0G 26M 1.9G 2% /run tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup /dev/dasda2 5.8G 3.2G 2.4G 58% / /dev/dasda1 388M 46M 323M 13% /boot/zipl /dev/dasdb1 45G 2.1G 40G 5% /data tmpfs 391M 0 391M 0% /run/user/1001
  • 33. 33 Step 8: Build your first network (BYFN) The build your first network (BYFN) scenario provisions a sample Hyperledger Fabric network consisting of two organizations, each maintaining two peer nodes, and a “solo” ordering service. Image showing an overview of the Laboratory Architecture: __ 1. Determine a location on your machine where you want to place the Hyperledger Fabric samples applications repository and open that in a terminal window. cd /data __ 2. Then, execute the following command to clone the repository: git clone https://github.com/hyperledger/fabric-samples.git
  • 34. Exercises Guide 34 You will notice that there are a number of samples included in the fabric-samples repository. We will be using the first-network sample. Let’s open that sub-directory now. __ 3. Execute the command to see the folder content: cd fabric-samples ls You should see something similar like this: # ls .git LICENSE README.md basic-network chaincode fabcar .gitignore MAINTAINERS.md balance-transfer bin chaincode-docker-devmode first-network __ 4. Open the first-network folder. cd first-network Note: The supplied commands in this documentation MUST be run from your first-network sub-directory of the fabric-samples repository clone. If you elect to run the commands from a different location, the various provided scripts will be unable to find the binaries. __ 5. We provide a fully annotated script - byfn.sh - that leverages these Docker images to quickly bootstrap a Hyperledger Fabric network comprised of 4 peers representing two different organizations, and an orderer node. It will also launch a container to run a scripted execution that will join peers to a channel, deploy and instantiate chaincode and drive execution of transactions against the deployed chaincode. Here’s the help text for the byfn.sh script: ./byfn.sh -h Read the information of the help command above. If you choose not to supply a channel name, then the script will use a default name of mychannel. The CLI timeout parameter (specified with the -t flag) is an optional value; if you choose not to set it, then your CLI container will exit upon conclusion of the script.
  • 35. 35 __ 6. Let’s generate the network artifacts. Ready to give it a go? Okay then! Execute the following command: ./byfn.sh -m generate __ 7. You will see a brief description as to what will occur, along with a yes/no command line prompt. Respond with a y to execute the described action. Type y and press enter: y You’ll see something similar like this: Generating certs and genesis block for with channel 'mychannel' and CLI timeout of '10000' Continue (y/n)?y proceeding ... /Users/xxx/dev/fabric-samples/bin/cryptogen ########################################################## ##### Generate certificates using cryptogen tool ######### ########################################################## org1.example.com 2017-06-12 21:01:37.334 EDT [bccsp] GetDefault -> WARN 001 Before using BCCSP, please call InitFactories(). Falling back to bootBCCSP. ... /Users/xxx/dev/fabric-samples/bin/configtxgen ########################################################## ######### Generating Orderer Genesis block ############## ########################################################## 2017-06-12 21:01:37.558 EDT [common/configtx/tool] main -> INFO 001 Loading configuration 2017-06-12 21:01:37.562 EDT [msp] getMspConfig -> INFO 002 intermediate certs folder not found at [/Users/xxx/dev/byfn/crypto- config/ordererOrganizations/example.com/msp/intermediatecerts]. Skipping.: [stat /Users/xxx/dev/byfn/crypto- config/ordererOrganizations/example.com/msp/intermediatecerts: no such file or directory] ... 2017-06-12 21:01:37.588 EDT [common/configtx/tool] doOutputBlock -> INFO 00b Generating genesis block 2017-06-12 21:01:37.590 EDT [common/configtx/tool] doOutputBlock -> INFO 00c Writing genesis block ################################################################# ### Generating channel configuration transaction 'channel.tx' ### ################################################################# 2017-06-12 21:01:37.634 EDT [common/configtx/tool] main -> INFO 001 Loading configuration 2017-06-12 21:01:37.644 EDT [common/configtx/tool] doOutputChannelCreateTx -> INFO 002 Generating new channel configtx 2017-06-12 21:01:37.645 EDT [common/configtx/tool] doOutputChannelCreateTx -> INFO 003 Writing new channel tx ################################################################# ####### Generating anchor peer update for Org1MSP ########## ################################################################# 2017-06-12 21:01:37.674 EDT [common/configtx/tool] main -> INFO 001 Loading configuration 2017-06-12 21:01:37.678 EDT [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update 2017-06-12 21:01:37.679 EDT [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update ################################################################# ####### Generating anchor peer update for Org2MSP ########## ################################################################# 2017-06-12 21:01:37.700 EDT [common/configtx/tool] main -> INFO 001 Loading configuration 2017-06-12 21:01:37.704 EDT [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update 2017-06-12 21:01:37.704 EDT [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update __ 8. Check that there are no Docker containers running:
  • 36. Exercises Guide 36 docker ps -a This first step generates all of the certificates and keys for all our various network entities, the genesis block used to bootstrap the ordering service, and a collection of configuration transactions required to configure a Channel. __ 9. Let’s bring up the network with the following command: ./byfn.sh -m up __ 10. Once again, you will be prompted as to whether you wish to continue or abort. Respond with a y: y The result shoud be something like this: Starting with channel 'mychannel' and CLI timeout of '10000' Continue (y/n)?y proceeding ... Creating network "net_byfn" with the default driver Creating peer0.org1.example.com Creating peer1.org1.example.com Creating peer0.org2.example.com Creating orderer.example.com Creating peer1.org2.example.com Creating cli ____ _____ _ ____ _____ / ___| |_ _| / | _ |_ _| ___ | | / _ | |_) | | | ___) | | | / ___ | _ < | | |____/ |_| /_/ _ |_| _ |_| Channel name : mychannel Creating channel... Wait a few minutes. The logs will continue from there. This will launch all of the containers, and then drive a complete end-to-end application scenario. Upon successful completion, it should report the following in your terminal window: 017-05-16 17:08:01.366 UTC [msp] GetLocalMSP -> DEBU 004 Returning existing local MSP 2017-05-16 17:08:01.366 UTC [msp] GetDefaultSigningIdentity -> DEBU 005 Obtaining default signing identity
  • 37. 37 2017-05-16 17:08:01.366 UTC [msp/identity] Sign -> DEBU 006 Sign: plaintext: 0AB1070A6708031A0C08F1E3ECC80510...6D7963631A0A0A0571756572790A0161 2017-05-16 17:08:01.367 UTC [msp/identity] Sign -> DEBU 007 Sign: digest: E61DB37F4E8B0D32C9FE10E3936BA9B8CD278FAA1F3320B08712164248285C54 Query Result: 90 2017-05-16 17:08:15.158 UTC [main] main -> INFO 008 Exiting..... ===================== Query on PEER3 on channel 'mychannel' is successful ===================== ===================== All GOOD, BYFN execution completed ===================== _____ _ _ ____ | ____| | | | | _ | _| | | | | | | | | |___ | | | | |_| | |_____| |_| _| |____/ __ 11. Press ctrl + c or control + c to escape the above screen and press Enter. ctrl + c __ 12. Repeate the docker ps -a command to display the running containers: # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 06b88bf6ec78 dev-peer1.org2.example.com-mycc-1.0 "chaincode -peer.a..." About a minute ago Up About a minute dev-peer1.org2.example.com-mycc-1.0 9d91c73cc444 dev-peer0.org1.example.com-mycc-1.0 "chaincode -peer.a..." About a minute ago Up About a minute dev-peer0.org1.example.com-mycc-1.0 d856bafcd7f3 dev-peer0.org2.example.com-mycc-1.0 "chaincode -peer.a..." About a minute ago Up About a minute dev-peer0.org2.example.com-mycc-1.0 d48333dd1691 hyperledger/fabric-tools "/bin/bash -c './s..." 2 minutes ago Up 2 minutes cli d4fd49e30324 hyperledger/fabric-orderer "orderer" 2 minutes ago Up 2 minutes 0.0.0.0:7050->7050/tcp orderer.example.com f0464a05e287 hyperledger/fabric-peer "peer node start" 2 minutes ago Up 2 minutes 0.0.0.0:9051->7051/tcp, 0.0.0.0:9053->7053/tcp peer0.org2.example.com 8c5a5536907f hyperledger/fabric-peer "peer node start" 2 minutes ago Up 2 minutes 0.0.0.0:8051->7051/tcp, 0.0.0.0:8053->7053/tcp peer1.org1.example.com 688303f824f0 hyperledger/fabric-peer "peer node start" 2 minutes ago Up 2 minutes 0.0.0.0:10051->7051/tcp, 0.0.0.0:10053->7053/tcp peer1.org2.example.com 514137fc97b1 hyperledger/fabric-peer "peer node start" 2 minutes ago Up 2 minutes 0.0.0.0:7051->7051/tcp, 0.0.0.0:7053->7053/tcp peer0.org1.example.com
  • 38. Exercises Guide 38 __ 13. Congratulation! Right now Hyperledger Fabric is ready to take an action! http://hyperledger-fabric.readthedocs.io/en/latest/write_first_app.html
  • 39. 39 Step 9: Query and Invoke the Ledger __ 1. We will enter the CLI container using the docker exec command: docker exec -it cli bash If successful you should see the following: root@cc744b56c2d2:/opt/gopath/src/github.com/hyperledger/fabric/peer# __ 2. By default, the script create or network and the channel with the name mychannel. Export the variable to facilitate the next commands. export CHANNEL_NAME=mychannel __ 3. QUERY. Let’s query for the value of a to make sure the chaincode was properly instantiated and the state DB was populated. The syntax for query is as follows: peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}' __ 4. You should see the following: Query Result: 90 Or a more complete output for comparison: root@cc744b56c2d2:/opt/gopath/src/github.com/hyperledger/fabric/peer# export CHANNEL_NAME=mychannel root@cc744b56c2d2:/opt/gopath/src/github.com/hyperledger/fabric/peer# env |grep CHANNEL CHANNEL_NAME=mychannel root@cc744b56c2d2:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}' 2017-08-07 03:37:40.325 UTC [msp] GetLocalMSP -> DEBU 001 Returning existing local MSP 2017-08-07 03:37:40.325 UTC [msp] GetDefaultSigningIdentity -> DEBU 002 Obtaining default signing identity 2017-08-07 03:37:40.325 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 003 Using default escc 2017-08-07 03:37:40.325 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 004 Using default vscc 2017-08-07 03:37:40.326 UTC [msp/identity] Sign -> DEBU 005 Sign: plaintext: 0A95070A6708031A0C0884C19FCC0510...6D7963631A0A0A0571756572790A0161 2017-08-07 03:37:40.326 UTC [msp/identity] Sign -> DEBU 006 Sign: digest: DA87A0B6CC18BCB9B3BB719314B522398ECBA0519AFC4822AE05BD04D038F901 Query Result: 90 2017-08-073:37:40.331 UTC [main] main -> INFO 007 Exiting....
  • 40. Exercises Guide 40 __ 5. Query the value of b. peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","b"]}' __ 6. You should see the following Query Result: 210 __ 7. INVOKE. Now let’s move 10 from a to b. This transaction will cut a new block and update the state DB. The syntax for invoke is as follows: peer chaincode invoke -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrgani zations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.e xample.com-cert.pem -C $CHANNEL_NAME -n mycc -c '{"Args":["invoke","a","b","10"]}' You should see something similar: root@cc744b56c2d2:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode invoke -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/ordere r.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C $CHANNEL_NAME -n mycc -c '{"Args":["invoke","a","b","10"]}' 2017-08-07 03:38:20.119 UTC [msp] GetLocalMSP -> DEBU 001 Returning existing local MSP 2017-08-07 03:38:20.119 UTC [msp] GetDefaultSigningIdentity -> DEBU 002 Obtaining default signing identity 2017-08-07 03:38:20.121 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 003 Using default escc 2017-08-07 03:38:20.121 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 004 Using default vscc 2017-08-07 03:38:20.121 UTC [msp/identity] Sign -> DEBU 005 Sign: plaintext: 0A94070A6608031A0B08ACC19FCC0510...696E766F6B650A01610A01620A023130 2017-08-07 03:38:20.121 UTC [msp/identity] Sign -> DEBU 006 Sign: digest: 80C7150550CF136DA7269AB2DE91454D54AAFD9835601553C0CBECCFA6C6FF98 2017-08-07 03:38:20.128 UTC [msp/identity] Sign -> DEBU 007 Sign: plaintext: 0A94070A6608031A0B08ACC19FCC0510...3A57B3F0F25E42D7D6814307AE83C838 2017-08-07 03:38:20.128 UTC [msp/identity] Sign -> DEBU 008 Sign: digest: 2034902319411D491C7BCCA740BD9C3D8173A51AA6578E309EFDFF043B4D0F8A 2017-08-07 03:38:20.135 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> DEBU 009 ESCC invoke result: version:1 response:<status:200 message:"OK" > payload:"n 206246345003317203372365H032007241A345201305H3310212;3603052700162241367UT3073010 22YnE022024n004lscc022014nnn004mycc022002010003022- n004mycc022%n007n001a022002010004n007n001b022002010004032007n001a03200280032010 n001b032003220032003010310001"013022004mycc0320031.0" endorsement:<endorser:"n007Org1MSP022200006-----BEGIN ----- nMIICGjCCAcCgAwIBAgIRAO/gdL7dB/bQms+3u+kYb0IwCgYIKoZIzj0EAwIwczELnMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3 JuaWExFjAUBgNVBAcTDVNhbiBGncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2NhnLm9yZzEuZXhh bXBsZS5jb20wHhcNMTcwODA3MDMyMDA3WhcNMjcwODA1MDMyMDA3nWjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEW MBQGA1UEBxMNnU2FuIEZyYW5jaXNjbzEfMB0GA1UEAxMWcGVlcjAub3JnMS5leGFtcGxlLmNvbTBZnMBMGByqGSM49AgEGCCqGSM49Aw EHA0IABBUYX5aSDcIWufE/UxpPwDgd3kcsocLQn/IAaYyz5N7nOBUx/ooiprCp2bEjFLWZgm8mWrlGGUuHpWESt8NYLBDyjTTBLMA4Gn A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIOyU5AYf5DoXn9lwvJ4hRC3RAzcgvIVPtw5IGk/678bjJMAoGCCqG
  • 41. 41 SM49BAMCA0gAMEUCIQD8n+kxnDbWWp8ZExWElfBbOKKTi878xp4RVOtrwGEPuNAIgNjCMihC3x6iQqFas4mO/TLhVnC94LpqQwbrEFoP vTKOc=n-----END -----n" signature:"0D002 }321351211335314~266313E246 202204032J3427217252250211)h362G 034u212^343002 w000262' 351330351360t252304C2272327:W263360362^B327326201C0072562033108" > 2017-08-07 03:38:20.137 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 00a Chaincode invoke successful. result: status:200 2017-08-073:38:20.137 UTC [main] main -> INFO 00b Exiting..... __ 8. QUERY. Let’s confirm that our previous invocation executed properly. We initialized the key a with a value of 90 and just removed 10 with our previous invocation. Therefore, a query against a should reveal 80. The syntax for query is as follows: peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}' __ 9. You should see the following for the value of a: Query Result: 80 Or a more complete output: root@cc744b56c2d2:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}' 2017-08-07 03:39:53.814 UTC [msp] GetLocalMSP -> DEBU 001 Returning existing local MSP 2017-08-07 03:39:53.814 UTC [msp] GetDefaultSigningIdentity -> DEBU 002 Obtaining default signing identity 2017-08-07 03:39:53.814 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 003 Using default escc 2017-08-07 03:39:53.814 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 004 Using default vscc 2017-08-07 03:39:53.814 UTC [msp/identity] Sign -> DEBU 005 Sign: plaintext: 0A95070A6708031A0C0889C29FCC0510...6D7963631A0A0A0571756572790A0161 2017-08-07 03:39:53.814 UTC [msp/identity] Sign -> DEBU 006 Sign: digest: 7177773F03F4FBAB3B6C28E849358B5D8102A8203773244447DF62A58E54FB8D Query Result: 80 2017-08-07 03:39:53.820 UTC [main] main -> INFO 007 Exiting..... __ 10. Query the value of b. peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","b"]}' __ 11. You should see the following ... Query Result: 220 2017-08-07 04:08:28.388 UTC [main] main -> INFO 007 Exiting.....
  • 42. Exercises Guide 42 Exercise review and wrap-up Having completed this exercise, you should be able to: • Describe of blockchain is and how does it integrates in the existing business processes • Describe blockchain major components • Deploy a Linux on z virtual server on IBM Community Cloud • Install the Hyperledger Fabric using Docker Containers • Install and test a smart contract Next steps: • Explore the additional bibliography on the Appendix below, like this one https://www.ibm.com/blockchain/getting-started.html
  • 43. 43 Bibliography Here it is some addition materials and references: 1. IBM and Blockchain - https://www.ibm.com/blockchain 2. IBM LinuxONE Community Cloud -https://developer.ibm.com/linuxone 3. Hyperledger Project - https://www.hyperledger.org/ 4. PuTTY Set up - https://developer.ibm.com/linuxone/wp- content/uploads/sites/57/2016/02/PUTTY-Set-up.pdf 5. Deploy a Virtual Server on LinuxONE – Quick Start Guide - https://developer.ibm.com/linuxone/wp- content/uploads/sites/57/virtual-servers-quick-start.pdf 6. LinuxONE Terms of Use - https://developer.ibm.com/linuxone/terms- of-use/ 7. Blockchain Quick Start Guide - https://developer.ibm.com/linuxone/wp- content/uploads/sites/57/blockchain-quick-start.pdf 8. Donna's Dillenberger's YouTube video: https://www.youtube.com/watch?v=EqZr4LPQIWk 9. https://docs.docker.com/engine/userguide/intro/ 10. https://docs.docker.com/engine/installation 11. https://hub.docker.com/r/ibmblockchain/fabric-peer/ 12. https://github.com/vpaprots/fabric- images/blob/master/docs/LinuxONE.md 13. https://raw.githubusercontent.com/cheeye/blockchain/master/docker- compose.yml 14. An introduction text about Blockchain - https://www.ibm.com/developerworks/cloud/library/cl-blockchain- basics-intro-bluemix-trs/index.html 15. Blockchain Terminology - https://www.ibm.com/developerworks/cloud/library/cl-blockchain- basics-glossary-bluemix-trs/index.html 16. Hyperledger Fabric – Link to Protocol Specification - https://github.com/hyperledger/fabric/blob/master/docs/protocol- spec.md 17. Hyperledger Fabric - https://hyperledger- fabric.readthedocs.io/en/latest/ 18. Docker Images - https://hub.docker.com/u/ibmblockchain/?cm_mc_uid=16545731835815018 912963&cm_mc_sid_50200000=1501961957&cm_mc_sid_52640000=1501961957
  • 44. Exercises Guide 44 Appendix – Handy Commands Stop all Docker containers docker stop $(docker ps –a –q) Removes all Docker instances docker rm –f $(docker ps –a –q) Romoves all Docker images docker rmi –f $(docker images –q)
  • 45. 45 Appendix # docker info Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 0 Server Version: 17.04.0-ce Storage Driver: overlay2 Backing Filesystem: extfs Supports d_type: true Native Overlay Diff: true Logging Driver: json-file Cgroup Driver: cgroupfs Plugins: Volume: local Network: bridge host macvlan null overlay Swarm: inactive Runtimes: oci runc Default Runtime: runc Init Binary: containerd version: (expected: 422e31ce907fd9c3833a38d7b8fdd023e5a76e73) runc version: N/A (expected: 9c2d8d184e5da67c95d601382adf14862e4f2228) init version: N/A (expected: 949e6facb77383876aeff8a6944dde66b3089574) Security Options: apparmor Kernel Version: 4.4.59-92.17-default Operating System: SUSE Linux Enterprise Server 12 SP2 OSType: linux Architecture: s390x CPUs: 2 Total Memory: 3.815GiB Name: blockchain007 ID: 2B2Q:PFKC:YKUS:V245:4ZJR:NDMN:7EV5:BK3Y:N37N:CVXI:IQ7Z:IC2M Docker Root Dir: /data/docker Debug Mode (client): false Debug Mode (server): false Registry: https://index.docker.io/v1/ Experimental: false Insecure Registries: 127.0.0.0/8 Live Restore Enabled: false WARNING: No swap limit support WARNING: No kernel memory limit support /etc/sysconfig # cat docker ## Path : System/Management ## Description : Extra cli switches for docker daemon ## Type : string ## Default : "" ## ServiceRestart : docker # DOCKER_OPTS="--graph=/data/docker" peer chaincode install -n mycc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02
  • 46. Exercises Guide 46 With gratitude This humble instructor could not complete this laboratory without the help of these teams: • IBM Poughkeepsie Customer Center • IBM LinuxONE Community Cloud • IBM Systems Lab Services Brazil – specially Anderson Augusto da Silveira and Tito Garrido Ogando • Sandra Russell • Eugene Ong • Qi Ye • Eva Yan, thanks for your help ;-)