📘 示例 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