IPFS - The Permanent Web - at Sourcegraph

IPFS - The Permanent Web - at Sourcegraph

High-level presentation of IPFS at Sourcegraph meetup #003.

- https://github.com/jbenet/ipfs
- http://static.benet.ai/t/ipfs.pdf

IPFS is a global, versioned, peer-to-peer file system. It combines good ideas from Git, BitTorrent, Kademlia, and SFS. You can think of it like a single BitTorrent swarm, exchanging Git objects, making up the web. IPFS provides an interface much simpler than HTTP, but has permanence built in. You can also use it to mount the world at `/ipfs`.

A9670c143716320893863524a0efbaff?s=128

Juan Batiz-Benet

July 16, 2014
Tweet

Transcript

  1. 2.
  2. 3.
  3. 12.

    IPFS goal - to connect all devices with the same

    system of files like the web plus git and bittorrent
  4. 26.

    network routing exchange mdag naming files dht (kademlia) or anything

    uTP, WebRTC bittorrent -> bitswap ipfs stack
  5. 27.

    network routing exchange mdag naming files dht (kademlia) or anything

    uTP, WebRTC bittorrent -> bitswap merkle dag ipfs stack
  6. 28.

    network routing exchange mdag naming files dht (kademlia) or anything

    uTP, WebRTC bittorrent -> bitswap merkle dag mutability + links ipfs stack
  7. 29.

    network routing exchange mdag naming files dht (kademlia) or anything

    uTP, WebRTC bittorrent -> bitswap merkle dag mutability + links applications ipfs stack
  8. 30.

    network routing exchange mdag naming files dht (kademlia) or anything

    uTP, WebRTC bittorrent -> bitswap merkle dag mutability + links applications ipfs stack
  9. 31.

    network routing exchange mdag naming files dht (kademlia) or anything

    uTP, WebRTC bittorrent -> bitswap merkle dag mutability + links applications ipfs stack
  10. 32.
  11. 35.

    network routing exchange mdag naming files dht (kademlia) or anything

    uTP, WebRTC bittorrent -> bitswap merkle dag mutability + links applications ipfs stack
  12. 41.
  13. 43.

    network routing exchange mdag naming files dht (kademlia) or anything

    uTP, WebRTC bittorrent -> bitswap merkle dag mutability + links applications ipfs stack
  14. 44.
  15. 47.

    type Link struct { Name string Size uint64 Hash Multihash

    } type Node struct { Links []*Link Data []byte } ipfs merkle dag
  16. 50.

    network routing exchange mdag naming files dht (kademlia) or anything

    uTP, WebRTC bittorrent -> bitswap merkle dag mutability + links applications ipfs stack
  17. 51.
  18. 52.
  19. 55.

    ipns paths # ipfs # /ipfs/<hash-of-object>/<path-to-object> /ipfs/XLYkgq61DYaQ8Nhkc/foo/bar.txt # ipns mutable

    mapping (via DHT/Routing) # qyU7rLcnSa7dSHQ16 -> XLYkgq61DYaQ8Nhkc /ipns/qyU7rLcnSa7dSHQ16/foo/bar.txt # ipns + dns record # DNS TXT juan.benet.ai “ipfs=qyU7rLcnSa7dSHQ16” /ipns/juan.benet.ai/foo/bar.txt
  20. 56.

    network routing exchange mdag naming files dht (kademlia) or anything

    uTP, WebRTC bittorrent -> bitswap merkle dag mutability + links applications ipfs stack
  21. 58.

    use cases 1. As a mounted global filesystem, under /ipfs

    and /ipns. 2. As a mounted personal sync folder that automatically versions, publishes, and backs up any writes. 3. As an encrypted file or data sharing system. 4. As a versioned package manager for all software. 5. As the root filesystem of a Virtual Machine. 6. As the boot filesystem of a VM (under a hypervisor).
  22. 59.

    use cases 7. As a database: applications can write directly

    to the Merkle DAG data model and get all the versioning, caching, and distribution IPFS provides. 8. As a linked (and encrypted) communications platform. 9. As an integrity checked CDN for large files (without SSL). 10. As an encrypted CDN. 11. On webpages, as a web CDN. 12. As a new Permanent Web where links do not die.
  23. 61.
  24. 62.

    Links! website - http://ipfs.io paper - http://static.benet.ai/t/ipfs.pdf protocol - https://github.com/jbenet/ipfs

    Go impl - https://github.com/jbenet/go-ipfs node impl - https://github.com/jbenet/node-ipfs GitHub - @jbenet Twitter - @juanbenet
  25. 63.

    Links! website - /ipns/ipfs.io paper - /ipns/ipfs.io/ipfs.pdf protocol - /ipns/github.com/jbenet/ipfs

    Go impl - /ipns/github.com/jbenet/go-ipfs node impl - /ipns/github.com/jbenet/node-ipfs GitHub - @jbenet Twitter - @juanbenet
  26. 64.