How to Use IPFS (Interplanetary File System)

Read our Advertiser Disclosure.
Contributor, Benzinga
February 21, 2022

Web3 has been rapidly scaling over the past 18 months, integrating with a wide range of browsers, projects and ecosystems, with the declared tenets of privacy, anti-censorship, decentralization and ownership. However, the raft of changes inherent to Web3’s differences from Web2 means that technologies, protocols and ideas that have been kept under “if it ain’t broke, don’t fix it” for the better part of 30 years are being replaced quite rapidly. 

One such example is the Interplanetary File System (IPFS), which (in some sense) seeks to replace the Hypertext Transfer Protocol (HTTP) in facilitating connectivity between web browsers/applications and web servers.

What Is IPFS?

IPFS is a distributed system for storing and accessing various bits of data. The key aspect of IPFS that differentiates it from HTTP and HTTPS is its distributed nature. This concept can loosely be analogized by comparing a proof-of-stake (PoS) blockchain to a traditional bank in the sense that a PoS chain uses a network of distributed validator nodes to validate transactions while a bank has a centralized database that all branches refer to in order to validate transactions. Much like a PoS blockchain, IPFS involves a vast network of nodes, although these nodes send and receive data packets according to browsing traffic. 

IPFS nodes are also similar to peers in a BitTorrent network in the sense that they consist of personal computers that are passively run so as to provide chunks of a larger file being requested. This similarity will be further discussed later in the article in exploring the technical aspects of how IPFS works.

How to Use IPFS for NFTs

In the context of non-fungible tokens (NFTs), IPFS allows for the decentralized storage of the data that an NFT points to. Decentralization is crucial because centralized data storage for an NFT allows the creator to retain full control over the images and data that an NFT points to, which means that a malicious NFT creator could theoretically replace or delete the metadata or the images associated with an NFT, drastically changing the value of the NFT, as well as others in the same collection. 

Using IPFS to host metadata alleviates this issue by redundantly storing unique hashes that represent immutable data across a network of IPFS nodes, “pinning” services like Pinata, and the NFT holder’s local IPFS node, should they choose to do so. Services like nft.storage do this in conjunction with using decentralized storage networks like Filecoin. 

To view an IPFS link, you can use a public IPFS gateway like IPFS.io or Cloudflare with a non-IPFS browser or an IPFS native browser’s local IPFS node given a CID or using IPFS Search or similar ipfs search engines to find the desired content.

In order to run an IPFS node, you need external software, either the IPFS Desktop Application, or the IPFS Companion browser extension, which are available for Firefox- and Chrome-based browsers, with Brave and Opera offering additional semi-native support for IPFS navigation and hosting.

What Applications Use IPFS?

Applications use IPFS over alternative protocols if they seek to be fully Web3 native and decentralized with regard to asset storage. Some reasons that a project might want this are covered by Web3’s core tenets.

In addition to web browsers like Opera and Brave, which are integrated with IPFS solely as a browsing feature, many notable Web3 projects use IPFS to store assets. One such project is Audius, which leverages the decentralized storage and content addressing system offered by IPFS to establish a direct Web3 music streaming service. As mentioned earlier, nft.storage also uses IPFS, albeit in conjunction with Filecoin to provide redundant and decentralized avenues of safeguarding NFT metadata. This level of integration with Filecoin could potentially spill over into other IPFS integrated projects. Infura also offers an IPFS API that allows for applications to use IPFS in a plug-and-play capacity in the future. 

How Does IPFS Work?

IPFS uses cryptographic hashing to provide permanent records — known as content identifiers (CIDs) — of the various chunks of a file as they exist at a given point in time. When an IPFS user searches for a given file, their IPFS node (their personal computer) essentially queries “nearby” nodes that they can interact with (also known as peer nodes) to see if the desired CID is present in any of these peer nodes. This practice is known as content-based addressing, in contrast to Web2’s location-based addressing. When the user accesses or downloads the file, their IPFS node caches a copy of the file, becoming another peer that can pass content forward. As with other forms of caching, content can be cleared over time (and can conversely be “pinned”) to preserve a node’s storage space. 

If a file stored on IPFS is modified, a distinct CID is created for the modified chunks of the file, meaning that the original version continues to exist in the IPFS network, and the new version contains the information that it isn’t the original copy. This fact is the crucial reason why IPFS combats censorship and file tampering by design. The CIDs of a file can be bundled into a singular link using Interplanetary Name System (IPNS), and a CID can be made into a human-comprehensible Domain Name Service (DNS) URL using DNSLink to replace the hashed key with a .com or .org URL. 

IPFS vs. Web2 Counterparts

With IPFS having a decent amount of adoption, a few direct comparisons can be made between Web2 and the IPFS-based internet. 

First is Wikipedia, especially with regard to censorship. When Wikipedia went dark in Turkey in April 2017, IPFS was quick to put out mirrors of the Turkish version of Wikipedia in various languages, circumventing the Turkish government’s court order thanks to IPFS’ full redundancy, which ensures that the mirrors remain accessible if any nodes containing them are accessible, irrespective of DNS restrictions. Compared to Wikipedia’s normal HTTP setup, IPFS counters censorship and maintains privacy, but this benefit comes at the cost of speed in regions where both are accessible. This logic can be cross-applied to essentially any web hosting application when comparing IPFS to its Web2 counterparts, including Amazon Web Services (AWS) and Cloudflare.

Next is file sharing in a manner similar to Google Drive. IPFS essentially enables a decentralized Google Drive-esque mode of file and directory sharing, which isn’t subject to cloud storage limits but is subject to hard drive storage limitations as well as node uptime limitations when not using a pinning service or multiple nodes. Furthermore, the hashing mechanism within IPFS’ CIDs provides a tamper-protection system that is loosely similar to edit history on Google Drive but doesn’t require any sign-ons.

Why Web3 Needs IPFS

Web3 is decentralized by design, and IPFS provides the foundation for this decentralization in a manner that is aligned with Web3’s ideals while offering sustainable scalability as the user base increases in size. Without IPFS, another alternative to HTTP and HTTPS would need to be designed with a BitTorrent-esque peer-to-peer design, tamper resistance and human readability when resolved. IPFS achieves all of these things far too well for Web3 to rely on any other protocol by itself. This being said, IPFS isn’t the only foundational plank of Web3, as evidenced by how common it is for Filecoin to be implemented alongside IPFS, even though IPFS has a decentralized storage network of sorts.

The Crypto Rocketship: Weekly Newsletter
  • Exclusive Crypto Airdrops
  • Altcoin of the Week
  • Insider Interviews
  • News & Show Highlights
  • Completely FREE
Aadharsh Pannirselvam

About Aadharsh Pannirselvam

Aadharsh Pannirselvam is a student at the University of Chicago studying Economics and Data Science while building with Blockchain Chicago and the Chicago DAO. Aadharsh works on creating easily digestible web3 and DeFi content at Benzinga while learning off of the bleeding edges of blockchains and digital assets and exploring a career in the space. He holds positions in Ethereum, Bitcoin, and various other DeFi protocols and ecosystems. Aadharsh was previously affiliated with Flipside Crypto and is currently affiliated with Galaxy Digital. Aadharsh’s opinions are his own and not financial advice. The best way to get in touch with Aadharsh is via Twitter, @aadharsh2010 or via LinkedIn.