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