Вы находитесь на странице: 1из 39

Blockchain &

Brooklyn
Distributed Ledgers and Smart Contracts with Apache Brooklyn and Hyperledger

Andrew Donald Kennedy, October 2017


Introduction

What is Blockchain

The Hyperledger Project

Available Distributions from Hyperledger

Some Example Blockchain Use Cases

Apache Brooklyn and Hyperledger

@grkvlt
Blockchain

A new kind of transactional database.

@grkvlt
Blockchain?

A new way of charging 10x as much for a transactional database.

@grkvlt
Blockchain

"Blockchain is a technology for a new generation of


transactional applications that establishes trust, accountability
and transparency while streamlining business processes."

Or...

"Blockchain is a distributed, cryptographically secure ledger of


transactions."

@grkvlt
Blockchain

"A blockchain is a fully-distributed, peer-to-peer software


network which makes use of cryptography to securely host
applications, store data, and easily transfer digital instruments
of value that represent real-world money. "

Dannen, Chris; Introducing Ethereum and Solidity; DOI 10.1007/978-1-4842-2535-6_1

@grkvlt
Blockchain Overview

@grkvlt
Blockchain Properties

Transactions

Security

Privacy

Reliability

Resilience

@grkvlt
Blockchain Use Cases

@grkvlt
Hyperledger
Hyperledger Fabric

The Hyperledger Project is a


collaborative effort created to
advance Blockchain technology
by identifying and addressing
important features for a cross-
industry open standard for
Distributed Ledgers that can
transform the way business
Transactions are conducted
globally.

@grkvlt
Hyperledger Fabric

Open Source

Originally IBM Blockchain

Graduated to become first


Hyperledger Foundation
Incubator project

Linux Foundation Collaboration

@grkvlt
Hyperledgers Modular Umbrella Approach

Infrastructure
Technical, Legal, Marketing,
Organizational
Ecosystems that accelerate open
development and commercial CloudFoundry Node.js Hyperledger Cloud Native
adoption

Frameworks
Meaningfully differentiated approaches to Hyperledger Hyperledger Hyperledger Hyperledger
business blockchain frameworks developed by a Fabric Iroha Sawtooth Burrow
growing community of communities from the
entire industry

Hyperledger Hyperledger Hyperledger


Tools
Composer Explorer Cello
Typically built for one framework, and
through common license and
community of communities approach, Hyperledger
ported to other frameworks Indy

@grkvlt
Hyperledger Distributions

Hyperledger Fabric

Hyperledger Burrow

Hyperledger Sawtooth

Monax

Hyperledger Cello and Composer

@grkvlt
Brooklyn Blockchain Blueprints

Hyperledger Fabric 1.0 Framework


Hyperledger Burrow Framework
Hyperledger Sawtooth Framework

Blockchain Asset Management Application

Blockchain Certificate Authority

Smart Contract Deployment

@grkvlt
Cloudsoft Blockchain Service

Deploy Hyperledger Frameworks to virtually any environment


Currently Hyperledger Fabric included in AMP
Hyperledger Burrow and Sawtooth in progress
Let developers focus on creating Chaincode or Smart Contracts, not the
infrastructure and plumbing
Accelerate Time to Value for enterprises interested in Blockchain
Cloudsoft Blockchain Service is available via the IBM Marketplace
Cloudsoft is a Founder Member of the IBM Blockchain Ecosystem and
a member of the Hyperledger Foundation
@grkvlt
Blueprints
Cloudsoft Blockchain Service

@grkvlt
Hyperledger Fabric

Identity
Privacy
Confidentiality
Auditability

@grkvlt
Hyperledger Application Fabric

The Hyperledger Application Fabric is a group of Clusters of


Docker Engines spread across different regions, giving a global
deployment that can be easily scaled and extended.

Hyperledger components are Docker containers providing


Blockchain services.

@grkvlt
Hyperledger and Kubernetes

With the current popularity of Kubernetes as a container platform, it


would be very useful to be able to deploy Hyperledger there.
Kubernetes Pods are the unit of deployment for containers, and are
defined as YAML resource files.

The Cloudsoft AMP Container Service allows deployment of these


Kubernetes resources, and we are in the process of developing Pods
for the Hyperledger components. This feature will be part of the next
release of the Cloudsoft HLF in AMP 5.0.

@grkvlt
23
24
25
Global private cloud

London

San Jose Tokyo

Dedicated locations connected via fully meshed private network


@grkvlt
Hyperledger Fabric

@grkvlt
Hyperledger Fabric

@grkvlt
Hyperledger Fabric

@grkvlt
Simple Blueprint

Extract the essential components from


the previous architecture diagram:

1. Web Application
Node.js Server and Redis Store
2. Chaincode (or Smart Contract)

