SlideShare a Scribd company logo
1 of 16
Download to read offline
1
Hyperledger
Fabric
Architecture
 Fabric has several framework
components:
 Membership services for security:
audit, registration & identity
management
 Blockchain services: Consensus,
Storage & transactions
 Chaincode services: Secure
container & registry
 For the hackathon we will focus on
the container and blockchain
storage
2
Chaincode
REST ENDPOINTS
Hyperledger-java
API
Application code
ValidatingPeerNode
Dockercontainer RocksDB storage
Other
Validating
PeersREST
Consensus
Consensus
Consensus
Prerequisites
 Docker (I tested on 1.12.1 on Mac OS X)
 Docker Compose (kitematic is also helpful)
 Java/Golang environment for chaincode development (I used JDK 8 + Gradle 3.2)
 For application development:
 Java/Golang environment
 Your favourite development language, as long as you have a REST API available
 This guide loosely based on:
http://hyperledger-fabric.readthedocs.io/en/latest/starter/fabric-starter-kit/
3
The Environment
4
Starter
container
Member SVCs
Peer node
Container for the member
security services (not strictly
required for the hackathon)
Runs and builds the Fabric Shim
for interaction with Fabric
Runs and builds the java
chaincode
Requires Java + gradle to be
installed in the container
Deploys the Java chaincode
running on peer node into
Fabric
Used for executing
commands against the
running chaincode
Docker-compose.yml
membersrvc:
# try 'docker ps' to see the container status after starting this compose
container_name: membersrvc
image: hyperledger/fabric-membersrvc
command: membersrvc
environment:
- COMPOSE_HTTP_TIMEOUT=120
volumes:
- /Users/jbowkett/Documents/Excelian/blockchain/dev-team/git-clone/smart-cheques/starter-
kit/docker-containers/mapped-fs-member:/user/docker-containers/mapped-fs-member
peer:
container_name: peer
image: hyperledger/fabric-peer
environment:
- CORE_PEER_ADDRESSAUTODETECT=true
- CORE_VM_ENDPOINT=unix:///var/run/docker.sock
- CORE_LOGGING_LEVEL=DEBUG
- CORE_PEER_ID=vp0
- CORE_SECURITY_ENABLED=false
# - CORE_SECURITY_PRIVACY=false
- CORE_PEER_PKI_ECA_PADDR=membersrvc:7054
- CORE_PEER_PKI_TCA_PADDR=membersrvc:7054
- CORE_PEER_PKI_TLSCA_PADDR=membersrvc:7054
- CORE_PEER_VALIDATOR_CONSENSUS_PLUGIN=noops
- COMPOSE_HTTP_TIMEOUT=120
# this gives access to the docker host daemon to deploy chain code in network mode
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /Users/jbowkett/Documents/Excelian/blockchain/dev-team/git-clone/smart-cheques/starter-
kit/docker-containers/mapped-fs-peer:/user/docker-containers/mapped-fs-peer
5
# have the peer wait 10 sec for membersrvc to start
# the following is to run the peer in Developer mode - also set sample DEPLOY_MODE=dev
command: sh -c "sleep 10; peer node start --peer-chaincodedev"
#command: sh -c "sleep 10; peer node start"
links:
- membersrvc
ports:
- "5005:5005"
starter:
container_name: starter
image: hyperledger/fabric-starter-kit
volumes:
# tweak this to map a local development directory tree into the container
- /Users/jbowkett/Documents/Excelian/blockchain/dev-team/git-clone/smart-cheques/starter-
kit/docker-containers/mapped-fs-starter:/user/docker-containers/mapped-fs-starter
environment:
- MEMBERSRVC_ADDRESS=membersrvc:7054
- PEER_ADDRESS=peer:7051
- KEY_VALUE_STORE=/tmp/hl_sdk_node_key_value_store
# set to following to 'dev' if peer running in Developer mode
- COMPOSE_HTTP_TIMEOUT=120
- DEPLOY_MODE=dev
- CORE_CHAINCODE_ID_NAME=mycc
- CORE_PEER_ADDRESS=peer:7051
# the following command will start the chain code when this container starts and ready it for
deployment by the app
# command: sh -c "sleep 20;
/opt/gopath/src/github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02/chai
ncode_example02"
stdin_open: true
tty: true
links:
- membersrvc
- peer
Bootstrap the Docker environments
 Edit the volumes sections of your docker-compose.yml to map appropriate
directories for getting code onto your nodes
 Make sure those paths exist on your development (and “production” machine)
 Go to the directory the docker-compose.yml is installed:
