SlideShare une entreprise Scribd logo
1  sur  56
Télécharger pour lire hors ligne
Flowchain: A case study on building a
Blockchain for the IoT
#LinuxCon, Beijing, June 19-20, 2017
Jollen <jollen@jollen.org>
Lead Developer, Flowchain.co
@jollen
https://flowchain.co
(LC3 China)
Agenda
• Architecture Overview
• Device Interoperability
• Distributed Ledger for the IoT
• Consensus System
• Use the Flowchain SDK
2
Architecture Overview
Major IoT platforms are based on centralized model. The
platform acts as broker or hub to control the interactions
between devices.
Devices need to exchange data between themselves
autonomously. This leads to decentralized IoT platforms.
Blockchain IoT Purposes
4
Preliminary
• A blockchain is only one type of data structure
considered to be a distributed ledger
• A distributed ledger technology (DLT) provides a new
data structure varies from the blockchain for various
purposes
5
Blockchain Data Structure
• Ordered and back-linked list
• Stored in a flat file or database
• Each block is identified by a hash
• Double SHA-256 hash function
6
DLT Essentials
• A peer-to-peer network
• Consensus algorithms
7
Background
• A case study of a distributed ledger designed for the
IoT devices
• A Web of Things server to represent the device as a
Virtual Thing
Web of Things Server
Block Store
Web of Things Server
Block Store
Web of Things Server
Block Store
p2p p2p
8
Goal and Purpose
• Decentralized IoT
• Centralized IoT model uses an IoT platform that
acts as “hub” to control the data exchange
between devices.
• The IoT needs a decentralized IoT platform for
exchanging data without any centralized party.
• IoT Blockchain
• The Blockchain technology helps facilitate such
challenges.
9
Web of Things Layer
Interoperable and decentralized IoT model
Chord
Distributed hash table
Flowcoin
Peer-to-peer trusted computing
Flowchain Software Framework
Data Store
Distributed block store
Virtual Block
Difficulty management
Miner
Proof-of-stake
Broker Server Layer
Distributed Ledger Layer
Architecture Design
10
Architecture Design
• Distributed Ledger Layer
• Usually known as the “Blockchain”
• Provides a distributed data store that shares
transactional data across all IoT devices
• Broker Server Layer
• Provides a helper library to create the IoT application
server and establishes the peer-to-peer IoT networking
• Web of Things (WoT) Layer
• Adopts the W3C’s WoT ontology that represents the
physical IoT device as a virtual object
11
Philosophy
• Open source
• Open standards
• Web technologies
• REST, JSON, JSON-LD, WebSocket, and etc
• All in JavaScript
• The Flowchain software framework is a 100%
JavaScript implementation
12
Device Interoperability
Overview
Node A
Node C
PRCoperations
• RPC for the inter-device communications
• Over the Websocket and CoAP open standards
Node B
PRC operations
Node D
PRC operations
PRCoperations
14
Interoperability of the IoT
• The Interoperable IoT devices
• Device communications via REST-style RPC, and
• A peer-to-peer network (p2p)
• Transactional data is transferred in the p2p network
by the REST-style RPC
• The distributed ledger stores the transactional
data in the JSON-LD format
15
The REST-style RPC
• RPC operations over REST APIs
Node A
Node B
ws://192.168.0.20/
ws://192.168.0.10/
Request body:
{
“message”: …,
“from”: …
}
Request body:
{
“message”: …,
“from”: …
}
16
17
/**
* Send a RPC message.
*
* @param {Object} Destination
* @param {Object} Data payload
* @api private
*/
var send = function(to, packet) {
var uri = util.format('ws://%s:%s/node/%s/receive', to.address, to.port, packet.message.id);
var host = util.format('ws://%s:%s', to.address, to.port);
var payload = {
message: packet.message,
from: packet.from
};
var connection = connections[host] || null; // Connection cache
if (connection) {
if (connection.connected) connection.sendUTF(JSON.stringify(payload));
else delete connections[host];
return 0;
}
var client = new WebSocketClient();
client.on('connect', function(connection) {
if (connection.connected) {
connection.sendUTF(JSON.stringify(payload));
connections[host] = connection;
} else {
delete connections[host];
}
});
client.connect(uri, '');
};
RPC Operations
• RPC operations are built upon the Chord protocols
• RPCMessage.NOTIFY_STABILIZE
• RPCMessage.NOTIFY_PREDECESSOR
• RPCMessage.NOTIFY_SUCCESSOR
• RPCMessage.NOTIFY_JOIN
• RPCMessage.FIND_SUCCESSOR
• RPCMessage.FOUND_SUCCESSOR
• RPCMessage.CHECK_PREDECESSOR
• RPCMessage.CHECK_SUCESSOR
• RPCMessage.CHECK_TTL
• RPCMessage.MESSAG
18
Implement RPC Operations
switch (message.type) {
case RPCMessage.NOTIFY_STABILIZE:
if (this.predecessor === null) this.predecessor = from;
if (ChordUtils.isInRange(this.predecessor.id, from.id, this.id)) {
message.type = Chord.NOTIFY_PREDECESSOR;
return this.send(this.predecessor, message, from);
}
message.type = Chord.NOTIFY_SUCCESSOR;
this.send(from, message, this);
break;
...
}
// called periodically. n asks the successor
// about its predecessor, verifies if n's immediate
// successor is consistent, and tells the successor about n
n.stabilize()
x = successor.predecessor;
if (x∈(n, successor))
successor = x;
successor.notify(n);
Source: https://en.wikipedia.org/wiki/Chord_(peer-to-peer)
19
Distributed Ledger for the IoT
Data Transaction
• Use the Chord algorithm to organized the IoT devices
as a “Ring” topology
• Each device maintains a “finger-table” (aka the DHT)
• The data transaction process
• Step 1: Generate the key of the data by SHA-256
• Step 2: Search the successor node of the key in the DHT
• Step 3: Send data to the successor node by the RPC operation
• Step 4: The successor node processes the data transaction
21
Peer-to-Peer Networking
N1
N2
N3
N4
N5
N6
N7
N8
SUCCESSOR(Item 1) = N3
SUCCESSOR(Item 2) = N7
Flowchain Node
Sensor Node
Item 1
Item 2
Endpoint Node
22
Flowchain IoT Ideas
• Avoid “competition” and “mining fork” exception
• Propose and use “virtual blocks” concepts
• Aka the “virtual mining”
• Fork the “genesis block” and find blocks (mining) at
the “branches”
23
PreviousHash Timestamp
MerkleRoot Nonce
Genesis Block
function Block(block) {
if (typeof block === 'undefined') {
block = {};
}
this.hash = block.hash || '';
this.previousHash = block.previousHash || '';
this.timestamp = block.timestamp || new Date();
this.merkleRoot = block.merkleRoot ||
'0000000000000000000000000000000000000000000000000000000000000000';
this.difficulty = block.difficulty ||
'00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF';
this.nonce = block.nonce || 0;
this.no = block.no < 0 ? 0 : block.no;
}
Establish Genesis Block
24
PreviousHash Timestamp
MerkleRoot Nonce
Genesis Block
PreviousHash Timestamp
MerkleRoot Nonce
Block #1
PreviousHash Timestamp
MerkleRoot Nonce
Block #2
Block Chain Data Structure
25
Flowchain Virtual Blocks
Block #1 Block #2
Block #1 Block #2
Block #1
Block #1
Block #1
Block #2
Block #2
Block #2
Block #3
Block #3
Block #4
Block #3 Block #4 Block #5
Block #0
Block #0
Block #0
Block #0
Block #0
N1
N2
N3
N4
N5
Genesis block
Invalid block
Valid block
26
Use the Virtual Blocks
/*
* Flowchain virtual block algorithm (the pseudo code)
*/
Node.on(‘message’, function(key, value) {
// Get a valid block of the device’s blockchain
N = GetOneValidBlock(chains)
// Put key-value pair in block “N”
PutToBlock( N, { key: value } );
});
27
“Virtual Blocks”
• Five IoT devices are labeled N1 to N5, and each
device is a “node” in a peer-to-peer network
• All nodes are mining blocks that use the same
genesis block
• In other words, each node creates a new “branch” for
mining; thus, there is no blockchain “fork”
• Every block in each branch is called a Virtual Block
• Virtual Blocks can be labeled as valid or invalid
• Only valid blocks are available to record transactions
28
Flowchain Virtual Blocks
PreviousHash Timestamp
MerkleRoot Nonce
Genesis Block
PreviousHash Timestamp
MerkleRoot Nonce
Block #1
PreviousHash Timestamp
MerkleRoot Nonce
Block #2
PreviousHash Timestamp
MerkleRoot Nonce
Block #1
“fork”
“fork”
PreviousHash Timestamp
MerkleRoot Nonce
Block #2
“branches”
29
Why “Virtual Blocks” ?
• Flowchain initially creates branches for each node
when nodes mine their Virtual Blocks
• Estimate the block “forks” exception during the
mining process
• Flowchain can act in a real-time manner
30
Consensus System
Understanding Block Time
• The “time” to find a valid block
• Often know as the “mining”, and
• Difficulty control
• Blockchain-based consensus system
• Aka mining-based consensus system
32
Block #0
Transactions
Block #1
Transactions
Block #2
Transactions
Block #3
Paul’s
Transaction
Block
Height Difficulty
Understanding “Difficulty”
33
“Difficulty Control”
• The mining-based PoS system will use the “difficulty”
concept derived from the PoW system
• Flowchain is the mining-based PoS system
• Used in the consensus mechanism
34
Consensus Mechanisms
• Proof-of-Work (PoW)
• Proof-of-Stake (PoS)
• Proof-of-[ Resource, Existence, Reliability, and etc ]
• The “hybrid”
• Practical Byzantine Fault Tolerance (PBFT)
• Paxos / The Part-Time Parliament
• Delegate Proof-of-Stake (DPoS)
35
Consensus for the IoT
• A mining-based proof-of-stake
• Minimal resource requirement
• Device reliability
• etc
36
Flowchain Consensus System
• The miner is timed in a fixed number calculation per
second in which the Flowchain can comprise a
proof-of-stake mechanism
• Flowchain implements a mining-based proof-of-
stake consensus system
• Use the probability density function to ensure a cost-
effective difficulty control system
37
• Resource-constrained devices
• Limited computation power
• Limited resource (memory and etc)
• Difficulty control for a mining-based PoS on the IoT
Technical Challenges
38
Hashing Rate
• Problem-solving
• Brute-force
• Memory-hard functions
• Probability distribution
39
• Probability density to control the mining difficulty
• Normal
• Poisson
Probability Density
Source: https://en.wikipedia.org/wiki/Normal_distribution (License: Public Domain)
40
Flowchain Difficulty Control
var gaussian = require(‘gaussian');
// the mean (μ) of the distribution
var mean = 0;
//the variance (σ^2) of the distribution
var variance = 0.2;
var distribution = gaussian(mean, variance);
function Difficulty(x) {
if (!x) x = Math.random();
x = x - variance;
var probability = distribution.pdf(x);
return fixDifficulty(probability);
}
41
Flowchain PoS for the IoT
var Miner = require(‘./VirtualMiner’); // Import flowchain
miner
// Create a new miner
this.miner = new Miner();
miner.setPreviousBlock(block);
setInterval(function() {
miner.generateHash();
// A success hash is generated
if (miner.isSuccess()) {
var block = miner.getNewBlock();
// Successful mined and save the new block
self.blockchain.push(block);
miner.setPreviousBlock(block);
} else {
var block = miner.getMiningBlock();
}
}, 50);
42
HBLOCK = SHA256( BlockNo + timestamp + nonce )
HDATA = SHA1( data + timestamp + ramdom )
HtxID = SHA256( SHA256( HBLOCK + HDATA ) )
Generating Transaction ID
• Use SHA256, SHA1, and Double SHA256
• The HDATA hash is generated by the p2p network
43
Transaction Generator
N.put(data) {
key = hashDataKey(data);
// Send chunk data to N’ over the Chord ring.
send( SUCESSOR(key), { payload: data } );
}
N’.PutToBlock(block, doc) {
db = DatabaseAdapter.getDatabase();
txID = SHA256( SHA256( block.id + doc.key ) );
tx = new Transaction( doc.value );
tx.sign( privateKey );
record = {
“@context”: “http://flowchain.io/ledger-context.jsonld”,
“txID”: txID,
“tx”: tx
};
db.put( record );
}
44
Flowchain Node Endpoint Node
SUCCESSOR(D1) = N6
D1D2D3D4
N1
N2
N3
N4
N5
N6
N7
N8
SUCCESSOR(D2) = N3
N1
N2
N3
N4
N5
N6
N7
N8
D2D3D4
SUCCESSOR(D3) = N5
N1
N2
N3
N4
N5
N6
N7
N8
D3D4
SUCCESSOR(D4) = N7
N1
N2
N3
N4
N5
N6
N7
N8
D4
(a) (b)
(c) (d)
45
Simulating Data Transaction
• The successor node is represented as N’
• N' receives the chunk data, and combines the valid
block ID and the data key to generate a transaction
ID
• N’ signs the transaction with its private key
embedded in the hardware
• N’ creates a record that comprises the transaction ID
and the chunk data and stores the record in a valid
block
46
Simulating Data Transaction
• Flowchain is “auditable”
• Use case example
• The “administrator” approve the data transaction
• The “monitor process” performs a “branch merge
“operation that all “virtual blocks” merge
imperceptibly into a single blockchain
47
Auditing Process (Example)
48
Permissioned DLT
• The p2p network authorizes nodes intending to join
the network that only authorized nodes can operate
as a Flowchain node
• Flowchain ensures the interoperability between
different ledgers within the same IoT peer-to-peer
network
• Flowchain DLT transactional protocols has been built
upon the Chord algorithm and protocol
49
Use the Flowchain SDK
• A distributed ledger for the IoT
• A programming framework
• Software architecture designed from the ground up
• Visit https://flowchain.io
Flowchain Open Source
51
URL Router Thing DescriptionEvent Emitter
wotcity.io: Application Layer Protocols
Request Handlers
Miner Chord Protocol
wwRPC: light-weight RPC over REST-style operations
Virtual Block
Flowcoin: peer-to-peer trusted computing
DistributedLedgerLayerBrokerServerLayerWebofThingsLayer
Distributed Hash Table
JavaScript Runtime (Node.js, V8, JerryScript, and etc.)
Data Store Assets Management Device Management Inter Ledger Protocols
Flowchain Software Framework
52
Start an IoT Node
// Import the broker server middleware
var server = require('./server');
// Utils
var crypto = require('crypto');
// Database
var Database = require('./database');
var db = new Database('picodb');
// Start the IoT application server and start to find blocks
server.start({
onstart: onstart,
onmessage: onmessage,
onquery: onquery,
ondata: ondata,
join: {
address: '10.186.110.91',
port: '8000'
}
});
53
Store Transactions
// Use DatabaseAdapter to select a data store
var Database = require('./database');
var db = new Database(‘picodb');
var onmessage = function(req, res) {
var payload = req.payload;
var block = req.block;
var node = req.node;
// Key of the data
var key = message.id;
// Data
var tx = message.data;
// Block hash as the secret and data key as the context
var hash = crypto.createHmac('sha256', block.hash)
.update( key )
.digest(‘hex');
db.put(hash, tx, function (err) {
if (err)
return console.log('Ooops! onmessage =', err)
});
}
54
IoT Devices themselves in a decentralized IoT platforms
can have a new model to exchange data.
[device democracy] Blockchain IoT technology provides
such new model for secured and trusted data exchange
that keep trusted records of all exchanged data between
devices.
Flowchain Mission
55
Thank You !
Questions ?
Access the Flowchain open source project at https://flowchain.io

Contenu connexe

Tendances

Bridges and Tunnels a Drive Through OpenStack Networking
Bridges and Tunnels a Drive Through OpenStack NetworkingBridges and Tunnels a Drive Through OpenStack Networking
Bridges and Tunnels a Drive Through OpenStack Networkingmarkmcclain
 
OpenStack Paris Summit: Bridges and Tunnels: A Drive Through OpenStack Networ...
OpenStack Paris Summit: Bridges and Tunnels: A Drive Through OpenStack Networ...OpenStack Paris Summit: Bridges and Tunnels: A Drive Through OpenStack Networ...
OpenStack Paris Summit: Bridges and Tunnels: A Drive Through OpenStack Networ...markmcclain
 
Neutron high availability open stack architecture openstack israel event 2015
Neutron high availability  open stack architecture   openstack israel event 2015Neutron high availability  open stack architecture   openstack israel event 2015
Neutron high availability open stack architecture openstack israel event 2015Arthur Berezin
 
Lc3 beijing-june262018-sahdev zala-guangya
Lc3 beijing-june262018-sahdev zala-guangyaLc3 beijing-june262018-sahdev zala-guangya
Lc3 beijing-june262018-sahdev zala-guangyaSahdev Zala
 
Openstack and Reddwarf Overview
Openstack and Reddwarf OverviewOpenstack and Reddwarf Overview
Openstack and Reddwarf OverviewCraig Vyvial
 
Modular Layer 2 In OpenStack Neutron
Modular Layer 2 In OpenStack NeutronModular Layer 2 In OpenStack Neutron
Modular Layer 2 In OpenStack Neutronmestery
 
OpenStack and the Transformation of the Data Center - Lew Tucker
OpenStack and the Transformation of the Data Center - Lew TuckerOpenStack and the Transformation of the Data Center - Lew Tucker
OpenStack and the Transformation of the Data Center - Lew TuckerLew Tucker
 
Neutron VEB Plugin
Neutron VEB PluginNeutron VEB Plugin
Neutron VEB PluginBIM
 
OpenStack- A ringside view of Services and Architecture
OpenStack- A ringside view of Services and ArchitectureOpenStack- A ringside view of Services and Architecture
OpenStack- A ringside view of Services and ArchitectureRitesh Somani
 
Cisco Cloud Networking Workshop
Cisco Cloud Networking Workshop Cisco Cloud Networking Workshop
Cisco Cloud Networking Workshop Cisco Canada
 
OpenStack Neutron's Distributed Virtual Router
OpenStack Neutron's Distributed Virtual RouterOpenStack Neutron's Distributed Virtual Router
OpenStack Neutron's Distributed Virtual Routercarlbaldwin
 
OpenDaylight Netvirt and Neutron - Mike Kolesnik, Josh Hershberg - OpenStack ...
OpenDaylight Netvirt and Neutron - Mike Kolesnik, Josh Hershberg - OpenStack ...OpenDaylight Netvirt and Neutron - Mike Kolesnik, Josh Hershberg - OpenStack ...
OpenDaylight Netvirt and Neutron - Mike Kolesnik, Josh Hershberg - OpenStack ...Cloud Native Day Tel Aviv
 
Pro2516 10 things about oracle and k8s.pptx-final
Pro2516   10 things about oracle and k8s.pptx-finalPro2516   10 things about oracle and k8s.pptx-final
Pro2516 10 things about oracle and k8s.pptx-finalMichel Schildmeijer
 
.NET Cloud-Native Bootcamp Minneapolis
.NET Cloud-Native Bootcamp Minneapolis.NET Cloud-Native Bootcamp Minneapolis
.NET Cloud-Native Bootcamp MinneapolisVMware Tanzu
 
[OpenStack 하반기 스터디] Interoperability with ML2: LinuxBridge, OVS and SDN
[OpenStack 하반기 스터디] Interoperability with ML2: LinuxBridge, OVS and SDN[OpenStack 하반기 스터디] Interoperability with ML2: LinuxBridge, OVS and SDN
[OpenStack 하반기 스터디] Interoperability with ML2: LinuxBridge, OVS and SDNOpenStack Korea Community
 
Service Discovery and Registration in a Microservices Architecture
Service Discovery and Registration in a Microservices ArchitectureService Discovery and Registration in a Microservices Architecture
Service Discovery and Registration in a Microservices ArchitecturePLUMgrid
 
Using Clocker with Project Calico - Running Production Workloads in the Cloud
Using Clocker with Project Calico - Running Production Workloads in the CloudUsing Clocker with Project Calico - Running Production Workloads in the Cloud
Using Clocker with Project Calico - Running Production Workloads in the CloudAndrew Kennedy
 
VOID19 Cloud Transformation at Viettel accelerate faster with open infrastru...
VOID19 Cloud Transformation at Viettel  accelerate faster with open infrastru...VOID19 Cloud Transformation at Viettel  accelerate faster with open infrastru...
VOID19 Cloud Transformation at Viettel accelerate faster with open infrastru...Vietnam Open Infrastructure User Group
 
Lessons learned from global telecom operators' cloud journeys - Zeev Likworni...
Lessons learned from global telecom operators' cloud journeys - Zeev Likworni...Lessons learned from global telecom operators' cloud journeys - Zeev Likworni...
Lessons learned from global telecom operators' cloud journeys - Zeev Likworni...Cloud Native Day Tel Aviv
 
Kubernetes and Oracle - a guiding whitepaper
Kubernetes and Oracle - a guiding whitepaperKubernetes and Oracle - a guiding whitepaper
Kubernetes and Oracle - a guiding whitepaperMichel Schildmeijer
 

Tendances (20)

Bridges and Tunnels a Drive Through OpenStack Networking
Bridges and Tunnels a Drive Through OpenStack NetworkingBridges and Tunnels a Drive Through OpenStack Networking
Bridges and Tunnels a Drive Through OpenStack Networking
 
OpenStack Paris Summit: Bridges and Tunnels: A Drive Through OpenStack Networ...
OpenStack Paris Summit: Bridges and Tunnels: A Drive Through OpenStack Networ...OpenStack Paris Summit: Bridges and Tunnels: A Drive Through OpenStack Networ...
OpenStack Paris Summit: Bridges and Tunnels: A Drive Through OpenStack Networ...
 
Neutron high availability open stack architecture openstack israel event 2015
Neutron high availability  open stack architecture   openstack israel event 2015Neutron high availability  open stack architecture   openstack israel event 2015
Neutron high availability open stack architecture openstack israel event 2015
 
Lc3 beijing-june262018-sahdev zala-guangya
Lc3 beijing-june262018-sahdev zala-guangyaLc3 beijing-june262018-sahdev zala-guangya
Lc3 beijing-june262018-sahdev zala-guangya
 
Openstack and Reddwarf Overview
Openstack and Reddwarf OverviewOpenstack and Reddwarf Overview
Openstack and Reddwarf Overview
 
Modular Layer 2 In OpenStack Neutron
Modular Layer 2 In OpenStack NeutronModular Layer 2 In OpenStack Neutron
Modular Layer 2 In OpenStack Neutron
 
OpenStack and the Transformation of the Data Center - Lew Tucker
OpenStack and the Transformation of the Data Center - Lew TuckerOpenStack and the Transformation of the Data Center - Lew Tucker
OpenStack and the Transformation of the Data Center - Lew Tucker
 
Neutron VEB Plugin
Neutron VEB PluginNeutron VEB Plugin
Neutron VEB Plugin
 
OpenStack- A ringside view of Services and Architecture
OpenStack- A ringside view of Services and ArchitectureOpenStack- A ringside view of Services and Architecture
OpenStack- A ringside view of Services and Architecture
 
Cisco Cloud Networking Workshop
Cisco Cloud Networking Workshop Cisco Cloud Networking Workshop
Cisco Cloud Networking Workshop
 
OpenStack Neutron's Distributed Virtual Router
OpenStack Neutron's Distributed Virtual RouterOpenStack Neutron's Distributed Virtual Router
OpenStack Neutron's Distributed Virtual Router
 
OpenDaylight Netvirt and Neutron - Mike Kolesnik, Josh Hershberg - OpenStack ...
OpenDaylight Netvirt and Neutron - Mike Kolesnik, Josh Hershberg - OpenStack ...OpenDaylight Netvirt and Neutron - Mike Kolesnik, Josh Hershberg - OpenStack ...
OpenDaylight Netvirt and Neutron - Mike Kolesnik, Josh Hershberg - OpenStack ...
 
Pro2516 10 things about oracle and k8s.pptx-final
Pro2516   10 things about oracle and k8s.pptx-finalPro2516   10 things about oracle and k8s.pptx-final
Pro2516 10 things about oracle and k8s.pptx-final
 
.NET Cloud-Native Bootcamp Minneapolis
.NET Cloud-Native Bootcamp Minneapolis.NET Cloud-Native Bootcamp Minneapolis
.NET Cloud-Native Bootcamp Minneapolis
 
[OpenStack 하반기 스터디] Interoperability with ML2: LinuxBridge, OVS and SDN
[OpenStack 하반기 스터디] Interoperability with ML2: LinuxBridge, OVS and SDN[OpenStack 하반기 스터디] Interoperability with ML2: LinuxBridge, OVS and SDN
[OpenStack 하반기 스터디] Interoperability with ML2: LinuxBridge, OVS and SDN
 
Service Discovery and Registration in a Microservices Architecture
Service Discovery and Registration in a Microservices ArchitectureService Discovery and Registration in a Microservices Architecture
Service Discovery and Registration in a Microservices Architecture
 
Using Clocker with Project Calico - Running Production Workloads in the Cloud
Using Clocker with Project Calico - Running Production Workloads in the CloudUsing Clocker with Project Calico - Running Production Workloads in the Cloud
Using Clocker with Project Calico - Running Production Workloads in the Cloud
 
VOID19 Cloud Transformation at Viettel accelerate faster with open infrastru...
VOID19 Cloud Transformation at Viettel  accelerate faster with open infrastru...VOID19 Cloud Transformation at Viettel  accelerate faster with open infrastru...
VOID19 Cloud Transformation at Viettel accelerate faster with open infrastru...
 
Lessons learned from global telecom operators' cloud journeys - Zeev Likworni...
Lessons learned from global telecom operators' cloud journeys - Zeev Likworni...Lessons learned from global telecom operators' cloud journeys - Zeev Likworni...
Lessons learned from global telecom operators' cloud journeys - Zeev Likworni...
 
Kubernetes and Oracle - a guiding whitepaper
Kubernetes and Oracle - a guiding whitepaperKubernetes and Oracle - a guiding whitepaper
Kubernetes and Oracle - a guiding whitepaper
 

En vedette

See what happened with real time kvm when building real time cloud pezhang@re...
See what happened with real time kvm when building real time cloud pezhang@re...See what happened with real time kvm when building real time cloud pezhang@re...
See what happened with real time kvm when building real time cloud pezhang@re...LinuxCon ContainerCon CloudOpen China
 
High Performance Linux Virtual Machine on Microsoft Azure: SR-IOV Networking ...
High Performance Linux Virtual Machine on Microsoft Azure: SR-IOV Networking ...High Performance Linux Virtual Machine on Microsoft Azure: SR-IOV Networking ...
High Performance Linux Virtual Machine on Microsoft Azure: SR-IOV Networking ...LinuxCon ContainerCon CloudOpen China
 
点融网区块链即服务实践 - The Practice of Blockchain as a Service in Dianrong
点融网区块链即服务实践 - The Practice of Blockchain as a Service in Dianrong点融网区块链即服务实践 - The Practice of Blockchain as a Service in Dianrong
点融网区块链即服务实践 - The Practice of Blockchain as a Service in DianrongLinuxCon ContainerCon CloudOpen China
 

En vedette (20)

Policy-based Resource Placement
Policy-based Resource PlacementPolicy-based Resource Placement
Policy-based Resource Placement
 
See what happened with real time kvm when building real time cloud pezhang@re...
See what happened with real time kvm when building real time cloud pezhang@re...See what happened with real time kvm when building real time cloud pezhang@re...
See what happened with real time kvm when building real time cloud pezhang@re...
 
Running Legacy Applications with Containers
Running Legacy Applications with ContainersRunning Legacy Applications with Containers
Running Legacy Applications with Containers
 
Hyperledger Technical Community in China.
Hyperledger Technical Community in China. Hyperledger Technical Community in China.
Hyperledger Technical Community in China.
 
OpenDaylight OpenStack Integration
OpenDaylight OpenStack IntegrationOpenDaylight OpenStack Integration
OpenDaylight OpenStack Integration
 
Obstacles & Solutions for Livepatch Support on ARM64 Architecture
Obstacles & Solutions for Livepatch Support on ARM64 ArchitectureObstacles & Solutions for Livepatch Support on ARM64 Architecture
Obstacles & Solutions for Livepatch Support on ARM64 Architecture
 
Linux Kernel Development
Linux Kernel DevelopmentLinux Kernel Development
Linux Kernel Development
 
LiteOS
LiteOS LiteOS
LiteOS
 
Simplify Networking for Containers
Simplify Networking for ContainersSimplify Networking for Containers
Simplify Networking for Containers
 
Linuxcon secureefficientcontainerimagemanagementharbor
Linuxcon secureefficientcontainerimagemanagementharborLinuxcon secureefficientcontainerimagemanagementharbor
Linuxcon secureefficientcontainerimagemanagementharbor
 
OpenStack on AArch64
OpenStack on AArch64OpenStack on AArch64
OpenStack on AArch64
 
Libvirt API Certification
Libvirt API CertificationLibvirt API Certification
Libvirt API Certification
 
Status of Embedded Linux
Status of Embedded LinuxStatus of Embedded Linux
Status of Embedded Linux
 
GPU Acceleration for Containers on Intel Processor Graphics
GPU Acceleration for Containers on Intel Processor GraphicsGPU Acceleration for Containers on Intel Processor Graphics
GPU Acceleration for Containers on Intel Processor Graphics
 
High Performance Linux Virtual Machine on Microsoft Azure: SR-IOV Networking ...
High Performance Linux Virtual Machine on Microsoft Azure: SR-IOV Networking ...High Performance Linux Virtual Machine on Microsoft Azure: SR-IOV Networking ...
High Performance Linux Virtual Machine on Microsoft Azure: SR-IOV Networking ...
 
Practical CNI
Practical CNIPractical CNI
Practical CNI
 
kdump: usage and_internals
kdump: usage and_internalskdump: usage and_internals
kdump: usage and_internals
 
点融网区块链即服务实践 - The Practice of Blockchain as a Service in Dianrong
点融网区块链即服务实践 - The Practice of Blockchain as a Service in Dianrong点融网区块链即服务实践 - The Practice of Blockchain as a Service in Dianrong
点融网区块链即服务实践 - The Practice of Blockchain as a Service in Dianrong
 
Releasing a Distribution in the Age of DevOps.
Releasing a Distribution in the Age of DevOps. Releasing a Distribution in the Age of DevOps.
Releasing a Distribution in the Age of DevOps.
 
Make Accelerator Pluggable for Container Engine
Make Accelerator Pluggable for Container EngineMake Accelerator Pluggable for Container Engine
Make Accelerator Pluggable for Container Engine
 

Similaire à Flowchain: A case study on building a Blockchain for the IoT

Blockchain on the oracle cloud, the next big thing
Blockchain on the oracle cloud, the next big thingBlockchain on the oracle cloud, the next big thing
Blockchain on the oracle cloud, the next big thingRobert van Mölken
 
A Breathless Tour of Blockchain
A Breathless Tour of BlockchainA Breathless Tour of Blockchain
A Breathless Tour of BlockchainEoin Woods
 
Deployablockchainwebappwithhyperledgerfabricpresentation 190820170703
Deployablockchainwebappwithhyperledgerfabricpresentation 190820170703Deployablockchainwebappwithhyperledgerfabricpresentation 190820170703
Deployablockchainwebappwithhyperledgerfabricpresentation 190820170703Nevruz Mesut Sahin
 
Deploy a blockchain web-app with Hyperledger Fabric 1.4 - Concepts & Code
Deploy a blockchain web-app with Hyperledger Fabric 1.4 - Concepts & CodeDeploy a blockchain web-app with Hyperledger Fabric 1.4 - Concepts & Code
Deploy a blockchain web-app with Hyperledger Fabric 1.4 - Concepts & CodeHorea Porutiu
 
The Blockchain - The Technology behind Bitcoin
The Blockchain - The Technology behind Bitcoin The Blockchain - The Technology behind Bitcoin
The Blockchain - The Technology behind Bitcoin Jérôme Kehrli
 
Blockchain meets database
Blockchain meets databaseBlockchain meets database
Blockchain meets databaseYongraeJo
 
Architecture and operations.pptx
Architecture and operations.pptxArchitecture and operations.pptx
Architecture and operations.pptxharshitmittal737363
 
Introduction to blockchains
Introduction to blockchainsIntroduction to blockchains
Introduction to blockchainsAdri Jovin
 
Introduction to Blockchain
Introduction to BlockchainIntroduction to Blockchain
Introduction to BlockchainArunimShukla
 
Analysing Data from Blockchains - Keynote @ SOCCA 2020
Analysing Data from Blockchains - Keynote @ SOCCA 2020Analysing Data from Blockchains - Keynote @ SOCCA 2020
Analysing Data from Blockchains - Keynote @ SOCCA 2020Ingo Weber
 
PSU CSE 541 Project Idea
PSU CSE 541 Project IdeaPSU CSE 541 Project Idea
PSU CSE 541 Project IdeaNitish Upreti
 
Node.js Blockchain Implementation
Node.js Blockchain ImplementationNode.js Blockchain Implementation
Node.js Blockchain ImplementationGlobalLogic Ukraine
 
Bitcoin and Blockchain
Bitcoin and BlockchainBitcoin and Blockchain
Bitcoin and BlockchainChen Wu
 
Reactive Streams: Handling Data-Flow the Reactive Way
Reactive Streams: Handling Data-Flow the Reactive WayReactive Streams: Handling Data-Flow the Reactive Way
Reactive Streams: Handling Data-Flow the Reactive WayRoland Kuhn
 
Blockchain Ecosystem and Cryptocurrency Regulations
Blockchain Ecosystem and Cryptocurrency RegulationsBlockchain Ecosystem and Cryptocurrency Regulations
Blockchain Ecosystem and Cryptocurrency RegulationsAmir Rafati
 
Ethereum Toronto Meetup September 3, 2014
Ethereum Toronto Meetup September 3, 2014Ethereum Toronto Meetup September 3, 2014
Ethereum Toronto Meetup September 3, 2014paulpaschos
 

Similaire à Flowchain: A case study on building a Blockchain for the IoT (20)

Basics of Block Chain
Basics of Block ChainBasics of Block Chain
Basics of Block Chain
 
Bitcoin Forensics
Bitcoin ForensicsBitcoin Forensics
Bitcoin Forensics
 
Day 1.pptx
Day 1.pptxDay 1.pptx
Day 1.pptx
 
Blockchain on the oracle cloud, the next big thing
Blockchain on the oracle cloud, the next big thingBlockchain on the oracle cloud, the next big thing
Blockchain on the oracle cloud, the next big thing
 
IM 02.pptx
IM 02.pptxIM 02.pptx
IM 02.pptx
 
A Breathless Tour of Blockchain
A Breathless Tour of BlockchainA Breathless Tour of Blockchain
A Breathless Tour of Blockchain
 
Deployablockchainwebappwithhyperledgerfabricpresentation 190820170703
Deployablockchainwebappwithhyperledgerfabricpresentation 190820170703Deployablockchainwebappwithhyperledgerfabricpresentation 190820170703
Deployablockchainwebappwithhyperledgerfabricpresentation 190820170703
 
Deploy a blockchain web-app with Hyperledger Fabric 1.4 - Concepts & Code
Deploy a blockchain web-app with Hyperledger Fabric 1.4 - Concepts & CodeDeploy a blockchain web-app with Hyperledger Fabric 1.4 - Concepts & Code
Deploy a blockchain web-app with Hyperledger Fabric 1.4 - Concepts & Code
 
The Blockchain - The Technology behind Bitcoin
The Blockchain - The Technology behind Bitcoin The Blockchain - The Technology behind Bitcoin
The Blockchain - The Technology behind Bitcoin
 
Blockchain meets database
Blockchain meets databaseBlockchain meets database
Blockchain meets database
 
Architecture and operations.pptx
Architecture and operations.pptxArchitecture and operations.pptx
Architecture and operations.pptx
 
Introduction to blockchains
Introduction to blockchainsIntroduction to blockchains
Introduction to blockchains
 
Introduction to Blockchain
Introduction to BlockchainIntroduction to Blockchain
Introduction to Blockchain
 
Analysing Data from Blockchains - Keynote @ SOCCA 2020
Analysing Data from Blockchains - Keynote @ SOCCA 2020Analysing Data from Blockchains - Keynote @ SOCCA 2020
Analysing Data from Blockchains - Keynote @ SOCCA 2020
 
PSU CSE 541 Project Idea
PSU CSE 541 Project IdeaPSU CSE 541 Project Idea
PSU CSE 541 Project Idea
 
Node.js Blockchain Implementation
Node.js Blockchain ImplementationNode.js Blockchain Implementation
Node.js Blockchain Implementation
 
Bitcoin and Blockchain
Bitcoin and BlockchainBitcoin and Blockchain
Bitcoin and Blockchain
 
Reactive Streams: Handling Data-Flow the Reactive Way
Reactive Streams: Handling Data-Flow the Reactive WayReactive Streams: Handling Data-Flow the Reactive Way
Reactive Streams: Handling Data-Flow the Reactive Way
 
Blockchain Ecosystem and Cryptocurrency Regulations
Blockchain Ecosystem and Cryptocurrency RegulationsBlockchain Ecosystem and Cryptocurrency Regulations
Blockchain Ecosystem and Cryptocurrency Regulations
 
Ethereum Toronto Meetup September 3, 2014
Ethereum Toronto Meetup September 3, 2014Ethereum Toronto Meetup September 3, 2014
Ethereum Toronto Meetup September 3, 2014
 

Plus de LinuxCon ContainerCon CloudOpen China

Rebuild - Simplifying Embedded and IoT Development Using Linux Containers
Rebuild - Simplifying Embedded and IoT Development Using Linux ContainersRebuild - Simplifying Embedded and IoT Development Using Linux Containers
Rebuild - Simplifying Embedded and IoT Development Using Linux ContainersLinuxCon ContainerCon CloudOpen China
 
Is there still room for innovation in container orchestration and scheduling
Is there still room for innovation in container orchestration and scheduling Is there still room for innovation in container orchestration and scheduling
Is there still room for innovation in container orchestration and scheduling LinuxCon ContainerCon CloudOpen China
 

Plus de LinuxCon ContainerCon CloudOpen China (16)

SecurityPI - Hardening your IoT endpoints in Home.
SecurityPI - Hardening your IoT endpoints in Home. SecurityPI - Hardening your IoT endpoints in Home.
SecurityPI - Hardening your IoT endpoints in Home.
 
Building a Better Thermostat
Building a Better ThermostatBuilding a Better Thermostat
Building a Better Thermostat
 
Scale Kubernetes to support 50000 services
Scale Kubernetes to support 50000 servicesScale Kubernetes to support 50000 services
Scale Kubernetes to support 50000 services
 
Secure Containers with EPT Isolation
Secure Containers with EPT IsolationSecure Containers with EPT Isolation
Secure Containers with EPT Isolation
 
Open Source Software Business Models Redux
Open Source Software Business Models ReduxOpen Source Software Business Models Redux
Open Source Software Business Models Redux
 
Introduction to OCI Image Technologies Serving Container
Introduction to OCI Image Technologies Serving ContainerIntroduction to OCI Image Technologies Serving Container
Introduction to OCI Image Technologies Serving Container
 
Rebuild - Simplifying Embedded and IoT Development Using Linux Containers
Rebuild - Simplifying Embedded and IoT Development Using Linux ContainersRebuild - Simplifying Embedded and IoT Development Using Linux Containers
Rebuild - Simplifying Embedded and IoT Development Using Linux Containers
 
From Resilient to Antifragile Chaos Engineering Primer
From Resilient to Antifragile Chaos Engineering PrimerFrom Resilient to Antifragile Chaos Engineering Primer
From Resilient to Antifragile Chaos Engineering Primer
 
OCI Support in Mesos
OCI Support in MesosOCI Support in Mesos
OCI Support in Mesos
 
UEFI HTTP/HTTPS Boot
UEFI HTTP/HTTPS BootUEFI HTTP/HTTPS Boot
UEFI HTTP/HTTPS Boot
 
How Open Source Communities do Standardization
How Open Source Communities do StandardizationHow Open Source Communities do Standardization
How Open Source Communities do Standardization
 
Fully automated kubernetes deployment and management
Fully automated kubernetes deployment and managementFully automated kubernetes deployment and management
Fully automated kubernetes deployment and management
 
Is there still room for innovation in container orchestration and scheduling
Is there still room for innovation in container orchestration and scheduling Is there still room for innovation in container orchestration and scheduling
Is there still room for innovation in container orchestration and scheduling
 
Container Security
Container SecurityContainer Security
Container Security
 
Quickly Debug VM Failures in OpenStack
Quickly Debug VM Failures in OpenStackQuickly Debug VM Failures in OpenStack
Quickly Debug VM Failures in OpenStack
 
Rethinking the OS
Rethinking the OSRethinking the OS
Rethinking the OS
 

Dernier

Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...DianaGray10
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfDianaGray10
 
Digital magic. A small project for controlling smart light bulbs.
Digital magic. A small project for controlling smart light bulbs.Digital magic. A small project for controlling smart light bulbs.
Digital magic. A small project for controlling smart light bulbs.francesco barbera
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAshyamraj55
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesDavid Newbury
 
Things you didn't know you can use in your Salesforce
Things you didn't know you can use in your SalesforceThings you didn't know you can use in your Salesforce
Things you didn't know you can use in your SalesforceMartin Humpolec
 
RAG Patterns and Vector Search in Generative AI
RAG Patterns and Vector Search in Generative AIRAG Patterns and Vector Search in Generative AI
RAG Patterns and Vector Search in Generative AIUdaiappa Ramachandran
 
GenAI and AI GCC State of AI_Object Automation Inc
GenAI and AI GCC State of AI_Object Automation IncGenAI and AI GCC State of AI_Object Automation Inc
GenAI and AI GCC State of AI_Object Automation IncObject Automation
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Adtran
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfinfogdgmi
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationIES VE
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
Babel Compiler - Transforming JavaScript for All Browsers.pptx
Babel Compiler - Transforming JavaScript for All Browsers.pptxBabel Compiler - Transforming JavaScript for All Browsers.pptx
Babel Compiler - Transforming JavaScript for All Browsers.pptxYounusS2
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
PicPay - GenAI Finance Assistant - ChatGPT for Customer Service
PicPay - GenAI Finance Assistant - ChatGPT for Customer ServicePicPay - GenAI Finance Assistant - ChatGPT for Customer Service
PicPay - GenAI Finance Assistant - ChatGPT for Customer ServiceRenan Moreira de Oliveira
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxGDSC PJATK
 

Dernier (20)

Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
 
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdfUiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
UiPath Solutions Management Preview - Northern CA Chapter - March 22.pdf
 
Digital magic. A small project for controlling smart light bulbs.
Digital magic. A small project for controlling smart light bulbs.Digital magic. A small project for controlling smart light bulbs.
Digital magic. A small project for controlling smart light bulbs.
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
 
Things you didn't know you can use in your Salesforce
Things you didn't know you can use in your SalesforceThings you didn't know you can use in your Salesforce
Things you didn't know you can use in your Salesforce
 
RAG Patterns and Vector Search in Generative AI
RAG Patterns and Vector Search in Generative AIRAG Patterns and Vector Search in Generative AI
RAG Patterns and Vector Search in Generative AI
 
GenAI and AI GCC State of AI_Object Automation Inc
GenAI and AI GCC State of AI_Object Automation IncGenAI and AI GCC State of AI_Object Automation Inc
GenAI and AI GCC State of AI_Object Automation Inc
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
Babel Compiler - Transforming JavaScript for All Browsers.pptx
Babel Compiler - Transforming JavaScript for All Browsers.pptxBabel Compiler - Transforming JavaScript for All Browsers.pptx
Babel Compiler - Transforming JavaScript for All Browsers.pptx
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
PicPay - GenAI Finance Assistant - ChatGPT for Customer Service
PicPay - GenAI Finance Assistant - ChatGPT for Customer ServicePicPay - GenAI Finance Assistant - ChatGPT for Customer Service
PicPay - GenAI Finance Assistant - ChatGPT for Customer Service
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptx
 

Flowchain: A case study on building a Blockchain for the IoT

  • 1. Flowchain: A case study on building a Blockchain for the IoT #LinuxCon, Beijing, June 19-20, 2017 Jollen <jollen@jollen.org> Lead Developer, Flowchain.co @jollen https://flowchain.co (LC3 China)
  • 2. Agenda • Architecture Overview • Device Interoperability • Distributed Ledger for the IoT • Consensus System • Use the Flowchain SDK 2
  • 4. Major IoT platforms are based on centralized model. The platform acts as broker or hub to control the interactions between devices. Devices need to exchange data between themselves autonomously. This leads to decentralized IoT platforms. Blockchain IoT Purposes 4
  • 5. Preliminary • A blockchain is only one type of data structure considered to be a distributed ledger • A distributed ledger technology (DLT) provides a new data structure varies from the blockchain for various purposes 5
  • 6. Blockchain Data Structure • Ordered and back-linked list • Stored in a flat file or database • Each block is identified by a hash • Double SHA-256 hash function 6
  • 7. DLT Essentials • A peer-to-peer network • Consensus algorithms 7
  • 8. Background • A case study of a distributed ledger designed for the IoT devices • A Web of Things server to represent the device as a Virtual Thing Web of Things Server Block Store Web of Things Server Block Store Web of Things Server Block Store p2p p2p 8
  • 9. Goal and Purpose • Decentralized IoT • Centralized IoT model uses an IoT platform that acts as “hub” to control the data exchange between devices. • The IoT needs a decentralized IoT platform for exchanging data without any centralized party. • IoT Blockchain • The Blockchain technology helps facilitate such challenges. 9
  • 10. Web of Things Layer Interoperable and decentralized IoT model Chord Distributed hash table Flowcoin Peer-to-peer trusted computing Flowchain Software Framework Data Store Distributed block store Virtual Block Difficulty management Miner Proof-of-stake Broker Server Layer Distributed Ledger Layer Architecture Design 10
  • 11. Architecture Design • Distributed Ledger Layer • Usually known as the “Blockchain” • Provides a distributed data store that shares transactional data across all IoT devices • Broker Server Layer • Provides a helper library to create the IoT application server and establishes the peer-to-peer IoT networking • Web of Things (WoT) Layer • Adopts the W3C’s WoT ontology that represents the physical IoT device as a virtual object 11
  • 12. Philosophy • Open source • Open standards • Web technologies • REST, JSON, JSON-LD, WebSocket, and etc • All in JavaScript • The Flowchain software framework is a 100% JavaScript implementation 12
  • 14. Overview Node A Node C PRCoperations • RPC for the inter-device communications • Over the Websocket and CoAP open standards Node B PRC operations Node D PRC operations PRCoperations 14
  • 15. Interoperability of the IoT • The Interoperable IoT devices • Device communications via REST-style RPC, and • A peer-to-peer network (p2p) • Transactional data is transferred in the p2p network by the REST-style RPC • The distributed ledger stores the transactional data in the JSON-LD format 15
  • 16. The REST-style RPC • RPC operations over REST APIs Node A Node B ws://192.168.0.20/ ws://192.168.0.10/ Request body: { “message”: …, “from”: … } Request body: { “message”: …, “from”: … } 16
  • 17. 17 /** * Send a RPC message. * * @param {Object} Destination * @param {Object} Data payload * @api private */ var send = function(to, packet) { var uri = util.format('ws://%s:%s/node/%s/receive', to.address, to.port, packet.message.id); var host = util.format('ws://%s:%s', to.address, to.port); var payload = { message: packet.message, from: packet.from }; var connection = connections[host] || null; // Connection cache if (connection) { if (connection.connected) connection.sendUTF(JSON.stringify(payload)); else delete connections[host]; return 0; } var client = new WebSocketClient(); client.on('connect', function(connection) { if (connection.connected) { connection.sendUTF(JSON.stringify(payload)); connections[host] = connection; } else { delete connections[host]; } }); client.connect(uri, ''); };
  • 18. RPC Operations • RPC operations are built upon the Chord protocols • RPCMessage.NOTIFY_STABILIZE • RPCMessage.NOTIFY_PREDECESSOR • RPCMessage.NOTIFY_SUCCESSOR • RPCMessage.NOTIFY_JOIN • RPCMessage.FIND_SUCCESSOR • RPCMessage.FOUND_SUCCESSOR • RPCMessage.CHECK_PREDECESSOR • RPCMessage.CHECK_SUCESSOR • RPCMessage.CHECK_TTL • RPCMessage.MESSAG 18
  • 19. Implement RPC Operations switch (message.type) { case RPCMessage.NOTIFY_STABILIZE: if (this.predecessor === null) this.predecessor = from; if (ChordUtils.isInRange(this.predecessor.id, from.id, this.id)) { message.type = Chord.NOTIFY_PREDECESSOR; return this.send(this.predecessor, message, from); } message.type = Chord.NOTIFY_SUCCESSOR; this.send(from, message, this); break; ... } // called periodically. n asks the successor // about its predecessor, verifies if n's immediate // successor is consistent, and tells the successor about n n.stabilize() x = successor.predecessor; if (x∈(n, successor)) successor = x; successor.notify(n); Source: https://en.wikipedia.org/wiki/Chord_(peer-to-peer) 19
  • 21. Data Transaction • Use the Chord algorithm to organized the IoT devices as a “Ring” topology • Each device maintains a “finger-table” (aka the DHT) • The data transaction process • Step 1: Generate the key of the data by SHA-256 • Step 2: Search the successor node of the key in the DHT • Step 3: Send data to the successor node by the RPC operation • Step 4: The successor node processes the data transaction 21
  • 22. Peer-to-Peer Networking N1 N2 N3 N4 N5 N6 N7 N8 SUCCESSOR(Item 1) = N3 SUCCESSOR(Item 2) = N7 Flowchain Node Sensor Node Item 1 Item 2 Endpoint Node 22
  • 23. Flowchain IoT Ideas • Avoid “competition” and “mining fork” exception • Propose and use “virtual blocks” concepts • Aka the “virtual mining” • Fork the “genesis block” and find blocks (mining) at the “branches” 23
  • 24. PreviousHash Timestamp MerkleRoot Nonce Genesis Block function Block(block) { if (typeof block === 'undefined') { block = {}; } this.hash = block.hash || ''; this.previousHash = block.previousHash || ''; this.timestamp = block.timestamp || new Date(); this.merkleRoot = block.merkleRoot || '0000000000000000000000000000000000000000000000000000000000000000'; this.difficulty = block.difficulty || '00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'; this.nonce = block.nonce || 0; this.no = block.no < 0 ? 0 : block.no; } Establish Genesis Block 24
  • 25. PreviousHash Timestamp MerkleRoot Nonce Genesis Block PreviousHash Timestamp MerkleRoot Nonce Block #1 PreviousHash Timestamp MerkleRoot Nonce Block #2 Block Chain Data Structure 25
  • 26. Flowchain Virtual Blocks Block #1 Block #2 Block #1 Block #2 Block #1 Block #1 Block #1 Block #2 Block #2 Block #2 Block #3 Block #3 Block #4 Block #3 Block #4 Block #5 Block #0 Block #0 Block #0 Block #0 Block #0 N1 N2 N3 N4 N5 Genesis block Invalid block Valid block 26
  • 27. Use the Virtual Blocks /* * Flowchain virtual block algorithm (the pseudo code) */ Node.on(‘message’, function(key, value) { // Get a valid block of the device’s blockchain N = GetOneValidBlock(chains) // Put key-value pair in block “N” PutToBlock( N, { key: value } ); }); 27
  • 28. “Virtual Blocks” • Five IoT devices are labeled N1 to N5, and each device is a “node” in a peer-to-peer network • All nodes are mining blocks that use the same genesis block • In other words, each node creates a new “branch” for mining; thus, there is no blockchain “fork” • Every block in each branch is called a Virtual Block • Virtual Blocks can be labeled as valid or invalid • Only valid blocks are available to record transactions 28
  • 29. Flowchain Virtual Blocks PreviousHash Timestamp MerkleRoot Nonce Genesis Block PreviousHash Timestamp MerkleRoot Nonce Block #1 PreviousHash Timestamp MerkleRoot Nonce Block #2 PreviousHash Timestamp MerkleRoot Nonce Block #1 “fork” “fork” PreviousHash Timestamp MerkleRoot Nonce Block #2 “branches” 29
  • 30. Why “Virtual Blocks” ? • Flowchain initially creates branches for each node when nodes mine their Virtual Blocks • Estimate the block “forks” exception during the mining process • Flowchain can act in a real-time manner 30
  • 32. Understanding Block Time • The “time” to find a valid block • Often know as the “mining”, and • Difficulty control • Blockchain-based consensus system • Aka mining-based consensus system 32
  • 33. Block #0 Transactions Block #1 Transactions Block #2 Transactions Block #3 Paul’s Transaction Block Height Difficulty Understanding “Difficulty” 33
  • 34. “Difficulty Control” • The mining-based PoS system will use the “difficulty” concept derived from the PoW system • Flowchain is the mining-based PoS system • Used in the consensus mechanism 34
  • 35. Consensus Mechanisms • Proof-of-Work (PoW) • Proof-of-Stake (PoS) • Proof-of-[ Resource, Existence, Reliability, and etc ] • The “hybrid” • Practical Byzantine Fault Tolerance (PBFT) • Paxos / The Part-Time Parliament • Delegate Proof-of-Stake (DPoS) 35
  • 36. Consensus for the IoT • A mining-based proof-of-stake • Minimal resource requirement • Device reliability • etc 36
  • 37. Flowchain Consensus System • The miner is timed in a fixed number calculation per second in which the Flowchain can comprise a proof-of-stake mechanism • Flowchain implements a mining-based proof-of- stake consensus system • Use the probability density function to ensure a cost- effective difficulty control system 37
  • 38. • Resource-constrained devices • Limited computation power • Limited resource (memory and etc) • Difficulty control for a mining-based PoS on the IoT Technical Challenges 38
  • 39. Hashing Rate • Problem-solving • Brute-force • Memory-hard functions • Probability distribution 39
  • 40. • Probability density to control the mining difficulty • Normal • Poisson Probability Density Source: https://en.wikipedia.org/wiki/Normal_distribution (License: Public Domain) 40
  • 41. Flowchain Difficulty Control var gaussian = require(‘gaussian'); // the mean (μ) of the distribution var mean = 0; //the variance (σ^2) of the distribution var variance = 0.2; var distribution = gaussian(mean, variance); function Difficulty(x) { if (!x) x = Math.random(); x = x - variance; var probability = distribution.pdf(x); return fixDifficulty(probability); } 41
  • 42. Flowchain PoS for the IoT var Miner = require(‘./VirtualMiner’); // Import flowchain miner // Create a new miner this.miner = new Miner(); miner.setPreviousBlock(block); setInterval(function() { miner.generateHash(); // A success hash is generated if (miner.isSuccess()) { var block = miner.getNewBlock(); // Successful mined and save the new block self.blockchain.push(block); miner.setPreviousBlock(block); } else { var block = miner.getMiningBlock(); } }, 50); 42
  • 43. HBLOCK = SHA256( BlockNo + timestamp + nonce ) HDATA = SHA1( data + timestamp + ramdom ) HtxID = SHA256( SHA256( HBLOCK + HDATA ) ) Generating Transaction ID • Use SHA256, SHA1, and Double SHA256 • The HDATA hash is generated by the p2p network 43
  • 44. Transaction Generator N.put(data) { key = hashDataKey(data); // Send chunk data to N’ over the Chord ring. send( SUCESSOR(key), { payload: data } ); } N’.PutToBlock(block, doc) { db = DatabaseAdapter.getDatabase(); txID = SHA256( SHA256( block.id + doc.key ) ); tx = new Transaction( doc.value ); tx.sign( privateKey ); record = { “@context”: “http://flowchain.io/ledger-context.jsonld”, “txID”: txID, “tx”: tx }; db.put( record ); } 44
  • 45. Flowchain Node Endpoint Node SUCCESSOR(D1) = N6 D1D2D3D4 N1 N2 N3 N4 N5 N6 N7 N8 SUCCESSOR(D2) = N3 N1 N2 N3 N4 N5 N6 N7 N8 D2D3D4 SUCCESSOR(D3) = N5 N1 N2 N3 N4 N5 N6 N7 N8 D3D4 SUCCESSOR(D4) = N7 N1 N2 N3 N4 N5 N6 N7 N8 D4 (a) (b) (c) (d) 45
  • 46. Simulating Data Transaction • The successor node is represented as N’ • N' receives the chunk data, and combines the valid block ID and the data key to generate a transaction ID • N’ signs the transaction with its private key embedded in the hardware • N’ creates a record that comprises the transaction ID and the chunk data and stores the record in a valid block 46
  • 47. Simulating Data Transaction • Flowchain is “auditable” • Use case example • The “administrator” approve the data transaction • The “monitor process” performs a “branch merge “operation that all “virtual blocks” merge imperceptibly into a single blockchain 47
  • 49. Permissioned DLT • The p2p network authorizes nodes intending to join the network that only authorized nodes can operate as a Flowchain node • Flowchain ensures the interoperability between different ledgers within the same IoT peer-to-peer network • Flowchain DLT transactional protocols has been built upon the Chord algorithm and protocol 49
  • 51. • A distributed ledger for the IoT • A programming framework • Software architecture designed from the ground up • Visit https://flowchain.io Flowchain Open Source 51
  • 52. URL Router Thing DescriptionEvent Emitter wotcity.io: Application Layer Protocols Request Handlers Miner Chord Protocol wwRPC: light-weight RPC over REST-style operations Virtual Block Flowcoin: peer-to-peer trusted computing DistributedLedgerLayerBrokerServerLayerWebofThingsLayer Distributed Hash Table JavaScript Runtime (Node.js, V8, JerryScript, and etc.) Data Store Assets Management Device Management Inter Ledger Protocols Flowchain Software Framework 52
  • 53. Start an IoT Node // Import the broker server middleware var server = require('./server'); // Utils var crypto = require('crypto'); // Database var Database = require('./database'); var db = new Database('picodb'); // Start the IoT application server and start to find blocks server.start({ onstart: onstart, onmessage: onmessage, onquery: onquery, ondata: ondata, join: { address: '10.186.110.91', port: '8000' } }); 53
  • 54. Store Transactions // Use DatabaseAdapter to select a data store var Database = require('./database'); var db = new Database(‘picodb'); var onmessage = function(req, res) { var payload = req.payload; var block = req.block; var node = req.node; // Key of the data var key = message.id; // Data var tx = message.data; // Block hash as the secret and data key as the context var hash = crypto.createHmac('sha256', block.hash) .update( key ) .digest(‘hex'); db.put(hash, tx, function (err) { if (err) return console.log('Ooops! onmessage =', err) }); } 54
  • 55. IoT Devices themselves in a decentralized IoT platforms can have a new model to exchange data. [device democracy] Blockchain IoT technology provides such new model for secured and trusted data exchange that keep trusted records of all exchanged data between devices. Flowchain Mission 55
  • 56. Thank You ! Questions ? Access the Flowchain open source project at https://flowchain.io