Reducing Complexity
Simple Brooklyn concepts
Dozen lines of YAML
@grkvlt
Simple Blueprint
location:
prod-kubernetes-europe
services:
- id: webapp
type: nodejs-server
brooklyn.config:
webapp.archive.url: "file://src.zip"
metadata.endpoint:
$brooklyn:entity("metadata")
.attributeWhenReady("datastore.url")
hyperledger.endpoint:
$brooklyn:config("assetmgmt.endpoint")
- id: metadata
type: redis-server
- id: asset-management
type: hyperledger-chaincode
brooklyn.config:
chaincode.url:
$brooklyn:config("assetmgmt.archive")
hyperledger.url:
$brooklyn:config("assetmgmt.endpoint")

@grkvlt
Simple Blueprint
location:
prod-kubernetes-europe
services:
- id: webapp
type: nodejs-server
brooklyn.config:
webapp.archive.url: "file://src.zip"
metadata.endpoint:
$brooklyn:entity("metadata")
.attributeWhenReady("datastore.url")
hyperledger.endpoint:
$brooklyn:config("assetmgmt.endpoint")
- id: metadata
type: redis-server
- id: asset-management
type: hyperledger-chaincode
brooklyn.config:
chaincode.url:
$brooklyn:config("assetmgmt.archive")
hyperledger.url:
$brooklyn:config("assetmgmt.endpoint")

@grkvlt
Simple Blueprint
location:
prod-kubernetes-europe
services:
- id: webapp
type: nodejs-server
brooklyn.config:
webapp.archive.url: "file://src.zip"
metadata.endpoint:
$brooklyn:entity("metadata")
.attributeWhenReady("datastore.url")
hyperledger.endpoint:
$brooklyn:config("assetmgmt.endpoint")
- id: metadata
type: redis-server
- id: asset-management
type: hyperledger-chaincode
brooklyn.config:
chaincode.url:
$brooklyn:config("assetmgmt.archive")
hyperledger.url:
$brooklyn:config("assetmgmt.endpoint")

@grkvlt
Simple Blueprint
location:
prod-kubernetes-europe
services:
- id: webapp
type: nodejs-server
brooklyn.config:
webapp.archive.url: "file://src.zip"
metadata.endpoint:
$brooklyn:entity("metadata")
.attributeWhenReady("datastore.url")
hyperledger.endpoint:
$brooklyn:config("assetmgmt.endpoint")
- id: metadata
type: redis-server
- id: asset-management
type: hyperledger-chaincode
brooklyn.config:
chaincode.url:
$brooklyn:config("assetmgmt.archive")
hyperledger.url:
$brooklyn:config("assetmgmt.endpoint")

@grkvlt
Simple Blueprint
location:
prod-kubernetes-europe
services:
- id: webapp
type: nodejs-server
brooklyn.config:
webapp.archive.url: "file://src.zip"
metadata.endpoint:
$brooklyn:entity("metadata")
.attributeWhenReady("datastore.url")
hyperledger.endpoint:
$brooklyn:config("assetmgmt.endpoint")
- id: metadata
type: redis-server
- id: asset-management
type: hyperledger-chaincode
brooklyn.config:
chaincode.url:
$brooklyn:config("assetmgmt.archive")
hyperledger.url:
$brooklyn:config("assetmgmt.endpoint")

@grkvlt
Simple Blueprint
location:
prod-kubernetes-europe
services:
- id: webapp
type: nodejs-server
brooklyn.config:
webapp.archive.url: "file://src.zip"
metadata.endpoint:
$brooklyn:entity("metadata")
.attributeWhenReady("datastore.url")
hyperledger.endpoint:
$brooklyn:config("assetmgmt.endpoint")
- id: metadata
type: redis-server
- id: asset-management
type: hyperledger-chaincode
brooklyn.config:
chaincode.url:
$brooklyn:config("assetmgmt.archive")
hyperledger.url:
$brooklyn:config("assetmgmt.endpoint")

@grkvlt
Simple Blueprint
location:
prod-kubernetes-europe
services:
- id: webapp
type: nodejs-server
brooklyn.config:
webapp.archive.url: "file://src.zip"
metadata.endpoint:
$brooklyn:entity("metadata")
.attributeWhenReady("datastore.url")
hyperledger.endpoint:
$brooklyn:config("assetmgmt.endpoint")
- id: metadata
type: redis-server
- id: asset-management
type: hyperledger-chaincode
brooklyn.config:
chaincode.url:
$brooklyn:config("assetmgmt.archive")
hyperledger.url:
$brooklyn:config("assetmgmt.endpoint")

@grkvlt
Hyperledger Sample Application

We can demonstrate an asset management Chaincode


application that spins up a Non-Validating Peer in a Docker
container, deploys the Chaincode onto the Validating Peer
Cluster and then performs the following Transactions:

1. Assigns an asset to Alice


2. Transfers to Bob and verifies ownership
3. Transfers to Charlie and verifies ownership
4. Transfers to Dave and verifies ownership

@grkvlt
?

Вам также может понравиться