$ docker-compose up -d
6
7
Update the peer node to run Java services
$ docker exec -it peer /bin/bash
peer$ peer node start --peer-chaincodedev
peer$ apt-get update && add-apt-repository ppa:webupd8team/java && add-
apt-repository ppa:cwchien/gradle && apt-get update && apt-get install
oracle-java8-installer
peer$ java –fullversion # should be JDK 1.8
peer$ apt-get install gradle
peer$ gradle –v # should be 3.2+
8
9
Install the chaincode shim into the gradle repo
peer$ cd $GOPATH/src/github.com/hyperledger/fabric/core/chaincode/shim/java
peer$ gradle clean build
10
The story so far….
 We’ve created the 3 Hyperledger docker containers (starter, membersvc and peer)
with mounted directories on our development machine
 Provisioned the peer node by installing the correct version of Java and Gradle
 Built the Hyperledger shim on the peer node and installed it as an available
dependency for later Gradle builds on the peer node
 Now let’s deploy an example chaincode application….
11
Install your chaincode on the peer node and run the service
import org.hyperledger.java.shim.ChaincodeBase;
import org.hyperledger.java.shim.ChaincodeStub;
public class HelloWorldChaincode extends ChaincodeBase {
public HelloWorldChaincode() { }
public String run(ChaincodeStub chaincodeStub, String function, String[] args) {
return "hello world!";
}
public String query(ChaincodeStub chaincodeStub, String function, String[] args) {
return "hello world query";
}
public String getChaincodeID() {
return "HelloWorldChaincode";
}
public static void main(String[] args) {
new HelloWorldChaincode().start(args);
}
}12
$ cp <hello world chaincode src> <mapped dir for peer>
Start the chaincode
 peer$ gradle clean build runHello
 $ docker exec -it starter /bin/bash
 starter$ peer chaincode deploy -l java -n HelloWorldChaincode -c
'{"Args":[]}'
 starter$ peer chaincode invoke -l java -n HelloWorldChaincode -c
'{"Args":[]}’
 starter$ peer chaincode query -l java -n HelloWorldChaincode -c
'{"Args":[]}'
13
SUCCESS !!!!
A quick recap….
1. Create the 3 Hyperledger Docker containers (starter, membersvc and peer) with
mapped directories to our development machine
2. Provision the peer node by logging into the Docker container and installing the
correct version of Java and Gradle
3. Build the Hyperledger shim on the peer node and install it as an available
dependency for later Gradle builds on the peer node
4. Create a HelloWorld chaincode on our development machine & copy the code+build
script to the peer node using our Docker mapped-directory
5. On the starter node, deploy the chaincode into Fabric, and then use the starter node
to query the running chaincode within fabric
14
Some APIs and Examples to be aware of
 Table creation:
final List<TableProto.ColumnDefinition> columnDefs = new ArrayList<>();
columnDefs.add(newBuilder().setName("hash").setKey(true).setType(STRING).build());
columnDefs.add(newBuilder().setName("messages").setKey(false).setType(STRING).build());
final boolean success = chaincodeStub.createTable(TABLE_NAME, columnDefs);
 Lookup is based on the key column only
 https://github.com/hyperledger/fabric/tree/master/examples/chaincode/java
 Examples:
 LinkExample – Invoking one chaincode from another
 MapExample – Simple map storage
 RangeExample – Query storage with range
 SimpleExample – Transferring value using Arguments
 TableExample – C/R/D Using underlying storage tables
15
Useful links
 https://docs.docker.com/engine/installation/
 https://docs.docker.com/engine/installation/linux/linux-postinstall/  Important on
Linux if running Docker on boot
 http://hyperledger-fabric.readthedocs.io
 http://hyperledger-fabric.readthedocs.io/en/latest/starter/fabric-starter-kit/
 https://github.com/jbowkett/zug-hackathon
 https://github.com/hyperledger/fabric/tree/master/examples/chaincode/java
 https://gradle.org/documentation/
16

More Related Content

What's hot

Hyperledger Fabric and Tools
Hyperledger Fabric and ToolsHyperledger Fabric and Tools
Hyperledger Fabric and ToolsRihusoft
 
Hyperledger Fabric Technical Deep Dive 20190618
Hyperledger Fabric Technical Deep Dive 20190618Hyperledger Fabric Technical Deep Dive 20190618
Hyperledger Fabric Technical Deep Dive 20190618Arnaud Le Hors
 
