BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3...

44
BLOCKCHAIN Technology & Applications #apiconf2018 edoardo conte

Transcript of BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3...

Page 1: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applications

#apiconf2018

edoardoconte

Page 2: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applications

#apiconf2018

edoardoconte

BLOCKCHAIN Technology&Applications

Page 3: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

The Blockchain

Page 4: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

Distributed anddecentralized

Normally, also Decentralized

Distributed System

Page 5: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

Public Blockchains

Possibility to design and deploy Smart Contracts

Decentralizedand distributed

systems

Everyone can join and maintain the

blockchain

Page 6: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

Consensus Algorithm

Determine the current builder

Necessary to maintain a unique sequence of blocks!

Proof of Work Proof of Stake

Page 7: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

Proof of Work Proof of Stake

Consensus Algorithm

Non-scalable algorithm

Complexity really low

Possibility to scale

Very complex to implement

Costless algorithmGreat computational cost

Page 8: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BlockchainBridgeClient

Distributednetwork

Read access link for the service

Write access link for the service

accessing the service

accessing the service

BLOCKCHAIN Technology&Applicationsedoardoconte

Secure datathrough Blockchains

Server with important data

Page 9: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

Permissioned Blockchains

Different authorized entities work together to

maintain a common service

Standardizedencryption and

replication protocols

Not completelydecentralized

Page 10: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

Hyperledger Fabric

Chaincode(Smart Contracts)

b

Customizable consensus algorithm

c

Full replicationof data

a

•Crash Fault Tolerant

•Byzantine Fault Tolerant

d State database in CouchDB or LevelDB

Page 11: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

Structure

BLOCKCHAIN Technology&Applicationsedoardoconte

Orderer

Peer

Peer

Org1 Org2

CA1

CA2

Peer

Peer

EndorsingPeer

EndorsingPeer

• Ordering service

• Consensus algorithm

• Different organizations

• Scalability

• Certificate authorities

• Endorsing peers

• Execution of chaincode

Page 12: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

Transaction Flow

EndorsingPeer

Execute

Client

EndorsingPeer

BLOCKCHAIN Technology&Applicationsedoardoconte

1. Client sends a transaction request

2. Execution of Chaincode

3. Sending the results back

Page 13: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

Order

Client

Orderer

Transaction Flow

EndorsingPeer

EndorsingPeer

2. Ordering of transactions

1. Results sentto the orderer

Page 14: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

Validate

OrdererEndorsing

Peer

EndorsingPeer

Peer

Peer

Peer

Transaction Flow

1. Validation of each block

2. If positive, it goes in the ledger

Client

Page 15: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

OrdererEndorsing

Peer

EndorsingPeer

Peer

Peer

Peer

Client

Transaction Flow

Validate

1. Validation of each block

2. If positive, it goes in the ledger

Page 16: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

Hyperledger Composer

Framework over FabricLogic2 Access Control3Modeling language1

• Participant

• Asset

• Transaction

• Event

• Definition of the

transaction logic

• Javascript code

• Permissions

on resources

• Complex conditioned rules

Page 17: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

Model.cto

/*** Definition of participants*/participant Person identified by username {o String usernameo String fullNameo String email optionalo String number optional

}

participant Manufacturer identified by makerId {o String makerIdo String name

}

Page 18: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

Model.cto

/*** Definition of assets*/asset Vehicle identified by vin {o String vino VehicleDetails vehicleDetails--> Person owner

}

Page 19: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

Model.cto

/*** Definition of transactions*/transaction ChangeOwner {--> Vehicle vehicle--> Person newOwner

}

transaction SellVehicle {o VehicleDetails vehicleDetailso String vin--> Person owner

}

Page 20: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

Logic.js

/*** Sell vehicle transaction* @param {org.acme.vehicle.SellVehicle} arg* @transaction*/function onSellVehicle (arg) {

}

Page 21: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

Logic.js

const namespace = 'org.acme.vehicle';

// Extracting argument values

let vehicleDetails = arg.vehicleDetails;const vin = arg.vin;const owner = arg.owner;const manufacturer = getCurrentParticipant();vehicleDetails.manufacturer = manufacturer;

Page 22: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

Logic.js

const factory = getFactory();

// Creating the vehiclelet vehicle =

factory.newResource(namespace, 'Vehicle', vin);

vehicle.vehicleDetails = vehicleDetails;vehicle.owner = owner;

Page 23: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

Logic.js

Update

// Updating the registry

return getAssetRegistry(namespace + '.Vehicle’).then ( assetRegistry => {

return assetRegistry.add(vehicle);})

Page 24: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

Logic.js

Update

// Updating the registry

return getAssetRegistry(namespace + '.Vehicle’).then ( assetRegistry => {

return assetRegistry.add(vehicle);})

