Jump to content

InterPlanetary File System

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by Amorpisseur (talk | contribs) at 04:26, 6 January 2018 (New version: 0.4.13). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

InterPlanetary File System
Developer(s)Protocol Labs
Stable release
0.4.13 / 16 November 2017; 6 years ago (2017-11-16)
Repositorygithub.com/ipfs/ipfs
Written inProtocol implementations: Go (reference implementation), JavaScript, C[1], Python
Client libraries: Go, Java, JavaScript, Python, Scala, Haskell, Swift, CommonLisp, Rust, Ruby, Swift, PHP, C#, Erlang
Operating systemFreeBSD, Linux, macOS, Windows
Available inGo, JavaScript, Python
TypeProtocol, distributed file system, content delivery network
LicenseMIT license
Websiteipfs.io

InterPlanetary File System (IPFS) is a protocol and eponymous network designed to create a content-addressable, peer-to-peer method of storing and sharing hypermedia in 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.[3][4]

History

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.[5][2]

Implementations in Go[6] and JavaScript[7] exist, and a Python implementation is in progress.[8] The Go implementation is considered to be the reference implementation[9] while formal specifications are developed.[10]

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.[11] This forms a generalized Merkle directed acyclic graph (DAG). IPFS combines 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, except for every node they are connected to.[12] Distributed Content Delivery saves bandwidth and prevents DDoS attacks, which HTTP struggles with.[5]

The filesystem can be accessed in a variety of ways, including via FUSE and over HTTP.[11] 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.[13]

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

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.[14]

Notable users

The Catalan independence referendum, taking place in September-October 2017, was deemed illegal by the Constitutional Court of Spain and many related websites were blocked. Subsequently, the Catalan Pirate Party mirrored the website on IPFS to bypass the High Court of Justice of Catalonia order of blocking.[15][16]

IPFS is being used to create a mirror of Wikipedia, which allows people living under repressive regimes to access the content of Wikipedia.[17]

See also

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.
  2. ^ a b Finley, Kurt (June 20, 2016). "The Inventors of the Internet Are Trying to Build a Truly Permanent Web". Wired.
  3. ^ "The IPFS Project". Ipfs.io. Retrieved 11 September 2015.
  4. ^ "IPFS README - Who designed it?". Github.io. Retrieved 11 September 2015.
  5. ^ a b "IPFS Protocol Selects Ethereum Over Bitcoin, Prefers Ethereum Dev Community". Cointelegraph.com. Retrieved 25 October 2017.
  6. ^ "ipfs/go-ipfs". GitHub. Retrieved 2017-02-13.
  7. ^ "ipfs/js-ipfs". GitHub. Retrieved 2017-02-13.
  8. ^ "ipfs/py-ipfs". GitHub. Retrieved 2017-02-13.
  9. ^ "IPFS Docs". ipfs.io. Retrieved 2017-02-13.
  10. ^ "ipfs/specs". GitHub. Retrieved 2017-02-13.
  11. ^ a b Allison, Ian (13 October 2016). "Juan Benet of IPFS talks about Filecoin". Ibtimes.co.uk. Retrieved 25 October 2017.
  12. ^ "The IPFS Project - How it works". Ipfs.io. Retrieved 11 September 2015.
  13. ^ "IPFS README". Github.com. Retrieved 11 September 2015.
  14. ^ "go-ipfs: IPFS implementation in go". GitHub.com. 25 October 2017. Retrieved 25 October 2017.
  15. ^ Balcell, Marta Poblet (5 October 2017). "Inside Catalonia's cypherpunk referendum". Eureka Street.
  16. ^ Hill, Paul (30 September 2017). "Catalan referendum app removed from Google Play Store". Neowin. Retrieved 2017-10-06.
  17. ^ Dale, Brady (10 May 2017). "Turkey Can't Block This Copy of Wikipedia". Observer Media. Archived from the original on 18 Oct 2017. Retrieved 20 December 2017.

External links