Distributed:Health Code Camp Hyperledger
Distributed:Health Code Camp HyperledgerDistributed:Health Code Camp Hyperledger
Distributed:Health Code Camp HyperledgerTracy Kuhrt
 
Hyperledger Composer Update 2017-04-05
Hyperledger Composer Update 2017-04-05Hyperledger Composer Update 2017-04-05
Hyperledger Composer Update 2017-04-05Dan Selman
 
Developing applications with Hyperledger Fabric SDK
Developing applications with Hyperledger Fabric SDKDeveloping applications with Hyperledger Fabric SDK
Developing applications with Hyperledger Fabric SDKHorea Porutiu
 
Hyperledger community update Feb 20, 2018
Hyperledger community update Feb 20, 2018Hyperledger community update Feb 20, 2018
Hyperledger community update Feb 20, 2018Arnaud Le Hors
 
Blockchain Hyperledger Lab
Blockchain Hyperledger LabBlockchain Hyperledger Lab
Blockchain Hyperledger LabDev_Events
 
Hyperledger community update 201805
Hyperledger community update 201805Hyperledger community update 201805
Hyperledger community update 201805Arnaud Le Hors
 
Introduction of Hyperledger Fabric & Composer
Introduction of Hyperledger Fabric & Composer Introduction of Hyperledger Fabric & Composer
Introduction of Hyperledger Fabric & Composer Dr. Ketan Parmar
 
Hong Kong Hyperledger Meetup January 2018
Hong Kong Hyperledger Meetup January 2018Hong Kong Hyperledger Meetup January 2018
Hong Kong Hyperledger Meetup January 2018Tracy Kuhrt
 
Hyperledger Fabric: A Custom Blockchain Solution for Corporate Use
Hyperledger Fabric: A Custom Blockchain Solution for Corporate UseHyperledger Fabric: A Custom Blockchain Solution for Corporate Use
Hyperledger Fabric: A Custom Blockchain Solution for Corporate UseRobert Tochman-Szewc
 
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
 
Orchestraing the Blockchain Using Containers
Orchestraing the Blockchain Using ContainersOrchestraing the Blockchain Using Containers
Orchestraing the Blockchain Using ContainersAndrew Kennedy
 
Blockchain Explorer
Blockchain ExplorerBlockchain Explorer
Blockchain ExplorerRihusoft
 
IBM Bluemix Nice Meetup - 20171120 - Hyperledger Fabric & Composer
IBM Bluemix Nice Meetup - 20171120 - Hyperledger Fabric & ComposerIBM Bluemix Nice Meetup - 20171120 - Hyperledger Fabric & Composer
IBM Bluemix Nice Meetup - 20171120 - Hyperledger Fabric & ComposerIBM France Lab
 
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
 

What's hot (20)

Hyperledger Fabric and Tools
Hyperledger Fabric and ToolsHyperledger Fabric and Tools
Hyperledger Fabric and Tools
 
Conoscerehyperledger
ConoscerehyperledgerConoscerehyperledger
Conoscerehyperledger
 
Excelian hyperledger fabric-feb17
Excelian hyperledger fabric-feb17Excelian hyperledger fabric-feb17
Excelian hyperledger fabric-feb17
 
Hyperledger Fabric Technical Deep Dive 20190618
Hyperledger Fabric Technical Deep Dive 20190618Hyperledger Fabric Technical Deep Dive 20190618
Hyperledger Fabric Technical Deep Dive 20190618
 
Distributed:Health Code Camp Hyperledger
Distributed:Health Code Camp HyperledgerDistributed:Health Code Camp Hyperledger
Distributed:Health Code Camp Hyperledger
 
Hyperledger Composer Update 2017-04-05
Hyperledger Composer Update 2017-04-05Hyperledger Composer Update 2017-04-05
Hyperledger Composer Update 2017-04-05
 
Developing applications with Hyperledger Fabric SDK
Developing applications with Hyperledger Fabric SDKDeveloping applications with Hyperledger Fabric SDK
Developing applications with Hyperledger Fabric SDK
 
Hyperledger community update Feb 20, 2018
Hyperledger community update Feb 20, 2018Hyperledger community update Feb 20, 2018
Hyperledger community update Feb 20, 2018
 
Hyperledger fabric 3
Hyperledger fabric 3Hyperledger fabric 3
Hyperledger fabric 3
 
Blockchain Hyperledger Lab
Blockchain Hyperledger LabBlockchain Hyperledger Lab
Blockchain Hyperledger Lab
 
