InterPlanetary File System

From Infogalactic: the planetary knowledge core
(Redirected from IPFS)
Jump to: navigation, search
InterPlanetary File System
Ipfs-logo-1024-ice-text.png
IPFS logo.
Original author(s) Juan Benet and Protocol Labs
Developer(s) Protocol Labs
Stable release 0.4.17 / 27 July 2018; 5 months ago (2018-07-27)
Development status Active
Written in Protocol implementations: Go (reference implementation), JavaScript, C[1], Python
Client libraries: Go, Java, JavaScript, Python, Scala, Haskell, Swift, Common Lisp, Rust, Ruby, PHP, C#, Erlang
Operating system FreeBSD, Linux, macOS, Windows
Available in Go, JavaScript, Python
Type Protocol, distributed file system, content delivery network
License MIT license
Website ipfs.io
IPFS on YouTube



Filecoin logo.
IPFS logo.
IPLD logo.
libp2p logo.
Multiformats logo.
Protocol Labs inter-related projects:
Filecoin, IPFS, IPLD, libp2p, and Multiformats.




InterPlanetary File System (IPFS) is a protocol and network designed to create a content-addressable, peer-to-peer method of storing and sharing hypermedia distribution protocol. Nodes in the IPFS network form a distributed file system.[2] IPFS was initially designed by Juan Benet, and is now an open-source project developed with help from the community and Protocol Labs.[3][4]

History

The Wikipedia logo has an IPFS hash with the following code: QmRW3V9znzFW9M5FYbitSEvd5dQrPWGvPvgQD6LM22Tv8D. It can be accessed with that hash over HTTP by a public gateway or a local IPFS instance
YouTube video: The next Internet Revolution - Juan Benet - TEDxSanFrancisco (2016-12-08).
YouTube video: EB100 – Juan Benet: Decentralizing The Web With The Inter-Planetary File System (IPFS) interview on Epicenter (2015-10-12).
YouTube video: IPFS Alpha Demo introduction (2015-02-20).

The "InterPlanetary File System" name is a specific choice as homage to J. C. R. Licklider (1915-03-11 - 1990-06-26) who developed the ideas for what eventually turned into the ARPANET, precursor to the Internet, however, Licklider originally called it "the Inter-Galactic Network". The name also conveys a sense of serious effort and scale to ambitiously overcome latency issues across great distances.[5]

In 2014, the IPFS protocol took advantage of the Bitcoin blockchain protocol and network infrastructure in order to store unalterable data, remove duplicated files across the network, and obtain address information for accessing storage nodes to search for files in the network.[6][2]

In July 2014, Juan Benet delivered the first public talk describing IPFS: The Permanent Web at Sourcegraph's offices. Development on the open-source project began soon thereafter, and the paper titled "IPFS - Content Addressed, Versioned, P2P File System" was released in April 2015.

In February of 2015, the Go[7] implementation was released as an "Alpha Distribution". Since then, go-ipfs has been making regular releases on the road towards Beta. Implementations in JavaScript[8] and Python are in progress.[9] The Go implementation is considered to be the reference implementation[10] while formal specifications are developed.[11]

Description

IPFS is a peer-to-peer distributed file system that seeks to connect all computing devices with the same system of files. In some ways, IPFS is similar to the World Wide Web, but IPFS could be seen as a single BitTorrent swarm, exchanging objects within one Git repository. In other words, IPFS provides a high-throughput, content-addressed block storage model, with content-addressed hyperlinks.[12] This forms a generalized Merkle directed acyclic graph (DAG). IPFS synthesizes successful ideas from previous peer-to-peer systems, including a distributed hash table, an incentivized block exchange, and a self-certifying namespace. IPFS has no single point of failure, and nodes do not need to trust each other[13] not to tamper with data in transit.[14] Distributed Content Delivery saves bandwidth and prevents DDoS attacks, which HTTP struggles with.[6]

IPFS has a name service called IPNS, a global namespace based on PKI, serves to build trust chains, is compatible with other NSes and can map DNS, .onion, .bit, etc. to IPNS.[15]

