InterPlanetary File System (IPFS) Documentation

website·Indexed 41 days ago

https://docs.ipfs.tech/

Documentation for the InterPlanetary File System (IPFS), featuring guides on concepts, installation, and implementations. Includes detailed reference material for Kubo, including its CLI and RPC API v0, as well as guides for using IPFS with Go, JavaScript, Docker, and web applications.

Tokens
95.4K
Snippets
499
Records
890
Agent score
74%

What's inside IPFS

  1. Overview of IPFS operations for web developers

    Interacting with IPFS in a web application involves three primary operations:

    1. Addressing (Merkleizing): Encoding arbitrary data (like a directory of files) so it can be identified by a Content Identifier (CID).
    2. Retrieving: Using a CID to find peers sharing the block, connecting to them, fetching the blocks, and verifying the data integrity.
    3. Providing: Making data addressable by CID available to other peers, typically via a long-running node or a pinning service.
  2. Overview of the libp2p networking framework

    libp2p (library peer-to-peer) is a modular P2P networking framework designed to enable the development of decentralized applications. It provides a collection of protocols, specifications, and libraries that allow peers to communicate directly without relying on a central server or privileged set of servers. Originally developed as the wire protocol for IPFS, it is now a general-purpose networking stack that supports multiple runtimes and environments.
  3. Overview of NAT connectivity options for IPFS Kubo

    IPFS Kubo nodes behind a NAT may experience long wait times or request failures because they cannot easily accept incoming connections. Depending on router support, the following options are available to resolve this:

    1. IPv6: Enabling IPv6 on the router and ISP can mitigate some connection issues.
    2. UPnP: If supported, Kubo will attempt to automatically allow inbound traffic.
    3. DCUtR Hole Punching: Enabled by default as of Kubo v0.13. It allows direct connections via a relay, though it may introduce an average initial latency of 5 seconds and is not 100% successful.
    4. Manual Port Forwarding: The most reliable method if IPv6, UPnP, or DCUtR are unavailable or insufficient.
  4. Overview of the Bitswap protocol

    Bitswap is a core IPFS module and message-based protocol used for exchanging blocks of data between peers. It identifies data blocks using Content Identifiers (CIDs) and performs two primary functions: acquiring blocks requested by the client from the network and sending blocks in its possession to other peers who need them.
  5. Overview of WebTransport in Kubo

    WebTransport is a libp2p transport protocol that enables web browsers to connect directly to Kubo nodes. Unlike traditional setups where browsers rely on centralized HTTP/GraphQL APIs, WebTransport allows browsers to function as 'full' peers in a decentralized network. This is achieved by upgrading an HTTP/2 or HTTP/3 connection (running over QUIC) to a WebTransport session, providing low-latency communication, native stream multiplexing, and fast handshakes.

    Support for WebTransport was introduced as optional in Kubo v0.16 and enabled by default starting in Kubo v0.18.

  6. Overview of IPFS Desktop

    IPFS Desktop is a graphical user interface that bundles an IPFS node, file manager, peer manager, and content explorer into a single application. It can be used as a standalone node or as a control panel and file browser for an existing IPFS node on the same computer. Key features include system startup integration (Mac/Windows), drag-and-drop file importing, a visual peer map, a 'Merkle Forest' visualizer for content-addressed pieces, and a CLI Tutor Mode to help users learn IPFS commands.
  7. Overview of the IPFS Deploy Action

    The ipfs-deploy-action is a composite GitHub Action that converts a static site build into a Content Addressable Archive (CAR) file with a deterministic root CID. It supports any static site generator (React, Vuepress, Astro, Next.js, etc.) as long as the output is a folder of HTML, CSS, and JavaScript. Key features include Merkleizing the site, pinning to IPFS Cluster or Kubo, providing PR previews with CID links, and updating commit statuses.
  8. Overview of Kubo RPC API v0

    The Kubo RPC API v0 is an RPC-style API over HTTP (not REST) that allows developers to control a Kubo IPFS node. It provides the same functionality as the ipfs CLI commands. Using the RPC API is recommended over embedding IPFS directly to maintain longer-lived peer connections and avoid running multiple nodes for a single application.

    Security Warning: The RPC API provides admin-level access (including configuration). It is bound to localhost by default and should NEVER be exposed to the public internet without TLS encryption and HTTP authentication.

  9. Overview of InterPlanetary Network Indexer (IPNI)

    The InterPlanetary Network Indexer (IPNI) is a network indexer that enables quick and efficient search of content-addressable data on IPFS and Filecoin networks. It serves as an alternative routing and discovery infrastructure independent of the Kademlia Distributed Hash Table (DHT).

    IPNI is particularly useful for:

    • Large volumes of infrequently-sought CIDs (e.g., cold storage or public open data).
    • Reducing the overhead of 24-hour DHT re-announcements, as IPNI announcements typically only need to be made once.
    • Achieving CDN-like retrieval speeds by providing a distributed index of peers hosting specific content.
    • Operational flexibility, allowing providers to opt-in or out of indexing without affecting DHT performance.
  10. Overview of LikeCoin's decentralized publishing infrastructure

    LikeCoin is an open-source framework for a decentralized, censorship-resistant publishing infrastructure. It uses a Cosmos SDK-based blockchain to maintain a registry of immutable digital content metadata via the International Standard Content Number (ISCN). The ISCN acts as a unique identifier containing metadata such as author, title, language, publisher, and publication time. The ecosystem rewards creators and curators with LikeCoin tokens based on the value and impact of their registered content.
  11. Overview of DNSLink

    DNSLink allows you to map a standard DNS name (e.g., docs.ipfs.tech) to an IPFS address or an IPNS name using DNS TXT records. This enables the use of easy-to-remember domains to point to content on IPFS. Because DNS records can be updated, they can be used to point to the latest version of an IPFS object. DNSLink addresses follow the format /ipns/example.org and can include paths to specific files or directories, such as /ipns/example.org/media/.
  12. Overview of IPFS architectural subsystems

    IPFS is composed of several subsystems categorized by their primary responsibility in the network:

    • Representing and organizing data: Uses CIDs, IPLD, UnixFS, MFS, DAG-CBOR, DAG-JSON, and CAR files.
    • Content routing (linking CIDs to IP addresses): Uses Kademlia DHT, Bitswap, mDNS, and Delegated routing over HTTP.
    • Transferring data: Uses Bitswap, HTTP Gateways, Sneakernet, and Graphsync.
    • Addressing for data and peers: Uses Multiformats.
    • Bridging IPFS and HTTP: Uses IPFS Gateways and the Pinning API Spec.
    • Peer-to-peer connectivity: Handled by libp2p (supporting TCP, QUIC, WebRTC, and WebTransport).
    • Mutability and dynamic naming: Handled by IPNS (Interplanetary Naming System) and DNSLink.