什么是 IPFS 固定(Pinning)?2026 年完整指南:从入门到实战

了解什么是 IPFS 固定、文件为何在没有固定时因垃圾回收而消失、远程固定服务如何保持内容24小时可用,以及如何通过一次 API 调用固定您的第一个文件。包含代码示例的完整指南。

Nacho Coll作者: 更新时间: 21 分钟阅读
了解什么是 IPFS 固定、文件为何在没有固定时因垃圾回收而消失、远程固定服务如何保持内容24小时可用,以及如何通过一次 API 调用固定您的第一个文件。包含代码示例的完整指南。

如果您花了一些时间探索去中心化存储,您可能已经听说过 IPFS --- 星际文件系统。它承诺了一个文件按内容而非位置寻址的网络,使数据具有可移植性、可验证性和抗审查性。但有一个几乎每个新手都会遇到的陷阱:如果没有人明确保留您的文件,它就会消失。

这就是固定的作用。本指南解释了什么是 IPFS 固定、它为什么重要、它在底层是如何工作的,以及如何在今天固定您的第一个文件。

IPFS Ninja dashboard showing pinned files and analytics

60秒内固定您的第一个文件#

IPFS 是一个用于存储和共享文件的点对点协议。与其从特定服务器获取文件(如 https://example.com/photo.jpg),您通过其**内容标识符(CID)**来请求它 --- 这是文件内容的加密哈希。网络上任何持有副本的节点都可以将其提供给您。

这种模型具有强大的特性:

  • 去重 --- 相同的文件共享相同的 CID,因此网络不会存储同一内容的两个副本。
  • 完整性 --- 哈希保证文件未被篡改。
  • 去中心化 --- 没有单一服务器控制访问。

但 IPFS 节点的磁盘空间有限,它们需要一种方法来决定保留哪些数据和丢弃哪些数据。这种机制称为垃圾回收,这就是您的文件可能消失的原因。

垃圾回收问题#

每个 IPFS 节点都维护一个本地块存储。当节点代替您获取内容时 --- 比如,您通过公共网关查看图片 --- 这些块会被临时缓存。随着时间推移,节点运行垃圾回收以释放空间,任何未被明确标记为重要的块都会被删除。

这里有一个关键点:**将文件添加到 IPFS 并不能保证它会一直存在。**如果持有您文件的唯一节点离线,或者该节点对这些块进行了垃圾回收,内容就变得不可检索。CID 仍然作为地址存在,但没有人在家。

这是设计如此。IPFS 是一个内容寻址协议,不是永久存储保证。永久性需要明确决定保留数据。这个决定就称为固定

什么是固定?#

固定告诉 IPFS 节点:“保留这个内容。不要垃圾回收它,无论如何都不要。“可以把它想象成在实体书中标记一页 --- 即使书架被重新整理,书也不会丢失那一页。

当您固定一个 CID 时,节点将与该内容关联的每个块标记为受保护。垃圾回收会完全跳过这些块。

固定有两种类型:

本地固定#

您运行自己的 IPFS 节点(例如使用 Kubo)并直接固定文件:

ipfs pin add QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG

只要您的节点在运行且固定保持原位,内容就会留在您的机器上。

远程固定#

您向代替您运营 IPFS 基础设施的第三方服务发送固定请求。该服务的节点固定内容并保持 24/7 可用,即使您自己的机器已关闭。

为什么需要远程固定服务#

本地固定可以工作,但它带来了大多数开发者和团队不想管理的运营开销:

  • 正常运行时间 --- 您的笔记本电脑不会 24 小时在线。如果您的节点离线,没有人能从您这里检索您固定的文件。缓存了内容的其他节点最终可能会垃圾回收它。
  • 带宽 --- 从住宅连接提供热门文件很快会成为瓶颈。
  • 维护 --- 运行 IPFS 节点意味着保持软件更新、监控磁盘使用、管理对等连接和处理网络配置。
  • 冗余 --- 单个节点是单点故障。专业固定服务通常在不同区域的多个节点之间复制数据。

远程固定服务解决了所有这些问题。您通过 API 上传或固定内容,服务处理基础设施、复制和可用性。您专注于构建应用程序。

IPFS 固定在底层如何工作#

理解技术机制有助于您对存储架构做出更好的决策。

1. 内容被分割成块#

当您将文件添加到 IPFS 时,节点将其分成块(通常每个 256 KB)。每个块单独哈希,为每个块生成一个 CID。

2. 构建 DAG#

这些块使用称为 Merkle DAG 的数据结构组织成有向无环图(DAG)。对于单个文件,根 CID 指向中间节点,中间节点指向原始数据块。对于目录,DAG 包括指向每个文件子 DAG 的链接。

3. 固定保护整个 DAG#

当您固定一个根 CID 时,节点递归地将根块及其引用的每个块标记为已固定。这称为递归固定,是默认行为。还有直接固定(仅保护根块)和间接固定(因为祖先被固定而受保护的块),但递归固定是您 99% 时间会使用的。

4. 节点发布可用性#

固定节点向 IPFS 分布式哈希表(DHT)发布提供者记录,宣布它拥有该内容。当另一个对等点请求 CID 时,DHT 将其路由到您的节点(或固定服务的节点),块被传输。

5. 垃圾回收跳过已固定的块#

在垃圾回收期间,节点检查每个块是否在固定集中。已固定的块及其后代被保留。其他所有内容都有资格被删除。

固定与托管#

这两个概念相关但不同,混淆它们会导致困惑。

固定意味着 IPFS 节点保留块并参与点对点网络以将它们提供给其他 IPFS 节点。如果有人通过 IPFS 感知的客户端或另一个节点请求 CID,固定节点就会交付。

托管(通过网关)意味着提供一个 HTTP 端点,将 CID 转换为标准 Web URL。例如:

https://your-gateway.example.com/ipfs/QmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco

网关弥合了 IPFS 点对点网络和传统 Web 之间的差距。大多数用户和应用程序通过网关访问 IPFS 内容,而不是通过原生 IPFS 客户端。

许多固定服务将网关作为其产品的一部分 --- 有些提供共享的公共网关,其他则为您提供专用子域。在评估服务时,请考虑您是只需要固定(后端冗余)还是需要固定加网关(前端交付)。关于固定对性能的影响,请参阅如何加速 IPFS 文件检索

2026 年的固定服务选项#

固定生态系统已经相当成熟。以下是流行选项的公平比较:

服务免费套餐最低付费计划网关备注
IPFS Ninja500 个文件, 1 GB$5/月 (10 GB)专用简单的 REST API、IPNS 名称、最便宜的付费套餐
Pinata500 个文件, 1 GB$20/月 (1 TB)专用成熟平台、JS/TS SDK
Web3.Storage(现为 Storacha)5 GB$10/月 (100 GB)共享 (storacha.link)Filecoin 支持的长期存储
Filebase5 GB按用量计费;无限制 $500/月专用(付费计划)多网络(IPFS、Sia、Storj),每桶 IPNS

每个服务都有其优势。Pinata 和 IPFS Ninja 提供专用网关,为您提供更快更可靠的 HTTP 交付。Web3.Storage 提供 Filecoin 归档以实现长期持久性。Filebase 吸引已在使用 S3 兼容工具的团队。正确的选择取决于您的用例、规模和集成偏好。有关所有主要提供商的详细比较,请参见2026 年最佳 IPFS 固定服务

如何固定文件#

让我们逐步通过 REST API 固定文件。以下示例使用 ipfs.ninja,但概念适用于任何服务。

使用 curl 上传和固定#

# Upload a JSON file --- the service pins it automatically
curl -X POST https://api.ipfs.ninja/upload/new \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"content": {"name": "Alice", "score": 42}}'

响应包含您固定内容的 CID。只要固定保持原位,该 CID 就可以从 IPFS 网络检索。

使用 JavaScript 上传#

const response = await fetch("https://api.ipfs.ninja/upload/new", {
  method: "POST",
  headers: {
    "X-Api-Key": "YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    content: { name: "Alice", score: 42 },
  }),
});