Hyperledger community update 201805
Hyperledger community update 201805Hyperledger community update 201805
Hyperledger community update 201805
 
Introduction of Hyperledger Fabric & Composer
Introduction of Hyperledger Fabric & Composer Introduction of Hyperledger Fabric & Composer
Introduction of Hyperledger Fabric & Composer
 
IBM Blockchain Overview
IBM Blockchain OverviewIBM Blockchain Overview
IBM Blockchain Overview
 
Hong Kong Hyperledger Meetup January 2018
Hong Kong Hyperledger Meetup January 2018Hong Kong Hyperledger Meetup January 2018
Hong Kong Hyperledger Meetup January 2018
 
Hyperledger Fabric: A Custom Blockchain Solution for Corporate Use
Hyperledger Fabric: A Custom Blockchain Solution for Corporate UseHyperledger Fabric: A Custom Blockchain Solution for Corporate Use
Hyperledger Fabric: A Custom Blockchain Solution for Corporate Use
 
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?
 
Orchestraing the Blockchain Using Containers
Orchestraing the Blockchain Using ContainersOrchestraing the Blockchain Using Containers
Orchestraing the Blockchain Using Containers
 
Blockchain Explorer
Blockchain ExplorerBlockchain Explorer
Blockchain Explorer
 
IBM Bluemix Nice Meetup - 20171120 - Hyperledger Fabric & Composer
IBM Bluemix Nice Meetup - 20171120 - Hyperledger Fabric & ComposerIBM Bluemix Nice Meetup - 20171120 - Hyperledger Fabric & Composer
IBM Bluemix Nice Meetup - 20171120 - Hyperledger Fabric & Composer
 
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
 

Viewers also liked

Smart Contracts: Opportunities and Challenges
Smart Contracts: Opportunities and ChallengesSmart Contracts: Opportunities and Challenges
Smart Contracts: Opportunities and ChallengesCasey Kuhlman
 
Gluecon 2016 Keynote: Deploying and Managing Blockchain Applications
Gluecon 2016 Keynote: Deploying and Managing Blockchain ApplicationsGluecon 2016 Keynote: Deploying and Managing Blockchain Applications
Gluecon 2016 Keynote: Deploying and Managing Blockchain ApplicationsDuncan Johnston-Watt
 
Edcon - Hardware wallets and smart contracts
Edcon -  Hardware wallets and smart contractsEdcon -  Hardware wallets and smart contracts
Edcon - Hardware wallets and smart contractsEric Larcheveque
 
Introduction to Hyperledger Composer
Introduction to Hyperledger ComposerIntroduction to Hyperledger Composer
Introduction to Hyperledger ComposerSimon Stone
 
Trading Derivatives on Hyperledger
Trading Derivatives on HyperledgerTrading Derivatives on Hyperledger
Trading Derivatives on HyperledgerLF Events
 
How to Never Leave Your Deployment Unattended
How to Never Leave Your Deployment UnattendedHow to Never Leave Your Deployment Unattended
How to Never Leave Your Deployment UnattendedAltoros
 
Technical Introduction to Hyperledger Fabric v1.0
Technical Introduction to Hyperledger Fabric v1.0Technical Introduction to Hyperledger Fabric v1.0
Technical Introduction to Hyperledger Fabric v1.0Altoros
 
Fabric Composer - London Hyperledger Meetup - March 2017
Fabric Composer - London Hyperledger Meetup - March 2017Fabric Composer - London Hyperledger Meetup - March 2017
Fabric Composer - London Hyperledger Meetup - March 2017Simon Stone
 
Introduction to Blockchain and the Hyperledger Project
Introduction to Blockchain and the Hyperledger ProjectIntroduction to Blockchain and the Hyperledger Project
Introduction to Blockchain and the Hyperledger ProjectManuel Garcia
 
Architecture of the Hyperledger Blockchain Fabric - Christian Cachin - IBM Re...
Architecture of the Hyperledger Blockchain Fabric - Christian Cachin - IBM Re...Architecture of the Hyperledger Blockchain Fabric - Christian Cachin - IBM Re...
Architecture of the Hyperledger Blockchain Fabric - Christian Cachin - IBM Re...Romeo Kienzler
 

Viewers also liked (11)

Smart Contracts: Opportunities and Challenges
Smart Contracts: Opportunities and ChallengesSmart Contracts: Opportunities and Challenges
Smart Contracts: Opportunities and Challenges
 