Page 25: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

Permissions.acl

rule ManufReadsVehicle {description: "Manuf may read a car only if he made it"participant(manuf): "org.acme.vehicle.Manufacturer"operation: READresource(vehicle): "org.acme.vehicle.Vehicle"condition: ( manuf.getIdentifier() ==

vehicle.vehicleDetails.manufacturer.getIdentifier() )

action: ALLOW}

Page 26: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

Network Set Up

ORG1 ORG2 ORDERER

2 Peers 1 Peer Solo

CA CA

CouchDB CouchDB

Page 27: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

Node 1

Orderer

Node 2

SQL DB

Node 4Node 3

Org 1 Endorsing Peer

CouchDB

Org1 CA

Org 1 Peer

CouchDB

NodeJs App

SQL DB

Org 2 Endorsing Peer

CouchDB

Org 2 CA

NodeJs App

Client

• Each element is a Docker container

• Docker Swarm to communicate

• API exposed by NodeJs

• Composer SDK in NodeJs

Page 28: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

Opening connection

const BusinessNetworkConnection =require('composer-client').BusinessNetworkConnection;

module.exports = class Network {

constructor(cardName) {this.cardName = cardName;this.connection = new BusinessNetworkConnection();this.definition;this.namespace = 'org.acme.vehicle';

}

async connect() {return this.definition =

await this.connection.connect(this.cardName);}

Blockchainconnection

Page 29: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

Submit Transaction

Blockchain

const factory = this.definition.getFactory();

// Submit transactionconst tx =

factory.newTransaction(this.namespace, 'SellVehicle’);

tx.vehicleDetails = vehicleDetalils;tx.vin = vin;tx.owner =

factory.newRelationship(this.namespace, 'Person', ownerId);

return await this.connection.submitTransaction(tx);

Page 30: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

Submit Transaction

Blockchain

const factory = this.definition.getFactory();

// Submit transactionconst tx =

factory.newTransaction(this.namespace, 'SellVehicle’);

tx.vehicleDetails = vehicleDetalils;tx.vin = vin;tx.owner =

factory.newRelationship(this.namespace, 'Person', ownerId);

return await this.connection.submitTransaction(tx);

Page 31: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

Repositories

https://bitbucket.org/hugrave/composer-vehicle-network/

https://bitbucket.org/hugrave/blockchain_server/

Page 32: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

Performance evaluation

Benchmark done with 1000 assets

GET —> ~ 10 seconds

PUT, DELETE —> ~ 100 SECONDS

Improvement through Cloud deployment

Not real-time applications

Page 33: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

PRIVACY

Rich conditioned languagePermissions in Hyperledger Composer

BUT… The ledger remains in plain-text!

/var/hyperledger/production/ledgersData/chains/chains/{channel_name}/

Page 34: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

DO NOT DESPAIR!

Page 35: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

Peer 1 Peer 2 Peer 3

Fabric Channels

Channel 1 Channel 2 Channel 3

Page 36: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

Peer 1 Peer 2 Peer 3

Fabric Channels

Channel 1 Channel 2 Channel 3

Channel 3

Peer 1 joined channel 3Peer3 joined channel 2

Channel 2

Page 37: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

Off-chain encryptiondecryption

Page 38: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

Off-chain encryptiondecryption

Client1

DB

Data inserted in the blockchain is encrypted

Decryption is possible only with the keys

NodeJs Org1

Page 39: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

Off-chain encryptiondecryption

DB

BLOCKCHAIN Technology&Applicationsedoardoconte

Client1

Data inserted in the blockchain is encrypted

Decryption is possible only with the keys

NodeJs Org1

Page 40: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

Off-chain encryptiondecryption

Client1 Client2

DB

DB

Authorization is a secure keys exchange

NodeJs Org1 NodeJs Org2

Page 41: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

Off-chain encryptiondecryption

Client1 Client2

DB

DB

NodeJs Org1 NodeJs Org2

Page 42: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

BLOCKCHAIN Technology&Applicationsedoardoconte

CONCLUSIONS

They can rely on a robust architecture

b

Each company checks directly wether the structureof the network is respected

c

Companies may share their data securely

a

d

Performances may be improved through Cloud deployment or container optimizations

e Privacy must be taken into account in order to separate data

Page 43: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB

Endless PossibilitiesThank you for the attention

Edoardo Conte

BLOCKCHAIN Technology&Applicationsedoardoconte

Page 44: BLOCKCHAIN Technology Applications #apiconf2018 · Applications Node 1 Orderer Node 2 SQL DB Node 3 Node 4 Org 1 Endorsing Peer CouchDB Org1 CA Org 1 Peer CouchDB NodeJs App SQL DB