const result = await response.json();
console.log("CID:", result.cid);

固定已有的 CID#

如果您的内容已经在 IPFS 网络上,您想让另一个节点固定它以增加冗余:

curl -X POST https://api.ipfs.ninja/pin \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"cid": "QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG", "description": "Project metadata"}'

服务从网络获取内容,存储块并固定它们。您的数据现在有了额外的可用性点。

何时使用 IPFS 固定#

固定并不是每个存储问题的正确工具。以下是它发挥作用的场景:

NFT 元数据和媒体#

NFT 市场和创作者需要令牌元数据和艺术作品无限期保持可访问。如果元数据 JSON 或图像消失,NFT 实际上就失去了其内容。固定确保智能合约中引用的 CID 始终可以解析。

去中心化应用(dApp)资产#

通过 IPFS 提供前端、配置文件或用户生成内容的 dApp 需要这些资产可靠可用。固定提供了这种可靠性,而无需依赖集中式 CDN。

永久文档#

监管文件、法律文件、学术论文和审计追踪受益于内容寻址存储。CID 作为文件未被篡改的证明,固定确保其仍可检索。

抗审查发布#

在限制环境中运营的记者、活动家和组织使用 IPFS 发布不能通过针对单一服务器而被关闭的内容。在多个服务和地区进行固定增加了韧性。