Gluecon 2016 Keynote: Deploying and Managing Blockchain Applications
Gluecon 2016 Keynote: Deploying and Managing Blockchain ApplicationsGluecon 2016 Keynote: Deploying and Managing Blockchain Applications
Gluecon 2016 Keynote: Deploying and Managing Blockchain Applications
 
Edcon - Hardware wallets and smart contracts
Edcon -  Hardware wallets and smart contractsEdcon -  Hardware wallets and smart contracts
Edcon - Hardware wallets and smart contracts
 
Introduction to Hyperledger Composer
Introduction to Hyperledger ComposerIntroduction to Hyperledger Composer
Introduction to Hyperledger Composer
 
Trading Derivatives on Hyperledger
Trading Derivatives on HyperledgerTrading Derivatives on Hyperledger
Trading Derivatives on Hyperledger
 
How to Never Leave Your Deployment Unattended
How to Never Leave Your Deployment UnattendedHow to Never Leave Your Deployment Unattended
How to Never Leave Your Deployment Unattended
 
Technical Introduction to Hyperledger Fabric v1.0
Technical Introduction to Hyperledger Fabric v1.0Technical Introduction to Hyperledger Fabric v1.0
Technical Introduction to Hyperledger Fabric v1.0
 
Code is not law
Code is not lawCode is not law
Code is not law
 
Fabric Composer - London Hyperledger Meetup - March 2017
Fabric Composer - London Hyperledger Meetup - March 2017Fabric Composer - London Hyperledger Meetup - March 2017
Fabric Composer - London Hyperledger Meetup - March 2017
 
Introduction to Blockchain and the Hyperledger Project
Introduction to Blockchain and the Hyperledger ProjectIntroduction to Blockchain and the Hyperledger Project
Introduction to Blockchain and the Hyperledger Project
 
Architecture of the Hyperledger Blockchain Fabric - Christian Cachin - IBM Re...
Architecture of the Hyperledger Blockchain Fabric - Christian Cachin - IBM Re...Architecture of the Hyperledger Blockchain Fabric - Christian Cachin - IBM Re...
Architecture of the Hyperledger Blockchain Fabric - Christian Cachin - IBM Re...
 

Similar to Excelian hyperledger walkthrough-feb17

[Codelab 2017] Docker 기초 및 활용 방안
[Codelab 2017] Docker 기초 및 활용 방안[Codelab 2017] Docker 기초 및 활용 방안
[Codelab 2017] Docker 기초 및 활용 방안양재동 코드랩
 
JDD2015: Kubernetes - Beyond the basics - Paul Bakker
JDD2015: Kubernetes - Beyond the basics - Paul BakkerJDD2015: Kubernetes - Beyond the basics - Paul Bakker
JDD2015: Kubernetes - Beyond the basics - Paul BakkerPROIDEA
 
Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...
Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...
Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...Patrick Chanezon
 
Docker Enterprise Workshop - Technical
Docker Enterprise Workshop - TechnicalDocker Enterprise Workshop - Technical
Docker Enterprise Workshop - TechnicalPatrick Chanezon
 
Continuous Integration With Jenkins Docker SQL Server
Continuous Integration With Jenkins Docker SQL ServerContinuous Integration With Jenkins Docker SQL Server
Continuous Integration With Jenkins Docker SQL ServerChris Adkin
 
Azure Bootcamp 2016 - Docker Orchestration on Azure with Rancher
Azure Bootcamp 2016 - Docker Orchestration on Azure with RancherAzure Bootcamp 2016 - Docker Orchestration on Azure with Rancher
Azure Bootcamp 2016 - Docker Orchestration on Azure with RancherKarim Vaes
 
Making a small QA system with Docker
Making a small QA system with DockerMaking a small QA system with Docker
Making a small QA system with DockerNaoki AINOYA
 
[Devconf.cz][2017] Understanding OpenShift Security Context Constraints
[Devconf.cz][2017] Understanding OpenShift Security Context Constraints[Devconf.cz][2017] Understanding OpenShift Security Context Constraints
[Devconf.cz][2017] Understanding OpenShift Security Context ConstraintsAlessandro Arrichiello
 
Docker 1.11 Presentation
Docker 1.11 PresentationDocker 1.11 Presentation
Docker 1.11 PresentationSreenivas Makam
 
Setup docker on existing application
Setup docker on existing applicationSetup docker on existing application
Setup docker on existing applicationLuc Juggery
 
