BLO CK CH A IN S TA CK
© 2017 lejer9 Mark Morris
What’s the difference between a So3ware Architect and So3ware Engineer ?
Ethereum Key Milestones JANUARY 2014 – Vitalik Buterin announces at The Northern American Bitcoin Conf. JULY 2014 – 42 day token sale; 60,102,216 ETH, 31,591 BTC, $18,439,086 JULY 2015 – Frontier launched; command line version for developers AUGUST 2015 – Kraken lists ETH (ethers); Coinbase follows JANUARY 2016 – trial of permissioned platform by 11 banks JANUARY 2016 – startups begin raising funds MARCH 2016 – Homestead released MARCH 2016 – ethers pass $1B MAY 2016 – DAO worth $160M JUNE 2016 – DAO bomb
© 2017 lejer9 Mark Morris
Ethereum Release Schedule Frontier – July 2015 ·
ethereum network in its "barest form"
Homestead – March 2016 · ·
the first "production version" of the network required the ethereum community to undergo the hard fork
Metropolis – 2017-2018 ??? · · · · ·
the first official non-beta version will represent ethereum version 1.0. graphical user interface atop the client fundamental back-end improvements upgrades to Solidity
Senerity – 2018-2020 ??? · · · · · ·
'ethereum 2.0' a version of the platform that's ready to scale fundamental changes in the way that ethereum functions as a platform and protocol will fork from PoW to PoS; holders of ethers validate state of network via voting will introduce scaling solutions including 'sharding' will introduce 'state channels' to the ethereum protocol © 2017 lejer9 Mark Morris
Ethereum Technology Stack MIST WALLET & BROWSER DECENTRALIZED APPLICATIONS (DApps)
Ethereum (computation)
Swarm (storage)
Whisper (messaging)
DEVICES NETWORK © 2017 lejer9 Mark Morris
Ethereum
Networking P2P N etw ork ing
Node Discovery
Peer Reputation
Encrypted Transport
Encrypted Handshake
Peer Preference
Ethereum Protocol A ccounts Contra cts Ethereum Virtual Machine (EVM) Transactions Mining Block cha in © 2017 lejer9 Mark Morris
Decentralized Applications (DApps) Front-end (H TML, CSS)
Ethereum (computation)
Back-end (Javascript)
Swarm (storage)
Contracts (Solidity, Serpent, LLL)
Whisper (messaging)
© 2017 lejer9 Mark Morris
Tools & Interfaces GUI (Mist Wallet & Browser)
DApp Frameworks (Truffle, Embark)
Ethereum Clients (Geth, PyEthApp)
Compilers (Solidity, Serpent, LLL)
JSON RPC
Web3.js API
© 2017 lejer9 Mark Morris
Ethereum Account Types Externally Owned Account (EOA)
Contract Account
Account Address
Contract Address
Account Keys
Contract Code
Ether Balance
Ether Balance
© 2017 lejer9 Mark Morris
Smart Contract Externally Owned Account (EOA)
Transactions
Smart Contract Messages Value Addresss State
Events
Functions © 2017 lejer9 Mark Morris
DApp Creation DApp Smart Contracts Frontend HTML (index.html) Frontend JS (app.js) Other Files (CSS, images)
Compile Contract
Ethereum Node
Binary Contract
Complier
Deploy Contract
Contract Address
Ethereum Client
Ethereum Blockchain Network
Transactions
© 2017 lejer9 Mark Morris
Blockchain Components Ethereum Node Ethereum Client (geth)
Ethereum Blockchain Network
Ethereum Node Ethereum Client (geth)
Solidity Compiler (solc)
Solidity Compiler (solc)
Swarm Client & Local Store
Swarm Client & Local Store
Whisper Client
DApp
Swarm Whisper
Whisper Client
DApp
Contracts (Solidity)
Contracts (Solidity)
Back-End (JavaScript)
Back-End (JavaScript)
Front-End (HTML, CSS)
Front-End (HTML, CSS) © 2017 lejer9 Mark Morris
Web App vs DApp Web App
DApp
Presentation (HTML, CSS, JavaScript)
Presentation (HTML, CSS, JavaScript)
Interaction/Comm (HTTP, HTTPS)
Interaction/Comm (Whisper)
Logic (Web app code)
Logic (Contract & DApp JS)
Data (DB, local store)
Static Storage (Server, Cloud)
Data (Blockchain)
Static Storage (Swarm, IPFS)
© 2017 lejer9 Mark Morris
Getting Started with Ethereum Get a client ·
· · · · · · · ·
clients run contracts and communicate with other clients Cpp entereum (C++) Ethereumjs-lib (JavaScript) EthereumJ (Java) EthereumH (Haskell) Go-ethereum (Google’s Golang; geth) Parity (Rust by Mozilla) Pyethapp (Python) Ruby-Ethereum (Ruby)
Write a contract ·
learn Solidity
Execute a contract ·
use a framework like Truffle © 2017 lejer9 Mark Morris
Solidity Smart Contract Snippet
© 2017 lejer9 Mark Morris
Gartner
Smart Contract Advice
© 2017 lejer9 Mark Morris
Value of Blockchain
© 2017 lejer9 Mark Morris
Top 10 Enterprise Project Mistakes
© 2017 lejer9 Mark Morris
CIO & Board Blockchain Discussions
© 2017 lejer9 Mark Morris
Stack Flaws of Bitcoin
© 2017 lejer9 Mark Morris
Public vs Private Blockchains
© 2017 lejer9 Mark Morris
Do you really need a Blockchain?
© 2017 lejer9 Mark Morris
Real World
© 2017 lejer9 Mark Morris
Recommendations
© 2017 lejer9 Mark Morris
BLOCKBENCH
Blockbench Blockchain Integration
© 2017 lejer9 Mark Morris
Abstract Layers in Blockchain
© 2017 lejer9 Mark Morris
Validating Node Software Stack
© 2017 lejer9 Mark Morris
Performance Scalability
© 2017 lejer9 Mark Morris
Memory Usage
© 2017 lejer9 Mark Morris
Throughput vs Hstore (VoltDB)
© 2017 lejer9 Mark Morris
Comparison of Blockchain Platforms
© 2017 lejer9 Mark Morris
Performance Benchmark Results · Hyperledger performs consistently better than Ethereum and Parity across the benchmarks. But it fails to scale up to more than 16 nodes · Ethereum and Parity are more resilient to node failures, but they are vulnerable to security attacks that forks the blockchain · The main bottlenecks in Hyperledger and Ethereum are the consensus protocols, but for Parity the bottleneck is caused by transaction signing · Ethereum and Parity incur large overhead in terms of memory and disk usage. Their execution engine is also less efficient than that of Hyperledger · Hyperledger’s data model is low level, but its flexibility enables customized optimization for analytical queries of the blockchain data SOURCE and Reference: BLOCKBENCH: A Framework for Analyzing Private Blockchains Tien Tuan Anh Dinh‡ Ji Wang‡ Gang Chen§ Rui Liu‡ Beng Chin Ooi‡ Kian-Lee Tan‡ ‡ National University of Singapore § Zhejiang University‡ {dinhtta,wangji,liur,ooibc,tankl}@comp.nus.edu.sg §
[email protected]
© 2017 lejer9 Mark Morris
Ethereum + Hyperledger
Thank You!
© 2017 lejer9 Mark Morris