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

A Breathless Tour of Blockchain

Eoin Woods
October 11, 2017

A Breathless Tour of Blockchain

A fast paced review of blockchain technology, applications, architectural characteristics and programming, using Ethereum as the main example.

Presented at the JAX London 2017 conference.

Eoin Woods

October 11, 2017
Tweet

More Decks by Eoin Woods

Other Decks in Programming

Transcript

  1. A Breathless Tour
    of Blockchain
    Eoin Woods
    Endava
    @eoinwoodz
    1
    licensed under a Creative Commons Attribution-ShareAlike 4.0 International License

    View Slide

  2. Agenda
    • What is Blockchain?
    • Applications for Blockchain
    • Blockchain as an Architectural Element
    • Programming the Blockchain
    • Summary
    2

    View Slide

  3. What is Blockchain?
    3

    View Slide

  4. What is Blockchain?
    • The enabling technology of Bitcoin
    • A distributed database without a controlling authority
    • An auditable database with provable lineage
    • A way to collaborate with principals without trust
    • Trust and storage mechanism for cryptocurrencies
    • Architectural component for Internet-scale systems?
    4

    View Slide

  5. What is Blockchain? Basic terms
    5
    Crypto Currencies
    Ether
    Distributed Ledger P2P distributed,
    append-only, transaction list
    Blockchain cryptographic validation,
    distributed consensus mechanism
    Smart Contracts code embedded in the blockchain,
    manipulates the blockchain state

    View Slide

  6. What is Blockchain? Bitcoin network example
    Miners
    Bob Alice
    6

    View Slide

  7. What is Blockchain? Blockchain structure
    Transaction 1
    Transaction 2
    Transaction 3
    Block Hash
    Prev Block Hash
    Transaction 4
    Transaction 5
    Transaction 6
    Block Hash
    Prev Block Hash
    Transaction 7
    Transaction 8
    Transaction 9
    Block Hash
    Prev Block Hash
    Transaction 10
    • Public keys identify participants
    • Bitcoin addresses identify participants in a transaction (derived from PK)
    • Cryptographic hashes used to ensure integrity 7

    View Slide

  8. What is Blockchain? Consensus
    Q. How do we know the information on the chain is correct?
    A. Because everyone agrees – this is “consensus”
    Blockchains use different types but “proof of work” is common
    • To create (“mine”) a block you need to solve a hard problem
    • If you don’t solve the problem then peers will reject your block
    • Thus forging the blockchain would require a huge amount of work to get
    your fraudulent blocks accepted (“impossible” without 51% of capacity)
    Other models including “proof of stake” and “proof of membership”
    8

    View Slide

  9. Applications for Blockchain
    9

    View Slide

  10. What blockchains exist?
    A lot of blockchain implementations exist. A small sample of them are:
    Bitcoin 2009 Cryptocurrency
    Litecoin 2011 Cryptocurrency
    Ripple 2012 Blockchain payment and settlement system
    Chain 2014 Enterprise blockchain
    Ethereum 2015 Blockchain dapp platform
    Hyperledger 2015 Linux Foundation open source blockchain projects
    R3 Corda 2016 Distributed ledger for the financial industry
    Multichain 2017 Enterprise blockchain
    10

    View Slide

  11. Cryptocurrencies – August 2017
    10 cryptocurrencies
    market cap of > $1B
    Bitcoin is $70B.
    source: coinmarketcap.com
    11

    View Slide

  12. Cryptocurrencies – September 2017
    11 cryptocurrencies
    market cap of > $1B
    Bitcoin is $62B.
    source: coinmarketcap.com
    12

    View Slide

  13. Sidenote: Cryptocurrency Volatility
    13
    source: coinmarketcap.com

    View Slide

  14. What is Blockchain being Used For?
    Trade Settlement
    and FX Transactions
    digital ledger that tracks and
    protects valuable assets
    verifiable supply chains
    post-trade processing
    Keybase
    Identity management verified data
    Georgia government
    records
    supply chain efficiency
    14

    View Slide

  15. Properties of a Good Blockchain Application
    • Multiple separate parties want to cooperate
    • No central intermediary exists (or is wanted)
    • Relatively slow moving processes (allow latency)
    • Well-defined, bounded process
    • Predictable, simple data access required
    15

    View Slide

  16. Demo: Browse a blockchain
    blockchain.info
    Most public blockchains have a range of associated web based “explorers”
    • For Bitcoin we’ll use blockchain.info
    • For Ethereum we’ll use etherscan.io
    etherscan.io
    16

    View Slide

  17. Demo: Explore a blockchain
    • The WannaCry ransomware attackers have 3 bitcoin wallets:
    • 13AM4VW2dhxYgXeQepoHkHSQuy6NgaEb94
    • 115p7UMMngoj1pMvkpHijcRdfJNXj6LrLn
    • 12t9YDPgwueZ9NyMgw519p7AA8isjr6SMw
    • We can use blockchain.info to find out how much they have
    collected in ransom so far and where they sent it
    • Note: if using the API it returns values in satoshis: there are 10-8 satoshis in a
    bitcoin, so multiply by 0.00000001 to get BTC
    17

    View Slide

  18. Blockchain as an
    Architectural Element
    18

    View Slide

  19. Characteristics of a Blockchain Ledger
    • Distributed, replicated “database”
    • Distribution via a p2p model (no master)
    • Consensus model used to ensure integrity
    • Append only “immutable” store
    • Highly fault tolerant
    • Eventually consistent
    19

    View Slide

  20. Adding Smart Contracts
    • Code stored in a blockchain, executed by the
    blockchain virtual machine
    • Programming models vary by platform
    • Bitcoin - primitive ”Forth” script
    • IBM Hyperledger – GoLang
    • Ethereum - Solidity
    • Ethereum Solidity is our example in this session
    20

    View Slide

  21. Example: Ethereum Solidity Smart Contract
    contract Coin {
    // The keyword "public" makes those variables readable from outside.
    address public minter;
    mapping (address => uint) public balances;
    // Events allow light clients to react on changes efficiently.
    event Sent(address from, address to, uint amount);
    // This is the constructor whose code is run only when the contract is created.
    function Coin() { minter = msg.sender; }
    function mint(address receiver, uint amount) {
    if (msg.sender != minter) return;
    balances[receiver] += amount;
    }
    function send(address receiver, uint amount) {
    if (balances[msg.sender] < amount) return;
    balances[msg.sender] -= amount;
    balances[receiver] += amount;
    Sent(msg.sender, receiver, amount);
    }
    } 21
    // More details later …

    View Slide

  22. Quality Properties of a Distributed Ledger
    Useful Qualities
    • Append only
    • Security (integrity, non-
    repudiation, availability)
    • High fault-tolerance
    • No single point control or trust
    • Embedded immutable logic
    • Dynamic, evolving ecosystem
    Problematic Qualities
    • (very) eventual consistency
    • computationally expensive
    (generally)
    • Limited query model
    • Lack of privacy
    • lack of throughput scalability
    (generally – 10s txn/sec)
    • Lacking maturity
    22

    View Slide

  23. Aside: Storing Data
    • Blockchains not designed for
    large data items
    • Some (Bitcoin) optimised for
    many small transactions
    • Large data stored “off chain”
    • e.g. IPFS and Swarm
    • Store pointer in blockchain
    23

    View Slide

  24. Integrating Blockchain
    Blockchain
    Application
    (Dapp)
    Conventional
    Application
    Blockchain (e.g. Ethereum) Immutable Storage
    (e.g. Swarm, IPFS)
    object references
    queries, transactions,
    smart contract invocations
    24

    View Slide

  25. Thinking Point: Applying Blockchain
    • What could you use blockchain for?
    • At work or to change the world!
    • What problems would it solve or introduce?
    Recap
    • distributed, highly reliable, auditable, immutable database,
    not requiring trust between participants
    • smart contracts can embed computation in it
    • but slow, eventually consistent, limited queries
    25

    View Slide

  26. Programming Blockchain
    26

    View Slide

  27. Smart Contracts
    • The “programming” bit of blockchain technology
    • Code in the blockchain executed by the runtime
    • Any participant can add a smart contract (for a fee)
    • Contract usually mutates the state of the blockchain
    • add another transaction
    • Transforms blockchain to a dynamic system
    • A bit like triggers and stored procedures in RDBMS
    27

    View Slide

  28. Bitcoin “Script”
    • Very simple “FORTH-like” virtual machine
    • Constrained programming model of “locking” and ”unlocking” scripts
    • Locking script (“scriptPubKey”) defines constraints to execute the transaction
    • Unlocking script (“scriptSig”) satisfies the constraints to allow execution
    • Small number of “op codes” for use in scripts.
    Example
    Lock: OP_DUP OP_HASH160 OP_EQUAL OP_CHECKSIG
    Unlock:
    28

    View Slide

  29. Bitcoin “Script”

    OP_DUP OP_HASH160 OP_EQUAL OP_CHECKSIG
    Stack based execution:














    (Push 2 arguments) OP_DUP OP_HASH160 (Push argument)
    OP_EQUAL (= T)
    OP_CHECKSIG (= T)
    29

    View Slide

  30. Ethereum Solidity
    • Most popular contract language for Ethereum
    • Turing complete, object-oriented language
    • Inheritance and user-defined types
    • Compiles to bytecode that runs on the EVM
    • Emerging eco-system of frameworks and tools
    30

    View Slide

  31. Ethereum Solidity
    contract Coin {
    // The keyword "public" makes those variables readable from outside.
    address public minter;
    mapping (address => uint) public balances;
    // Events allow light clients to react on changes efficiently.
    event Sent(address from, address to, uint amount);
    // This is the constructor whose code is run only when the contract is created.
    function Coin() { minter = msg.sender; }
    function mint(address receiver, uint amount) {
    if (msg.sender != minter) return;
    balances[receiver] += amount;
    }
    function send(address receiver, uint amount) {
    if (balances[msg.sender] < amount) return;
    balances[msg.sender] -= amount;
    balances[receiver] += amount;
    Sent(msg.sender, receiver, amount);
    }
    }
    Contract
    Typed state
    Event for log
    (and callback)
    Functions to
    operate on
    state
    31

    View Slide

  32. Solidity & Ethereum Development Ecosystem
    32
    Geth Eth Pyethapp Clients for JS, .NET and Java
    Development Tools
    Mist Wallet MetaMask
    ether.camp

    View Slide

  33. Summary
    33

    View Slide

  34. Key Concepts
    34
    Distributed Ledgers
    • p2p append-only transaction stores
    Blockchains
    • cryptographically validated ledgers
    Smart Contracts
    • immutable code changing blockchain state

    View Slide

  35. What is Blockchain?
    • A novel type of distributed transaction store
    • Append-only, auditable, fault tolerant, secure by design
    • Can be slow and high-latency by accident
    • Most host “smart contract” code to provide secure
    computations
    35

    View Slide

  36. Some Applications
    36
    Value Transfers: securities clearing, payments
    Verifiable Records: property registers, supply chain,
    loyalty points
    Identity: verifiable digital identity, passports
    Verifiable Storage: immutable storage of digital assets
    Decentralised Notary: proof of existence of digital asset
    Currencies: Bitcoin, Ether, Litecoin, …

    View Slide

  37. To Find Out more
    • Bitcoin – bitcoin.org
    • Ethereum – ethereum.org
    • Solidity - solidity.readthedocs.io
    • Truffle - truffleframework.com
    • Embark - github.com/iurimatias/embark-framework
    • Dapp - dapp.readthedocs.io
    • IPFS – ipfs.io
    • Swarm - swarm-gateways.net
    • News – coindesk.com, cryptoinsider.com (and many others)
    37

    View Slide

  38. Eoin Woods
    Endava
    [email protected]
    @eoinwoodz
    Thank You
    38

    View Slide