The filesystem can be accessed in a variety of ways, including via FUSE and over HTTP.[12] A local file can be added to the IPFS filesystem, making it available to the world. Files are identified by their hashes, so it's caching-friendly. They are distributed using a BitTorrent-based protocol. Other users viewing the content aid in serving the content to others on the network. IPFS has a name service called IPNS, a global namespace based on PKI, serves to build trust chains, is compatible with other NSes and can map DNS, .onion, .bit, etc. to IPNS.[16]

Merkle data format

Every Merkle is a directed acyclic graph (DAG) because each node is accessed via its name. Each branch of Merkle is the hash of its local contents, naming children by their hash instead of their full contents. So after creation there is no way to edit a node. This prevents cycles (assuming there are no hash collisions), since one cannot link the first created node to the last node to create the last reference.

In general, for any Merkle to create a new branch or verify an existing branch, a hash algorithm is used on some combination of the local contents, such as a list of child hashes and other bytes. A few different hash algorithms are available in IPFS.

The data input to any of those hash algorithms is documented.[17]

5 Protocol Labs IPFS inter-related projects

  • IPLD (InterPlanetary Linked Data), another inter-related Protocol Labs project, is the data model connecting all data through cryptographic hashes to ease navigation and connections for the content-addressable Decentralized Web.[18][19] IPLD extends beyond just Protocol Labs projects to other projects like Bitcoin, Etherium, Git, and beyond, "The sky’s the limit as IPLD allows you to work across protocol boundaries. The point is that IPLD provides libraries that make the underlying data interoperable across tools and across protocols by default."[20]
  • Multiformats, a Protocol Labs project, is a collection of protocols that future-proof systems, presently, with self-describing formats to make systems interoperable and upgradable.[21][22][23] In layman's terms, when you share or receive a data you want it to describe itself in a way that it cannot be mistaken, tampered with, or corrupted so that it's what it says it is.[citation needed]
  • libp2p is a modular networking stack that unites various transports and peer-to-peer protocols, making it easy for developers to build large, robust p2p networks.[24][25] Features include: use of several transports, native roaming, runtime freedom, protocol muxing, offline abilities, encrypted connections, uncompromising upgrades, operates within-browsers, and it's prepared for high-latency scenarios (ie. durable for unreliable networks or distances in time (and space)).[26][27]
Filecoin, an open-source, public, cryptocurrency and digital payment system intended to be a blockchain-based digital storage and data retrieval method.[29][30][31][32] It is made by Protocol Labs and builds on top of InterPlanetary File System,[29] allowing users to rent unused hard drive space.[33]

"In short: IPFS addresses and moves content; Filecoin is the missing incentive layer."[34]

Newsworthy notable IPFS users

  • IPFS is being used to create snapshot mirrors of Wikipedia, which allows people living in jurisdictions where Wikipedia is blocked to access the content of Wikipedia.[37] Filecoin, which is also developed by Juan Benet, is an IPFS-based cooperative storage cloud.[38]
"UPDATE: There are now English and Kurdish versions of Wikipedia on IPFS as well as the Turkish verison."[39]
Wikipedia snapshots on IPFS are "independent effort[s] undertaken by the IPFS maintainers... ...not affiliated with the Wikimedia Foundation" nor the Wikipedia article contributor volunteers.[40]
  • On Reddit, a critical analysis discussion breaks down why, "IPFS can't be a useful way to protest censorships in that people can't hide their IPs from gov[ernment]s on IPFS," including the facts that anonymity is often critical, or how IPFS nodes aren't abundant, and IPFS is not yet popular or widely adopted, much less considered a viable alternative yet, still easy enough to block.[41]
  • Convicted hacker and neo-Nazi Andrew Auernheimer, also known as weev, announced in 2018 that he was beginning to use IPFS exclusively to distribute his racist and anti-Semitic podcast "Race Ghost".[42]

