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

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`.

Juan Batiz-Benet

July 16, 2014
Tweet

More Decks by Juan Batiz-Benet

Other Decks in Technology

Transcript

  1. IPFS goal - to connect all devices with the same

    system of files like the web plus git and bittorrent
  2. network routing exchange mdag naming files dht (kademlia) or anything

    uTP, WebRTC bittorrent -> bitswap ipfs stack
  3. network routing exchange mdag naming files dht (kademlia) or anything

    uTP, WebRTC bittorrent -> bitswap merkle dag ipfs stack
  4. network routing exchange mdag naming files dht (kademlia) or anything

    uTP, WebRTC bittorrent -> bitswap merkle dag mutability + links ipfs stack
  5. network routing exchange mdag naming files dht (kademlia) or anything

    uTP, WebRTC bittorrent -> bitswap merkle dag mutability + links applications ipfs stack
  6. network routing exchange mdag naming files dht (kademlia) or anything

    uTP, WebRTC bittorrent -> bitswap merkle dag mutability + links applications ipfs stack
  7. network routing exchange mdag naming files dht (kademlia) or anything

    uTP, WebRTC bittorrent -> bitswap merkle dag mutability + links applications ipfs stack
  8. network routing exchange mdag naming files dht (kademlia) or anything

    uTP, WebRTC bittorrent -> bitswap merkle dag mutability + links applications ipfs stack
  9. network routing exchange mdag naming files dht (kademlia) or anything

    uTP, WebRTC bittorrent -> bitswap merkle dag mutability + links applications ipfs stack
  10. type Link struct { Name string Size uint64 Hash Multihash

    } type Node struct { Links []*Link Data []byte } ipfs merkle dag
  11. network routing exchange mdag naming files dht (kademlia) or anything

    uTP, WebRTC bittorrent -> bitswap merkle dag mutability + links applications ipfs stack
  12. 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
  13. network routing exchange mdag naming files dht (kademlia) or anything

    uTP, WebRTC bittorrent -> bitswap merkle dag mutability + links applications ipfs stack
  14. 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).
  15. 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.
  16. 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
  17. 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