Microservices DevOps on Google Cloud Platform
Microservices DevOps on Google Cloud PlatformMicroservices DevOps on Google Cloud Platform
Microservices DevOps on Google Cloud PlatformSunnyvale
 
Introduction to Docker - Learning containerization XP conference 2016
Introduction to Docker - Learning containerization  XP conference 2016Introduction to Docker - Learning containerization  XP conference 2016
Introduction to Docker - Learning containerization XP conference 2016XP Conference India
 
Настройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'aНастройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'acorehard_by
 
Docker, Kubernetes, and Google Cloud
Docker, Kubernetes, and Google CloudDocker, Kubernetes, and Google Cloud
Docker, Kubernetes, and Google CloudSamuel Chow
 
Docker for Java Developers
Docker for Java DevelopersDocker for Java Developers
Docker for Java DevelopersImesh Gunaratne
 
Orchestrating Docker with OpenStack
Orchestrating Docker with OpenStackOrchestrating Docker with OpenStack
Orchestrating Docker with OpenStackErica Windisch
 
Deploying windows containers with kubernetes
Deploying windows containers with kubernetesDeploying windows containers with kubernetes
Deploying windows containers with kubernetesBen Hall
 
Dessi docker kubernetes paas cloud
Dessi docker kubernetes paas cloudDessi docker kubernetes paas cloud
Dessi docker kubernetes paas cloudMassimiliano Dessì
 

Similar to Excelian hyperledger walkthrough-feb17 (20)

[Codelab 2017] Docker 기초 및 활용 방안
[Codelab 2017] Docker 기초 및 활용 방안[Codelab 2017] Docker 기초 및 활용 방안
[Codelab 2017] Docker 기초 및 활용 방안
 
JDD2015: Kubernetes - Beyond the basics - Paul Bakker
JDD2015: Kubernetes - Beyond the basics - Paul BakkerJDD2015: Kubernetes - Beyond the basics - Paul Bakker
JDD2015: Kubernetes - Beyond the basics - Paul Bakker
 
Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...
Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...
Docker Azure Friday OSS March 2017 - Developing and deploying Java & Linux on...
 
Docker 101 Checonf 2016
Docker 101 Checonf 2016Docker 101 Checonf 2016
Docker 101 Checonf 2016
 
Docker Enterprise Workshop - Technical
Docker Enterprise Workshop - TechnicalDocker Enterprise Workshop - Technical
Docker Enterprise Workshop - Technical
 
Continuous Integration With Jenkins Docker SQL Server
Continuous Integration With Jenkins Docker SQL ServerContinuous Integration With Jenkins Docker SQL Server
Continuous Integration With Jenkins Docker SQL Server
 
Azure Bootcamp 2016 - Docker Orchestration on Azure with Rancher
Azure Bootcamp 2016 - Docker Orchestration on Azure with RancherAzure Bootcamp 2016 - Docker Orchestration on Azure with Rancher
Azure Bootcamp 2016 - Docker Orchestration on Azure with Rancher
 
Making a small QA system with Docker
Making a small QA system with DockerMaking a small QA system with Docker
Making a small QA system with Docker
 
[Devconf.cz][2017] Understanding OpenShift Security Context Constraints
[Devconf.cz][2017] Understanding OpenShift Security Context Constraints[Devconf.cz][2017] Understanding OpenShift Security Context Constraints
[Devconf.cz][2017] Understanding OpenShift Security Context Constraints
 
Docker 1.11 Presentation
Docker 1.11 PresentationDocker 1.11 Presentation
Docker 1.11 Presentation
 
Setup docker on existing application
Setup docker on existing applicationSetup docker on existing application
Setup docker on existing application
 
Microservices DevOps on Google Cloud Platform
Microservices DevOps on Google Cloud PlatformMicroservices DevOps on Google Cloud Platform
Microservices DevOps on Google Cloud Platform
 
Introduction to Docker - Learning containerization XP conference 2016
Introduction to Docker - Learning containerization  XP conference 2016Introduction to Docker - Learning containerization  XP conference 2016
Introduction to Docker - Learning containerization XP conference 2016
 
Настройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'aНастройка окружения для кросскомпиляции проектов на основе docker'a
Настройка окружения для кросскомпиляции проектов на основе docker'a
 
Docker, Kubernetes, and Google Cloud
Docker, Kubernetes, and Google CloudDocker, Kubernetes, and Google Cloud
Docker, Kubernetes, and Google Cloud
 
Docker for Java Developers
Docker for Java DevelopersDocker for Java Developers
Docker for Java Developers
 
