Software:InterPlanetary File System

From HandWiki
Short description: content-addressable, peer-to-peer hypermedia distribution protocol
InterPlanetary File System
Ipfs-logo-1024-ice-text.png
Developer(s)Protocol Labs
Stable release
0.4.17 / 27 July 2018; 5 years ago (2018-07-27)
Repositorygithub.com/ipfs/ipfs
Written inProtocol 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 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 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 not to tamper with data in transit.[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 tree 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 in jurisdictions where Wikipedia is blocked to access the content of Wikipedia.[17] Filecoin, which is also developed by Juan Benet, is an IPFS-based cooperative storage cloud.[18]

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..". https://github.com/Agorise/c-ipfs. Retrieved 25 October 2017. 
  2. 2.0 2.1 Finley, Kurt (June 20, 2016). "The Inventors of the Internet Are Trying to Build a Truly Permanent Web". Wired. https://www.wired.com/2016/06/inventors-internet-trying-build-truly-permanent-web/. 
  3. "The IPFS Project". https://ipfs.io/. Retrieved 11 September 2015. 
  4. "IPFS README - Who designed it?". https://github.com/ipfs/ipfs/blob/master/README.md#who-designed-it. Retrieved 11 September 2015. 
  5. 5.0 5.1 "IPFS Protocol Selects Ethereum Over Bitcoin, Prefers Ethereum Dev Community". https://cointelegraph.com/news/ipfs-protocol-selects-ethereum-over-bitcoin-prefers-ethereum-dev-community. Retrieved 25 October 2017. 
  6. "ipfs/go-ipfs" (in en). https://github.com/ipfs/go-ipfs. 
  7. "ipfs/js-ipfs" (in en). https://github.com/ipfs/js-ipfs. 
  8. "ipfs/py-ipfs" (in en). https://github.com/ipfs/py-ipfs. 
  9. "IPFS Docs" (in en). https://ipfs.io/docs/. 
  10. "ipfs/specs" (in en). https://github.com/ipfs/specs. 
  11. 11.0 11.1 Allison, Ian (13 October 2016). "Juan Benet of IPFS talks about Filecoin". http://www.ibtimes.co.uk/juan-benet-ipfs-talks-about-filecoin-1586122. Retrieved 25 October 2017. 
  12. "IPFS is the Distributed Web". https://ipfs.io/#how. Retrieved 27 March 2018. 
  13. "IPFS README". https://github.com/ipfs/ipfs/blob/master/README.md. Retrieved 11 September 2015. 
  14. "go-ipfs: IPFS implementation in go". 25 October 2017. https://github.com/ipfs/go-ipfs. Retrieved 25 October 2017. 
  15. Balcell, Marta Poblet (5 October 2017). "Inside Catalonia's cypherpunk referendum". http://www.eurekastreet.com.au/article.aspx?aeid=54133. 
  16. Hill, Paul (30 September 2017). "Catalan referendum app removed from Google Play Store" (in en). Neowin. https://www.neowin.net/news/catalan-referendum-app-removed-from-google-play-store. 
  17. Dale, Brady (10 May 2017). "Turkey Can’t Block This Copy of Wikipedia". Observer Media. Archived from the original on 18 Oct 2017. https://web.archive.org/web/20171018092720/http://observer.com/2017/05/turkey-wikipedia-ipfs/. Retrieved 20 December 2017. 
  18. Johnson, Steven (2018-01-16). "Beyond the Bitcoin Bubble" (in en). The New York Times. https://www.nytimes.com/2018/01/16/magazine/beyond-the-bitcoin-bubble.html. 

External links