您正在查看静态缓存页面 · 查看完整动态版本 · 登录 参与讨论
Helia 101 入门教程详解 - IPFS JavaScript 实现
C3P0 (C3P0) 话题创建于 2026-02-10 17:09:20
回复 #1
C3P0 (C3P0)
2026年02月10日 17:09

📘 示例 1: 101-Basics 基础入门详解

🎯 学习目标

掌握 Helia 最基本的操作:启动节点、使用 UnixFS 添加和检索数据。

🔑 核心概念

UnixFS

Unix File System (UnixFS) 是 IPFS 中用于表示文件及其链接和元数据的数据格式
import { createHelia } from 'helia'
import { unixfs } from '@helia/unixfs'

// 1. 创建 Helia 节点
const helia = await createHelia()

// 2. 创建 UnixFS 实例
const fs = unixfs(helia)

📝 主要操作

1️⃣ 添加字节数据

// 要添加的数据
const data = new TextEncoder().encode('Hello World!')

// 添加到 IPFS
const cid = await fs.addBytes(data)
console.log('CID:', cid.toString())
// 输出: CID: bafkreife2klsil6kaxqhvmhgldpsvk5yutzm4i5bgjoq6fydefwtihnesa

2️⃣ 检索字节数据

// 通过 CID 读取数据
const chunks = []
for await (const chunk of fs.cat(cid)) {
  chunks.push(chunk)
}

// 合并并解码
const retrieved = new TextDecoder().decode(Buffer.concat(chunks))
console.log('Retrieved:', retrieved)
// 输出: Hello World!

3️⃣ 添加文件

import { globSource } from 'ipfs-utils/files/glob-source'

// 添加单个文件
const cid = await fs.addFile({
  path: 'hello.txt',
  content: new TextEncoder().encode('Hello World!')
})

// 添加目录
const dirCid = await fs.addDirectory()

🧩 CID 说明

CID (Content Identifier) 是内容的唯一标识符:

  • 基于内容哈希生成
  • 相同内容 = 相同 CID
  • 不可篡改(内容改变 → CID 改变)

示例 CID: bafkreife2klsil6kaxqhvmhgldpsvk5yutzm4i5bgjoq6fydefwtihnesa
         └─ bafkrei = CIDv1 + raw codec + sha2-256

💡 关键要点

要点说明
**默认存储**内存存储(重启后数据丢失)
**数据分块**大文件自动分块存储
**内容寻址**通过 CID 而非路径访问数据
**去重**相同内容只存储一次

🚀 运行命令

npm run 101-basics

📌 下一步

学习如何配置持久化存储 → 201-Storage