Orchestrating Docker with OpenStack
Orchestrating Docker with OpenStackOrchestrating Docker with OpenStack
Orchestrating Docker with OpenStack
 
Deploying windows containers with kubernetes
Deploying windows containers with kubernetesDeploying windows containers with kubernetes
Deploying windows containers with kubernetes
 
ABCs of docker
ABCs of dockerABCs of docker
ABCs of docker
 
Dessi docker kubernetes paas cloud
Dessi docker kubernetes paas cloudDessi docker kubernetes paas cloud
Dessi docker kubernetes paas cloud
 

Recently uploaded

TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdfChristopherTHyatt
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
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
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 

Recently uploaded (20)

TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
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
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 

Excelian hyperledger walkthrough-feb17

  • 2. Architecture  Fabric has several framework components:  Membership services for security: audit, registration & identity management  Blockchain services: Consensus, Storage & transactions  Chaincode services: Secure container & registry  For the hackathon we will focus on the container and blockchain storage 2 Chaincode REST ENDPOINTS Hyperledger-java API Application code ValidatingPeerNode Dockercontainer RocksDB storage Other Validating PeersREST Consensus Consensus Consensus
  • 3. Prerequisites  Docker (I tested on 1.12.1 on Mac OS X)  Docker Compose (kitematic is also helpful)  Java/Golang environment for chaincode development (I used JDK 8 + Gradle 3.2)  For application development:  Java/Golang environment  Your favourite development language, as long as you have a REST API available  This guide loosely based on: http://hyperledger-fabric.readthedocs.io/en/latest/starter/fabric-starter-kit/ 3
  • 4. The Environment 4 Starter container Member SVCs Peer node Container for the member security services (not strictly required for the hackathon) Runs and builds the Fabric Shim for interaction with Fabric Runs and builds the java chaincode Requires Java + gradle to be installed in the container Deploys the Java chaincode running on peer node into Fabric Used for executing commands against the running chaincode
  • 5. Docker-compose.yml membersrvc: # try 'docker ps' to see the container status after starting this compose container_name: membersrvc image: hyperledger/fabric-membersrvc command: membersrvc environment: - COMPOSE_HTTP_TIMEOUT=120 volumes: - /Users/jbowkett/Documents/Excelian/blockchain/dev-team/git-clone/smart-cheques/starter- kit/docker-containers/mapped-fs-member:/user/docker-containers/mapped-fs-member peer: container_name: peer image: hyperledger/fabric-peer environment: - CORE_PEER_ADDRESSAUTODETECT=true - CORE_VM_ENDPOINT=unix:///var/run/docker.sock - CORE_LOGGING_LEVEL=DEBUG - CORE_PEER_ID=vp0 - CORE_SECURITY_ENABLED=false # - CORE_SECURITY_PRIVACY=false - CORE_PEER_PKI_ECA_PADDR=membersrvc:7054 - CORE_PEER_PKI_TCA_PADDR=membersrvc:7054 - CORE_PEER_PKI_TLSCA_PADDR=membersrvc:7054 - CORE_PEER_VALIDATOR_CONSENSUS_PLUGIN=noops - COMPOSE_HTTP_TIMEOUT=120 # this gives access to the docker host daemon to deploy chain code in network mode volumes: - /var/run/docker.sock:/var/run/docker.sock - /Users/jbowkett/Documents/Excelian/blockchain/dev-team/git-clone/smart-cheques/starter- kit/docker-containers/mapped-fs-peer:/user/docker-containers/mapped-fs-peer 5 # have the peer wait 10 sec for membersrvc to start # the following is to run the peer in Developer mode - also set sample DEPLOY_MODE=dev command: sh -c "sleep 10; peer node start --peer-chaincodedev" #command: sh -c "sleep 10; peer node start" links: - membersrvc ports: - "5005:5005" starter: container_name: starter image: hyperledger/fabric-starter-kit volumes: # tweak this to map a local development directory tree into the container - /Users/jbowkett/Documents/Excelian/blockchain/dev-team/git-clone/smart-cheques/starter- kit/docker-containers/mapped-fs-starter:/user/docker-containers/mapped-fs-starter environment: - MEMBERSRVC_ADDRESS=membersrvc:7054 - PEER_ADDRESS=peer:7051 - KEY_VALUE_STORE=/tmp/hl_sdk_node_key_value_store # set to following to 'dev' if peer running in Developer mode - COMPOSE_HTTP_TIMEOUT=120 - DEPLOY_MODE=dev - CORE_CHAINCODE_ID_NAME=mycc - CORE_PEER_ADDRESS=peer:7051 # the following command will start the chain code when this container starts and ready it for deployment by the app # command: sh -c "sleep 20; /opt/gopath/src/github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02/chai ncode_example02" stdin_open: true tty: true links: - membersrvc - peer
  • 6. Bootstrap the Docker environments  Edit the volumes sections of your docker-compose.yml to map appropriate directories for getting code onto your nodes  Make sure those paths exist on your development (and “production” machine)  Go to the directory the docker-compose.yml is installed: $ docker-compose up -d 6
  • 7. 7
  • 8. Update the peer node to run Java services $ docker exec -it peer /bin/bash peer$ peer node start --peer-chaincodedev peer$ apt-get update && add-apt-repository ppa:webupd8team/java && add- apt-repository ppa:cwchien/gradle && apt-get update && apt-get install oracle-java8-installer peer$ java –fullversion # should be JDK 1.8 peer$ apt-get install gradle peer$ gradle –v # should be 3.2+ 8
  • 9. 9
  • 10. Install the chaincode shim into the gradle repo peer$ cd $GOPATH/src/github.com/hyperledger/fabric/core/chaincode/shim/java peer$ gradle clean build 10
  • 11. The story so far….  We’ve created the 3 Hyperledger docker containers (starter, membersvc and peer) with mounted directories on our development machine  Provisioned the peer node by installing the correct version of Java and Gradle  Built the Hyperledger shim on the peer node and installed it as an available dependency for later Gradle builds on the peer node  Now let’s deploy an example chaincode application…. 11
  • 12. Install your chaincode on the peer node and run the service import org.hyperledger.java.shim.ChaincodeBase; import org.hyperledger.java.shim.ChaincodeStub; public class HelloWorldChaincode extends ChaincodeBase { public HelloWorldChaincode() { } public String run(ChaincodeStub chaincodeStub, String function, String[] args) { return "hello world!"; } public String query(ChaincodeStub chaincodeStub, String function, String[] args) { return "hello world query"; } public String getChaincodeID() { return "HelloWorldChaincode"; } public static void main(String[] args) { new HelloWorldChaincode().start(args); } }12 $ cp <hello world chaincode src> <mapped dir for peer>
  • 13. Start the chaincode  peer$ gradle clean build runHello  $ docker exec -it starter /bin/bash  starter$ peer chaincode deploy -l java -n HelloWorldChaincode -c '{"Args":[]}'  starter$ peer chaincode invoke -l java -n HelloWorldChaincode -c '{"Args":[]}’  starter$ peer chaincode query -l java -n HelloWorldChaincode -c '{"Args":[]}' 13 SUCCESS !!!!
  • 14. A quick recap…. 1. Create the 3 Hyperledger Docker containers (starter, membersvc and peer) with mapped directories to our development machine 2. Provision the peer node by logging into the Docker container and installing the correct version of Java and Gradle 3. Build the Hyperledger shim on the peer node and install it as an available dependency for later Gradle builds on the peer node 4. Create a HelloWorld chaincode on our development machine & copy the code+build script to the peer node using our Docker mapped-directory 5. On the starter node, deploy the chaincode into Fabric, and then use the starter node to query the running chaincode within fabric 14
  • 15. Some APIs and Examples to be aware of  Table creation: final List<TableProto.ColumnDefinition> columnDefs = new ArrayList<>(); columnDefs.add(newBuilder().setName("hash").setKey(true).setType(STRING).build()); columnDefs.add(newBuilder().setName("messages").setKey(false).setType(STRING).build()); final boolean success = chaincodeStub.createTable(TABLE_NAME, columnDefs);  Lookup is based on the key column only  https://github.com/hyperledger/fabric/tree/master/examples/chaincode/java  Examples:  LinkExample – Invoking one chaincode from another  MapExample – Simple map storage  RangeExample – Query storage with range  SimpleExample – Transferring value using Arguments  TableExample – C/R/D Using underlying storage tables 15
  • 16. Useful links  https://docs.docker.com/engine/installation/  https://docs.docker.com/engine/installation/linux/linux-postinstall/  Important on Linux if running Docker on boot  http://hyperledger-fabric.readthedocs.io  http://hyperledger-fabric.readthedocs.io/en/latest/starter/fabric-starter-kit/  https://github.com/jbowkett/zug-hackathon  https://github.com/hyperledger/fabric/tree/master/examples/chaincode/java  https://gradle.org/documentation/ 16