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

IPFS @ dotScale

IPFS @ dotScale

Juan Batiz-Benet

April 25, 2016
Tweet

More Decks by Juan Batiz-Benet

Other Decks in Programming

Transcript

  1. ipfs.io
    @juanbenet
    2016-04-24

    View full-size slide

  2. 2,561,624,196
    x 200 MB

    View full-size slide

  3. 2,561,624,196
    512.3 PB
    x 200 MB

    View full-size slide

  4. Ubiquitous Computing + IoT

    View full-size slide

  5. Disconnected / Offline

    View full-size slide

  6. Awful Security Model

    View full-size slide

  7. NOT AUTHENTICATED
    NOT ENCRYPTED
    AT REST
    Awful Security Model

    View full-size slide

  8. Data Control

    View full-size slide

  9. Data Control

    View full-size slide

  10. Latency and Bandwidth Barriers

    View full-size slide

  11. Natural Disasters

    View full-size slide

  12. surprise oppression censorship
    Human Disasters

    View full-size slide

  13. Links Break
    Sites Disappear

    View full-size slide

  14. Links Break
    Sites Disappear

    View full-size slide

  15. Links Break
    Sites Disappear

    View full-size slide

  16. the web has problems
    huge inefficiencies
    no offline use
    bad security model
    bad in mobile and IoT
    censorship
    links break

    View full-size slide

  17. http://10.20.30.40/foo/bar/baz.png
    location path
    http://example.com/foo/bar/baz.png
    some problems stem from addressing model

    View full-size slide

  18. http://10.20.30.40/foo/bar/baz.png
    10.20.30.40
    you
    HTTP

    View full-size slide

  19. the good news

    View full-size slide

  20. IP
    UDP
    TCP SCTP
    Ethernet
    CSMA WIFI
    TP
    Coax Satellite
    Fiber Radio
    PPP
    HTTP SMTP
    FTP
    NFS Skype
    Pigeons
    Chat

    View full-size slide

  21. IP
    UDP
    TCP SCTP
    Ethernet
    CSMA WIFI
    TP
    Coax Satellite
    Fiber Radio
    PPP
    HTTP SMTP
    FTP
    NFS Skype
    Pigeons
    Chat

    View full-size slide

  22. computers
    specs code
    ideas humans

    View full-size slide

  23. computers
    specs code
    ideas humans
    Research Development Deployment Usage

    View full-size slide

  24. Research
    Development
    Deployment
    Use

    View full-size slide

  25. merkle trees
    merkle links

    View full-size slide

  26. merkle trees
    merkle links

    View full-size slide

  27. Permanent
    Distributed
    Safer
    Smarter Offline
    Faster

    View full-size slide

  28. a new hypermedia distribution protocol
    (a new web transport protocol)

    View full-size slide

  29. web
    DHT
    SFS
    routing
    network
    exchange
    merkledag
    naming
    applications
    The Stack

    View full-size slide

  30. routing
    network
    exchange
    merkldag
    naming
    applications
    The Stack
    Defining the Data
    Moving the Data
    IPLD
    libp2p
    IPNS
    Using the Data

    View full-size slide

  31. routing
    network
    exchange
    merkldag
    naming
    applications
    The Stack
    Defining the Data
    Moving the Data
    IPLD
    libp2p
    IPNS
    Using the Data

    View full-size slide

  32. routing
    network
    exchange Bitswap HTTP
    BitTorrent
    Kad DHT
    Chord mDNS
    Gossip Delegated
    FTP
    TOR
    QUIC TOR
    TCP
    uTP WebRTC WebSockets I2P
    I2P
    CJDNS UDT
    libp2p - a collection of peer-to-peer protocols
    for finding peers, and connecting to them
    for finding content, and transferring it

    View full-size slide

  33. libp2p - a collection of peer-to-peer protocols
    TCP uTP QUIC SCTP BLE TOR I2P
    Transports
    mDNS
    boot
    strap
    DNS
    Kad
    DHT
    PEX PKI
    Discovery
    Peer Routing mDNS
    Kad
    DHT
    DNS DVs
    mDNS
    pub
    sub
    Kad
    DHT
    Content Routing
    STUN TURN
    ICE
    Kad
    ICE
    NAT
    Traversal

    View full-size slide

  34. Transports
    Discovery
    Peer Routing
    NAT Traversal
    Content Routing
    libp2p

    View full-size slide

  35. Transports
    Discovery
    Peer Routing
    NAT Traversal
    Content Routing
    libp2p

    View full-size slide

  36. routing
    network
    exchange
    merkldag
    naming
    applications
    The Stack
    Defining the Data
    Moving the Data
    IPLD
    libp2p
    IPNS
    Using the Data

    View full-size slide

  37. a web of merkle-links

    View full-size slide

  38. merkle-links are behind bitcoin's security properties
    git's
    bittorrent's

    View full-size slide

  39. IPFS is like a forest of linked merkle-trees

    View full-size slide

  40. routing
    network
    exchange
    merkldag
    naming
    applications
    The Stack
    Defining the Data
    Moving the Data
    IPLD
    libp2p
    IPNS
    Using the Data

    View full-size slide

  41. routing
    network
    exchange
    merkldag
    naming
    applications
    The Stack
    Defining the Data
    Moving the Data
    Using the Data
    IPLD
    libp2p
    IPNS

    View full-size slide

  42. /ipns/QmYJPtosPTfoC/foo/bar/baz.png
    /ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
    /ipns/example.com/foo/bar/baz.png
    key name
    dns name
    /dns/example.com/foo/bar/baz.png
    content addr
    fs:/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
    ipfs:/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png

    View full-size slide

  43. /ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
    /ipns/example.com/foo/bar/baz.png
    dns name
    content addr

    View full-size slide

  44. /ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
    content path

    View full-size slide

  45. /ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
    content path
    foo
    bar
    baz.png
    QmW98pJrc6FZ6

    View full-size slide

  46. /ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
    content path
    foo:HB
    HB
    HC
    HD
    bar:HC
    baz.png
    :HD
    QmW98pJrc6FZ6
    foo
    bar
    baz.png

    View full-size slide

  47. /ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
    content path
    foo:HB
    HB
    HC
    HD
    bar:HC
    baz.png
    :HD
    QmW98pJrc6FZ6
    foo
    bar
    baz.png
    MERKLE LINK

    View full-size slide

  48. jbenet @ earth : ~ > ipld cat —-fmt yml $gitcommit
    ---
    tree: {@: e4647147e940e2fab134e7f3d8a40c2022cb36f3}
    parents:
    - {@: /ipfs/QmP8AmEKHHMnaBaQsEJVGs7ZbBSQAxhPn9zP2jHQy6Uekj}
    - {@: /ipfs/QmfVQwj2cyhrKQV1BY1y2nAcQcjiKEkvEYJDGwWFUHcHaQ}
    author:
    link: {@: /ipfs/QmVoXUXmES4ujTdJ9CQAs8D3jMag2enjtBn2towYHmKxYa}
    name: Juan Batiz-Benet
    email: [email protected]
    time: "1435398707 -0700"
    committer:
    link: {@: /ipfs/QmVoXUXmES4ujTdJ9CQAs8D3jMag2enjtBn2towYHmKxYa}
    name: Juan Batiz-Benet
    email: [email protected]
    time: "1435398707 -0700"
    message: "Merge pull request #7 from ipld\n\n(WIP) records + merkledag specs"
    versioning data structures - git

    View full-size slide

  49. AUTHENTICATED
    WEBAPP DATA
    user: @juanbenet
    name: Juan Benet
    user: @daviddias
    name: David Dias
    @juanbenet
    follows
    @daviddias
    user: @timbl
    name: Tim Berners-Lee
    @juanbenet
    follows
    @timbl
    @juanbenet follows
    signed by @juanbenet

    View full-size slide

  50. Keychain - cryptographic artifacts as IPFS objects
    parent: QmPARENT1
    key fmt: _____________
    keydata: _____________
    parent: QmPARENT2
    key fmt: _____________
    keydata: _____________
    parent: 0
    key fmt: _____________
    keydata: _____________

    View full-size slide

  51. give digital information
    print-like qualities.
    - references are to the work, not the copy
    - any copy is authoritative
    - anybody can choose to archive it
    - anybody can read it later
    - anybody can replicate it

    View full-size slide

  52. /ipns/QmYJPtosPTfoC/foo/bar/baz.png
    /ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
    /ipns/example.com/foo/bar/baz.png
    key name
    dns name
    /dns/example.com/foo/bar/baz.png
    content addr
    fs:/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png
    ipfs:/ipfs/QmW98pJrc6FZ6/foo/bar/baz.png

    View full-size slide

  53. routing
    network
    exchange
    IPLD
    naming
    applications
    IPNS
    Bitswap
    Kad DHT mDNS
    QUIC TCP
    uTP WebRTC WebSockets
    Websites
    Etherpad
    CJDNS UDT
    uPort
    Orbit Mediachain

    View full-size slide

  54. routing
    network
    exchange
    IPLD
    naming
    applications
    IPNS
    DNS Namecoin
    Bitswap HTTP
    BitTorrent
    Kad DHT
    Chord mDNS
    Gossip Delegated
    FTP
    TOR
    QUIC TOR
    TCP
    uTP WebRTC WebSockets
    Orbit
    Websites
    Etherpad
    I2P
    I2P
    CJDNS UDT
    uPort
    EthNames
    Mediachain
    Blockstack

    View full-size slide

  55. large open source project
    400+ contributors
    70+ contribute weekly

    View full-size slide

  56. live ipfs network already distributed all over the world
    >2000 ipfs nodes in jan (bitcoin is ~10k, bittorrent >30M)

    View full-size slide

  57. 500,000,000+ files

    View full-size slide

  58. 500,000,000+ files
    500,000+ docker pulls

    View full-size slide

  59. Live Examples
    video distribution + streaming

    View full-size slide

  60. Live Examples
    legal documents

    View full-size slide

  61. ipfs.pics (imgur-like)
    Live Examples

    View full-size slide

  62. 3D models (they're big!)
    Live Examples

    View full-size slide

  63. Live Examples
    p2p chat

    View full-size slide

  64. Live Examples
    scientific data + papers

    View full-size slide

  65. Live Examples
    blogs and websites

    View full-size slide

  66. totally distributed webapps
    Live Examples

    View full-size slide

  67. distributed webapps
    - app code stored + distributed with ipfs
    - app data stored + distributed with ipfs
    - browsers can connect to each other
    - no origin servers!
    - no central point of failure
    - everything end-to-end encrypted
    - app "lives on the network"
    examples: forums, chat, messaging,
    cms, blogs, github, ...

    View full-size slide

  68. github.com/haadcode/orbit
    p2p chat on IPFS
    Orbit

    View full-size slide

  69. - distributed / peer-to-peer
    - cryptographically verified links
    - digitally signed links
    - "everyone is a mirror"
    - save lots of bandwidth
    - versioning built in
    used for package managers

    View full-size slide

  70. github.com/diasdavid/registry-mirror
    works with vanilla npm
    npm on ipfs

    View full-size slide

  71. github.com/diasdavid/registry-mirror
    works with vanilla npm
    npm on ipfs
    github.com/whyrusleeping/gx
    extensible pkg mgr
    gx-go for Golang!
    gx

    View full-size slide

  72. used for secure documents
    - content addressed hash links
    - digitally signed links
    - trustless ledgers
    - permanent links
    - secure document web
    already in use at:
    - banks
    - legal archives
    - blockchain companies
    - smart contract apps

    View full-size slide

  73. used to archive data of

    View full-size slide

  74. ipfs.io
    @juanbenet
    2016-04-24

    View full-size slide