InterPlanetary File System

From Infogalactic: the planetary knowledge core
(Redirected from IPFS)
Jump to: navigation, search

<templatestyles src="Module:Hatnote/styles.css"></templatestyles>

<templatestyles src="Module:Hatnote/styles.css"></templatestyles>

Lua error in package.lua at line 80: module 'strict' not found.

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 years 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



Lua error in package.lua at line 80: module 'strict' not found.

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



Lua error in package.lua at line 80: module 'strict' not found.


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

<templatestyles src="Module:Hatnote/styles.css"></templatestyles>

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

<templatestyles src="Div col/styles.css"/>

<templatestyles src="Div col/styles.css"/>

Similar or related applications

References

  1. Lua error in package.lua at line 80: module 'strict' not found.
  2. 2.0 2.1 Lua error in package.lua at line 80: module 'strict' not found.
  3. Lua error in package.lua at line 80: module 'strict' not found.
  4. Lua error in package.lua at line 80: module 'strict' not found.
  5. Lua error in package.lua at line 80: module 'strict' not found. @ 4m23s-5m17s, featuring Juan Benet (computer scientist) of Protocol Labs.
  6. 6.0 6.1 Lua error in package.lua at line 80: module 'strict' not found.
  7. Lua error in package.lua at line 80: module 'strict' not found.
  8. Lua error in package.lua at line 80: module 'strict' not found.
  9. Lua error in package.lua at line 80: module 'strict' not found.
  10. Lua error in package.lua at line 80: module 'strict' not found.
  11. Lua error in package.lua at line 80: module 'strict' not found.
  12. 12.0 12.1 Lua error in package.lua at line 80: module 'strict' not found.
  13. Lua error in package.lua at line 80: module 'strict' not found.
  14. Lua error in package.lua at line 80: module 'strict' not found.
  15. Lua error in package.lua at line 80: module 'strict' not found.
  16. Lua error in package.lua at line 80: module 'strict' not found.
  17. Lua error in package.lua at line 80: module 'strict' not found.
  18. Lua error in package.lua at line 80: module 'strict' not found.
  19. Lua error in package.lua at line 80: module 'strict' not found.
  20. Lua error in package.lua at line 80: module 'strict' not found.
  21. Lua error in package.lua at line 80: module 'strict' not found.
  22. Lua error in package.lua at line 80: module 'strict' not found.
  23. Lua error in package.lua at line 80: module 'strict' not found.
  24. Lua error in package.lua at line 80: module 'strict' not found.
  25. Lua error in package.lua at line 80: module 'strict' not found.
  26. Lua error in package.lua at line 80: module 'strict' not found.
  27. Lua error in package.lua at line 80: module 'strict' not found.
  28. Lua error in package.lua at line 80: module 'strict' not found.
  29. 29.0 29.1 Lua error in package.lua at line 80: module 'strict' not found.
  30. Lua error in package.lua at line 80: module 'strict' not found.
  31. Lua error in package.lua at line 80: module 'strict' not found.
  32. Lua error in package.lua at line 80: module 'strict' not found.
  33. Lua error in package.lua at line 80: module 'strict' not found.
  34. Lua error in package.lua at line 80: module 'strict' not found.
  35. Lua error in package.lua at line 80: module 'strict' not found.
  36. Lua error in package.lua at line 80: module 'strict' not found.
  37. Lua error in package.lua at line 80: module 'strict' not found.
  38. Lua error in package.lua at line 80: module 'strict' not found.
  39. Lua error in package.lua at line 80: module 'strict' not found.
  40. Lua error in package.lua at line 80: module 'strict' not found.
  41. Lua error in package.lua at line 80: module 'strict' not found.
  42. Lua error in package.lua at line 80: module 'strict' not found.
  43. Lua error in package.lua at line 80: module 'strict' not found.
  44. Lua error in package.lua at line 80: module 'strict' not found.
  45. Lua error in package.lua at line 80: module 'strict' not found.
  46. Lua error in package.lua at line 80: module 'strict' not found.
  47. 47.0 47.1 Lua error in package.lua at line 80: module 'strict' not found.
  48. Cryptocurrencies: A Brief Thematic Review. Social Science Research Network. Date accessed 28 august 2017.
  49. Lua error in package.lua at line 80: module 'strict' not found.
  50. Lua error in package.lua at line 80: module 'strict' not found. @ 1h03m26s-1h03m49s, featuring Juan Benet (computer scientist) of Protocol Labs.
  51. https://www.usv.com/blog/introducing-ob1
  52. Lua error in package.lua at line 80: module 'strict' not found.
  53. Lua error in package.lua at line 80: module 'strict' not found.
  54. Lua error in package.lua at line 80: module 'strict' not found.
  55. Lua error in package.lua at line 80: module 'strict' not found.
  56. Lua error in package.lua at line 80: module 'strict' not found.
  57. Lua error in package.lua at line 80: module 'strict' not found.

External links

<templatestyles src="Div col/styles.css"/>

<templatestyles src="Asbox/styles.css"></templatestyles>