可验证的数据管道#

供应链数据、科学数据集和金融记录可以被哈希和固定,以创建不可变的审计追踪。下游消费者通过检查 CID 来验证完整性。

需要避免的常见错误#

假设 IPFS 意味着永久#

这是最常见的误解。将文件添加到 IPFS 使其可寻址,而非永久。没有固定,您的文件距离消失只有一个垃圾回收周期。始终固定您关心的内容。

认为固定等于加密#

固定使您的数据保持可用 --- 它不会使其私有。任何知道 CID 的人都可以检索内容。如果您需要机密性,请在将文件上传到 IPFS 之前对其进行加密。CID 将指向密文,没有解密密钥就毫无用处。

忽视 CID 不可变性#

CID 是内容的哈希。如果您改变哪怕一个字节,就会得到完全不同的 CID。这意味着您不能”就地更新”固定的文件。相反,您上传新版本(获得新 CID),固定它,然后可选地取消固定旧版本。对于可变引用,请查看 IPNS(星际名称系统),它将稳定的名称映射到变化的 CID。一些固定服务,如 IPFS Ninja,包含内置的 IPNS 支持,因此您可以直接通过 API 创建和发布可变名称。

依赖单一固定#

如果您的固定服务出现中断,您的内容可能暂时变得不可访问。对于关键数据,请考虑使用多个服务进行固定或维护本地固定作为备份。固定中的冗余反映了传统基础设施中的冗余。

忘记大文件性能#

IPFS 在几百兆字节以下的文件中表现最佳。非常大的文件(多 GB)可能传输缓慢且固定成本高昂。如果您在处理大型数据集,请考虑将其分割成更小的块或使用针对大型对象优化的服务。

固定的运维与验证#

谁来负责保证内容不被删除#

防止垃圾回收的方法有两种:本地固定(ipfs pin add <CID>)和使用远程固定服务。远程服务可全天候保存您的文件,消除单点故障风险。选择哪种方式取决于您对运维投入的容忍度——本地固定需要您自己保证节点在线,远程固定则把这部分责任转移给服务商。

如何验证固定是否生效#

固定之后,您可以通过检查内容是否仍可通过 CID 检索来确认固定状态,也可以调用固定服务的状态接口查询该 CID 当前的固定情况。定期抽查关键 CID 是一种简单但有效的运维习惯,尤其是在您依赖多个固定服务实现冗余时。

迁移固定服务时如何避免内容中断#

如果您计划从一个固定服务迁移到另一个,先在新服务上完成固定并确认 CID 可正常检索,再取消旧服务上的固定,避免出现两边都未生效的窗口期。由于 CID 是内容的哈希而非某个服务的专属标识,迁移过程不会改变任何引用该 CID 的链接。

结论#

IPFS 固定是将内容寻址从一个巧妙想法转变为可靠存储策略的机制。没有它,您的文件只是暂时存在。有了它,您将获得可验证的、去中心化的和持久的数据可用性。

生态系统提供了多个成熟的固定服务和慷慨的免费套餐,因此入门没有障碍。如果您想尝试,ipfs.ninja 允许您免费固定最多 500 个文件和 1 GB 数据,并提供专用网关 --- 无需信用卡。

准备好固定您的第一个文件了吗?请参阅我们的逐步上传指南,在两分钟内从零开始获得一个固定的 CID。有关实践操作指南,请参阅如何将前端部署到 IPFS

无论您选择哪种服务,重要的是固定您的内容。您的 CID 会感谢您的。

游戏开发者使用IPFS固定服务,确保游戏资产在服务器关闭后仍然永久可访问

了解如何通过签名上传令牌保护您的上传。

NFT 创作者依靠 IPFS 固定使其代币元数据永久可访问——请参阅我们的 NFT 元数据存储分步指南了解实施详情。

Nacho Coll

关于作者

Founder & Engineer at IPFS.NINJA

Nacho founded IPFS.NINJA to make content-addressed storage feel as simple as an S3 PUT — a single API call, a permanent CID, no wallets or peer discovery to reason about. Writes about IPFS internals, decentralized storage patterns, and the pinning-service landscape from the operator side of the wire.

返回博客

相关文章