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

IPFS: Re-distributing the Web

IPFS: Re-distributing the Web

Slides from my presentation at DTN Conf (http://dtn.is) on May 2015

Juan Batiz-Benet

May 24, 2015
Tweet

More Decks by Juan Batiz-Benet

Other Decks in Programming

Transcript

  1. web

  2. routing network exchange merkledag naming applications IPNS Bitswap QUIC TCP

    uTP WebRTC WebSockets Git Bitcoin VLC Etherpad Chat UDT CJDNS Kad DHT mDNS
  3. routing network exchange merkledag naming applications IPNS Bitswap QUIC TCP

    uTP WebRTC WebSockets UDT CJDNS Kad DHT mDNS Git Bitcoin VLC Etherpad Chat
  4. routing network exchange merkledag naming applications IPNS DNS Namecoin Bitswap

    HTTP BitTorrent Kad DHT Chord mDNS Gossip Delegated FTP TOR QUIC TOR TCP uTP WebRTC WebSockets Git Bitcoin VLC Etherpad Chat I2P I2P CJDNS UDT
  5. IP UDP TCP SCTP Ethernet CSMA WIFI TP Coax Satellite

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

    Fiber Radio PPP HTTP SMTP FTP NFS Skype Pigeons Chat
  7. in IPFS data forms a merkle dag nodes have links

    and data [ (hash, size, name), … ] QmbTJW4iGGBS 3987 foo QmbTQmPMEFgh 1020 bar QmZFJguywFUY 6787 baz anything you want []byte links data 2. Overview
  8. can resolve unix-style paths across dag links 2. Overview QmbTJW4iGGBS

    3987 foo QmbTQmPMEFgh 1020 bar QmZFJguywFUY 6787 baz QmbTQmPMEFgh 1020 biff this node has some data… this node also has some data. but no links! 1 3 5 2 4 suppose links:
  9. can resolve unix-style paths across dag links 2. Overview QmbTJW4iGGBS

    3987 foo QmbTQmPMEFgh 1020 bar QmZFJguywFUY 6787 baz QmbTQmPMEFgh 1020 biff this node has some data… this node also has some data. but no links! suppose H(<1>) = QmW98pJrc6FZ We can resolve: /ipfs/QmW98pJrc6FZ as 1 /ipfs/QmW98pJrc6FZ/foo as 2 /ipfs/QmW98pJrc6FZ/bar as 3 /ipfs/QmW98pJrc6FZ/foo/biff as 3 /ipfs/QmW98pJrc6FZ/baz as 4 1 3 5 1 2 2 3 4 4 3 suppose links: 1
  10. can resolve unix-style paths across dag links 2. Overview QmbTJW4iGGBS

    3987 foo QmbTQmPMEFgh 1020 bar QmZFJguywFUY 6787 baz QmbTQmPMEFgh 1020 biff this node has some data… this node also has some data. but no links! suppose H(<1>) = QmW98pJrc6FZ We can resolve: /ipfs/QmW98pJrc6FZ as 1 /ipfs/QmW98pJrc6FZ/foo as 2 /ipfs/QmW98pJrc6FZ/bar as 3 /ipfs/QmW98pJrc6FZ/foo/biff as 3 /ipfs/QmW98pJrc6FZ/baz as 4 1 3 5 1 2 2 3 4 4 3 suppose links: 1
  11. can resolve unix-style paths across dag links 2. Overview QmbTJW4iGGBS

    3987 foo QmbTQmPMEFgh 1020 bar QmZFJguywFUY 6787 baz QmbTQmPMEFgh 1020 biff this node has some data… this node also has some data. but no links! suppose H(<1>) = QmW98pJrc6FZ We can resolve: /ipfs/QmW98pJrc6FZ as 1 /ipfs/QmW98pJrc6FZ/foo as 2 /ipfs/QmW98pJrc6FZ/bar as 3 /ipfs/QmW98pJrc6FZ/foo/biff as 3 /ipfs/QmW98pJrc6FZ/baz as 4 1 3 5 1 2 2 3 4 4 3 suppose links: 1
  12. can resolve unix-style paths across dag links 2. Overview QmbTJW4iGGBS

    3987 foo QmbTQmPMEFgh 1020 bar QmZFJguywFUY 6787 baz QmbTQmPMEFgh 1020 biff this node has some data… this node also has some data. but no links! suppose H(<1>) = QmW98pJrc6FZ We can resolve: /ipfs/QmW98pJrc6FZ as 1 /ipfs/QmW98pJrc6FZ/foo as 2 /ipfs/QmW98pJrc6FZ/bar as 3 /ipfs/QmW98pJrc6FZ/foo/biff as 3 /ipfs/QmW98pJrc6FZ/baz as 4 1 3 5 1 2 2 3 4 4 3 suppose links: 1
  13. can resolve unix-style paths across dag links 2. Overview QmbTJW4iGGBS

    3987 foo QmbTQmPMEFgh 1020 bar QmZFJguywFUY 6787 baz QmbTQmPMEFgh 1020 biff this node has some data… this node also has some data. but no links! suppose H(<1>) = QmW98pJrc6FZ We can resolve: /ipfs/QmW98pJrc6FZ as 1 /ipfs/QmW98pJrc6FZ/foo as 2 /ipfs/QmW98pJrc6FZ/bar as 3 /ipfs/QmW98pJrc6FZ/foo/biff as 3 /ipfs/QmW98pJrc6FZ/baz as 4 1 3 5 1 2 2 3 4 4 3 suppose links: 1
  14. can resolve unix-style paths across dag links 2. Overview QmbTJW4iGGBS

    3987 foo QmbTQmPMEFgh 1020 bar QmZFJguywFUY 6787 baz QmbTQmPMEFgh 1020 biff this node has some data… this node also has some data. but no links! suppose H(<1>) = QmW98pJrc6FZ We can resolve: /ipfs/QmW98pJrc6FZ as 1 /ipfs/QmW98pJrc6FZ/foo as 2 /ipfs/QmW98pJrc6FZ/bar as 3 /ipfs/QmW98pJrc6FZ/foo/biff as 3 /ipfs/QmW98pJrc6FZ/baz as 4 1 3 5 1 2 2 3 4 4 3 suppose links: 1
  15. blob, tree, commit unix files and dirs any data structures

    are represented as dags blocks, txns, wallets 2. Overview
  16. blob, tree, commit unix files and dirs any data structures

    are represented as dags blocks, txns, wallets kv-stores 2. Overview
  17. blob, tree, commit unix files and dirs any data structures

    are represented as dags blocks, txns, wallets kv-stores 2. Overview
  18. files are dag nodes BIG files may be split into

    many unixfs as a dag 2. Overview
  19. directories are also dag nodes files are dag nodes BIG

    files may be split into many unixfs as a dag 2. Overview
  20. which link to others directories are also dag nodes files

    are dag nodes BIG files may be split into many unixfs as a dag 2. Overview
  21. ipfs paths: blockchain /ipfs/XLYkgq61DYaQ8Nhk/parent/tx/15 parent <hash1> XLYkgq61DYaQ8Nhk data1 tx <hash3>

    <hash1> data2 <hash3> data3 15 <hash5> <hash5> parent <hash2> 14 <hash4>
  22. ipfs paths: blockchain /ipfs/XLYkgq61DYaQ8Nhk/parent/tx/15 parent <hash1> XLYkgq61DYaQ8Nhk data1 tx <hash3>

    <hash1> data2 <hash3> data3 15 <hash5> <hash5> data4 input0 <hash6> parent <hash2> 14 <hash4> output0 <hash7>
  23. can store part of the dag has pki based identity

    connects to others an IPFS node 2. Overview
  24. has pki based identity connects to others can get more

    from peers an IPFS node can store part of the dag 2. Overview
  25. has pki based identity connects to others can be run

    as a server can get more from peers an IPFS node can store part of the dag 2. Overview
  26. has pki based identity connects to others can be run

    as a server or embedded in apps app
 
 can get more from peers an IPFS node can store part of the dag 2. Overview
  27. 4 ways to install IPFS 0. wget from an ifs

    link 1. npm install -g go-ipfs 2. go get github.com/ipfs/go-ipfs/cmd/ipfs 3. install packages on the website