IPFS-based applications

  • DTube, based on the IPFS protocol, is a decentralized video platform embraced by blogging and social networking communities like Steemit that uses the Steem blockchain to reward content publishers and curators. DTube is similar to YouTube, though without advertisements yet supported with Steem currency when users upvote videos.[46]
  • Steemit, a blogging and social networking website on top of the Steem circlechain database. The Steem blockchain produces Steem and Steem Dollars which are tradeable tokens users obtain for posting, discovering, and commenting on interesting content.[54]
  • UltraNote, a cryptocurrency which supports encrypted messaging with file transfers of up to 100MB with "self-destruct" feature utilizes IPFS to store files.[55]
  • Zcash, a cryptocurrency that offers privacy and selective transparency of transactions. Zcash payments are published on a public blockchain, but the sender, recipient, and amount of a transaction may remain private.[56][57]

See also

Similar or related applications

References

  1. Agorise (23 October 2017). "c-ipfs: IPFS implementation in C. Why C? Think Bitshares' Stealth backups, OpenWrt routers (decentralize the internet/meshnet!), Android TV, decentralized Media, decentralized websites, decent." Github.com. Retrieved 25 October 2017.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  2. 2.0 2.1 Finley, Kurt (June 20, 2016). "The Inventors of the Internet Are Trying to Build a Truly Permanent Web". Wired.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  3. "The IPFS Project". Ipfs.io. Retrieved 11 September 2015.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  4. "IPFS README - Who designed it?". Github.io. Retrieved 11 September 2015.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  5. Benet, Juan (2015-10-22). "Stanford Seminar - IPFS and the Permanent Web (Juan Benet of Protocol Labs)". YouTube. StanfordOnline. Retrieved 2018-04-10.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles> @ 4m23s-5m17s, featuring Juan Benet (computer scientist) of Protocol Labs.
  6. 6.0 6.1 "IPFS Protocol Selects Ethereum Over Bitcoin, Prefers Ethereum Dev Community". Cointelegraph.com. Retrieved 25 October 2017.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  7. "ipfs/go-ipfs". GitHub. Retrieved 2017-02-13.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  8. "ipfs/js-ipfs". GitHub. Retrieved 2017-02-13.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  9. "ipfs/py-ipfs". GitHub. Retrieved 2017-02-13.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  10. "IPFS Docs". ipfs.io. Retrieved 2017-02-13.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  11. "ipfs/specs". GitHub. Retrieved 2017-02-13.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  12. 12.0 12.1 Allison, Ian (13 October 2016). "Juan Benet of IPFS talks about Filecoin". Ibtimes.co.uk. Retrieved 25 October 2017.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  13. "The IPFS Project - How it works". Retrieved 11 September 2015.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  14. "IPFS is the Distributed Web". Ipfs.io. Retrieved 27 March 2018.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  15. "IPFS README". Github.com. Retrieved 11 September 2015.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  16. "IPFS README". Github.com. Retrieved 11 September 2015.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  17. "go-ipfs: IPFS implementation in go". GitHub.com. 25 October 2017. Retrieved 25 October 2017.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  18. "IPLD at Protocol Labs, the data model of the content-addressable web". Retrieved 2018-11-04.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  19. "IPLD at GitHub". Retrieved 2018-11-04.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  20. "IPLD.io - the data model of the content-addressable web". Retrieved 2018-11-04.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  21. "Multiformats at Protocol Labs". Retrieved 2018-11-04.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  22. "Multiformats.io". Retrieved 2018-11-04.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  23. "Multiformats at GitHub". Retrieved 2018-11-04.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  24. "libp2p at Protocol Labs". Retrieved 2018-11-04.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  25. "libp2p on GitHub". Retrieved 2018-11-04.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  26. "Libp2p.io". Retrieved 2018-11-04.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  27. David Dias (2018-08-29). "Introduction to libp2p - David Dias". YouTube. libp2p. Retrieved 2018-11-04.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  28. Johnson, Steven (2018-01-16). "Beyond the Bitcoin Bubble". The New York Times. Retrieved 2018-09-26.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  29. 29.0 29.1 "Showdown in the Cloud: Dropbox IPO, Meet the Filecoin ICO". Observer. 2017-07-11. Retrieved 2017-08-11.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  30. Tepper, Fitz. "Filecoin's ICO opens today for accredited investors after raising $52M from advisers | TechCrunch". Retrieved 2017-08-11.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  31. Lua error in Module:Citation/CS1/Identifiers at line 47: attempt to index field 'wikibase' (a nil value).
  32. "Investors poured millions into a storage network that doesn't exist yet". Ars Technica. Retrieved 2017-08-11.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  33. Johnson, Steven (2018-01-16). "Beyond the Bitcoin Bubble". The New York Times. Retrieved 2018-09-26.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  34. "What is the connection between IPFS and Filecoin?". Filecoin.io. Retrieved 2018-11-04.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  35. Balcell, Marta Poblet (5 October 2017). "Inside Catalonia's cypherpunk referendum". Eureka Street.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  36. Hill, Paul (30 September 2017). "Catalan referendum app removed from Google Play Store". Neowin. Retrieved 2017-10-06.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  37. Dale, Brady (10 May 2017). "Turkey Can't Block This Copy of Wikipedia". Observer Media. Archived from the original on 2017-10-18. Retrieved 20 December 2017.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  38. Johnson, Steven (2018-01-16). "Beyond the Bitcoin Bubble". The New York Times. Retrieved 2018-09-26.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  39. The IPFS Team (2017-05-04). "Uncensorable Wikipedia on IPFS". IPFS.io. The IPFS Team. Retrieved 2018-04-09.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  40. The IPFS Team (2017-05-04). "Uncensorable Wikipedia on IPFS". IPFS.io. The IPFS Team. Retrieved 2018-04-09.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  41. eanat (2017-05-08). "Uncensorable Wikipedia on IPFS". Reddit. Reddit. Retrieved 2018-04-09.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  42. Auernheimer, Andrew (24 June 2018). "Race Ghost".<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  43. Prisco, Giulio. "Akasha Project Unveils Decentralized Social Media Network Based on Ethereum and IPFS". Bitcoin Magazine. Retrieved 2017-03-31.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  44. "AKASHA". GitHub. Retrieved 2017-03-31.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  45. "AKASHA Project | Co-creating The Language of Freedom". akasha.world. Retrieved 2017-03-31.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  46. Dollentas, Nigel (August 23, 2017). "DTube: Steemit User Builds Foundations of a Decentralized YouTube". BTC Manager. Retrieved May 6, 2018.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  47. 47.0 47.1 Understanding Ethereum (Report). CoinDesk. 24 June 2016.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  48. Cryptocurrencies: A Brief Thematic Review. Social Science Research Network. Date accessed 28 august 2017.
  49. ConsenSys (2016-06-23). "Ethereum, Gas, Fuel, & Fees". ConsenSys Media. Retrieved 2017-01-15.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  50. Benet, Juan (2015-10-22). "Stanford Seminar - IPFS and the Permanent Web (Juan Benet of Protocol Labs)". YouTube. StanfordOnline. Retrieved 2018-04-10.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles> @ 1h03m26s-1h03m49s, featuring Juan Benet (computer scientist) of Protocol Labs.
  51. https://www.usv.com/blog/introducing-ob1
  52. IPFS (2016-10-12). "orbit Chat - Q4 Roadmap". YouTube. IPFS. Retrieved 2018-04-09.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  53. Ethereum Foundation (2016-10-29). "Orbit Distributed, Real Time Web3 Apps with IPFS and Ethereum". YouTube. Ethereum Foundation. Retrieved 2018-04-09.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  54. "Steemit: New Social Media Platform Which Pays You to Post". Cointelegraph. 9 May 2016.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  55. "Attachment feature added to GUI wallet | UltraNote XUN Blog". blog.ultranote.org. Retrieved 2018-04-07.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  56. Jon Southurst (2016-06-07). "Snowden: Anonymous 'Zcash' Could Solve Bitcoin Surveillance Risks". Bitcoin.com. Retrieved 2016-10-08.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>
  57. "Zcash - About". Retrieved 2016-10-08. Zcash is a decentralized and open-source cryptocurrency that offers both private and transparent transaction types. Zcash payments are published on a public blockchain, but the sender, recipient, and amount of a transaction remain private.<templatestyles src="Module:Citation/CS1/styles.css"></templatestyles>

External links