InterPlanetary File System
InterPlanetary File System
|
|
---|---|
![]() |
|
Basic data
|
|
developer | Protocol Labs |
Publishing year | 2015 |
Current version | 0.5.0 (April 28, 2020) |
operating system | FreeBSD , Linux , macOS , Windows |
programming language |
Protocol implementation : Go (reference implementation), JavaScript , C , Python Client libraries : Go, Java , JavaScript, Python, Scala, Haskell, Swift, CommonLisp, Rust, Ruby, Swift, PHP, C #, Erlang |
category | Protocol , Distributed File System , Content Delivery Network |
License | MIT license |
ipfs.io |
InterPlanetary File System ( IPFS ) is a protocol and eponymous network designed to provide a content-addressable , peer-to-peer method of storing and sharing hypermedia in a distributed file system . IPFS was originally designed by Juan Benet and is now an open source project that is being developed by a community.
history
In 2014, the IPFS protocol used the Bitcoin Blockchain protocol and its network infrastructure to store immutable data, remove duplicate files over the network, and get address information to access storage nodes to search for files on the network.
There are implementations in Go and JavaScript and a Python implementation is in the works. The Go implementation is taken as a reference while formal specifications are developed.
description
IPFS is a distributed peer-to-peer file system that aims to connect all IT devices to the same file management system. In some ways, IPFS is similar to the World Wide Web , but IPFS can also be seen as a single BitTorrent swarm exchanging objects over a Git repository. In other words, IPFS offers a content-addressed block storage model, with high throughput and content-addressed hyperlinks . This forms a generalized, directed acyclic Merkle graph. IPFS combines a distributed hash table , an encouraged 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 the nodes they are connected to. Distributed content delivery saves transmission volume and prevents DDoS attacks that HTTP struggles with.
The file system can be accessed in a variety of ways, including FUSE and HTTP . A local file can be added to IPFS, making it available worldwide. Files are identified by their checksums and are therefore cache-friendly. They are distributed via a BitTorrent-based protocol. Other users who view the content help to make this content available to other users in the network. IPFS has a name service called IPNS. It is a global namespace based on a PKI that helps to create chains of trust. It is compatible with other name services and can map DNS , .onion, .bit, etc. to IPNS.
Merkle data format
Every Merkle hash tree is a directed acyclic graph because every node is accessed by its name. Each branch of a Merkle hash tree is the hash of its local content and names its child nodes according to their hashes instead of their full content. Therefore, once it has been created, there is no longer any way to edit a node. This prevents infinite loops (provided there are no hash collisions ), since you cannot link the first node created with the last node to create the last reference.
In general, for every Merkle: to create a new branch or to verify an existing one, a hash algorithm is applied to a combination of the local contents, such as a list of child checksums and other bytes. There are a few different hash algorithms available in IPFS.
The data used as input for each of these hash algorithms is documented.
Application examples
The autumn 2017 independence referendum in Catalonia was ruled illegal by the Spanish Constitutional Court and related websites were blocked. Subsequently, these websites were mirrored by the Catalan Pirate Party using IPFS in order to bypass the blocking order from the Catalan Supreme Court.
IPFS is used to create a mirror of Wikipedia projects to enable people living under repressive regimes to have unhindered access to this content.