Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Blockchain and Brooklyn

Blockchain and Brooklyn

Distributed Ledgers and Smart Contracts with Apache Brooklyn and Hyperledger. Lightning talk given at Cloudsoft in October 2017.

Andrew Kennedy

October 16, 2017
Tweet

More Decks by Andrew Kennedy

Other Decks in Programming

Transcript

  1. Blockchain & Brooklyn
    Distributed Ledgers and Smart Contracts with Apache Brooklyn and Hyperledger
    Andrew Donald Kennedy, October 2017

    View Slide

  2. What is Blockchain
    The Hyperledger Project
    Available Distributions from Hyperledger
    Some Example Blockchain Use Cases
    Apache Brooklyn and Hyperledger
    Introduction
    @grkvlt

    View Slide

  3. Blockchain
    A new kind of transactional database.
    @grkvlt

    View Slide

  4. Blockchain?
    A new way of charging 10x as much for a transactional database.
    @grkvlt

    View Slide

  5. 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

    View Slide

  6. 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

    View Slide

  7. Blockchain Overview
    @grkvlt

    View Slide

  8. Blockchain Properties
    Transactions
    Security
    Privacy
    Reliability
    Resilience
    @grkvlt

    View Slide

  9. Blockchain Use Cases
    @grkvlt

    View Slide

  10. Hyperledger

    View Slide

  11. 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.
    Hyperledger Fabric
    @grkvlt

    View Slide

  12. • Open Source
    • Originally IBM Blockchain
    • Graduated to become first
    Hyperledger Foundation
    Incubator project
    • Linux Foundation Collaboration
    Hyperledger Fabric
    @grkvlt

    View Slide

  13. Hyperledger’s Modular Umbrella Approach
    Tools
    Typically built for one framework, and
    through common license and
    community of communities approach,
    ported to other frameworks
    Hyperledger
    Indy
    Hyperledger
    Fabric
    Hyperledger
    Iroha
    Hyperledger
    Sawtooth
    Hyperledger
    Burrow
    Hyperledger
    CloudFoundry Node.js Cloud Native
    Infrastructure
    Technical, Legal, Marketing,
    Organizational
    Ecosystems that accelerate open
    development and commercial
    adoption
    Frameworks
    Meaningfully differentiated approaches to
    business blockchain frameworks developed by a
    growing community of communities from the
    entire industry
    Hyperledger
    Composer
    Hyperledger
    Explorer
    Hyperledger
    Cello
    @grkvlt

    View Slide

  14. View Slide

  15. Hyperledger Fabric
    Hyperledger Burrow
    Hyperledger Sawtooth
    Monax
    Hyperledger Cello and Composer
    Hyperledger Distributions
    @grkvlt

    View Slide

  16. 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

    View Slide

  17. 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

    View Slide

  18. Blueprints

    View Slide

  19. Cloudsoft Blockchain Service
    @grkvlt

    View Slide

  20. • Identity
    • Privacy
    • Confidentiality
    • Auditability
    Hyperledger Fabric
    @grkvlt

    View Slide

  21. 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

    View Slide

  22. 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

    View Slide

  23. 23

    View Slide

  24. 24

    View Slide

  25. 25

    View Slide

  26. San Jose Tokyo
    London
    Global private cloud
    Dedicated locations connected via fully meshed private network
    @grkvlt

    View Slide

  27. Hyperledger Fabric
    @grkvlt

    View Slide

  28. Hyperledger Fabric
    @grkvlt

    View Slide

  29. Hyperledger Fabric
    @grkvlt

    View Slide

  30. 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

    View Slide

  31. 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

    View Slide

  32. 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

    View Slide

  33. 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

    View Slide

  34. 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

    View Slide

  35. 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

    View Slide

  36. 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

    View Slide

  37. 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

    View Slide

  38. 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

    View Slide

  39. ?

    View Slide