Helia:现代化的IPFS实现 🚀

在当今这个数据如潮水般涌来的时代,如何高效、灵活地管理这些数据成为了一个重要的挑战。Helia应运而生,它是一款轻量级、模块化且现代化的TypeScript实现,专门为JS和浏览器环境设计的IPFS(InterPlanetary File System)解决方案。无论你是开发者还是好奇的用户,Helia都为你提供了一个友好的起点。

🌟 使用Helia

使用Helia非常简单。首先,你需要创建一个Helia节点。以下是如何将字符串数据添加到Helia节点的示例代码:

import { createHelia } from 'helia'
import { strings } from '@helia/strings'

const helia = await createHelia()
const s = strings(helia)
const myImmutableAddress = await s.add('hello world')
console.log(await s.get(myImmutableAddress))
// 输出:hello world

通过上面的代码,你可以轻松地将“hello world”存储到Helia节点中,并在需要时取出它。

🌃 JSON数据的存取

Helia不仅支持字符串,还可以处理更复杂的数据结构,比如JSON对象。使用@helia/json模块,你可以轻松地将JavaScript对象添加到Helia节点中:

import { createHelia } from 'helia'
import { json } from '@helia/json'

const helia = await createHelia()
const j = json(helia)
const myImmutableAddress = await j.add({ hello: 'world' })
console.log(await j.get(myImmutableAddress))
// 输出:{ hello: 'world' }

这段代码展示了如何将一个简单的对象存储到Helia中,并随时检索出来。

🌠 DAG-JSON:链接对象的存储

如果你需要存储链接对象,可以使用@helia/dag-json模块。这个模块允许你将对象的引用作为CID(内容标识符)存储。以下是一个示例:

import { createHelia } from 'helia'
import { dagJson } from '@helia/dag-json'

const helia = await createHelia()
const d = dagJson(helia)
const object1 = { hello: 'world' }
const myImmutableAddress1 = await d.add(object1)
const object2 = { link: myImmutableAddress1 }
const myImmutableAddress2 = await d.add(object2)

const retrievedObject = await d.get(myImmutableAddress2)
console.log(retrievedObject)
// 输出:{ link: CID(baguqeerasor...) }
console.log(await d.get(retrievedObject.link))
// 输出:{ hello: 'world' }

在这个例子中,我们首先添加了一个对象,然后创建了一个包含该对象链接的新对象。这样就实现了对象之间的引用关系。

🌌 DAG-CBOR:简洁的二进制表示

与DAG-JSON类似,@helia/dag-cbor模块使用Concise Binary Object Representation(CBOR)来存储对象。这种方法在存储效率上有显著优势,特别是当你需要处理大量数据时。以下是示例代码:

import { createHelia } from 'helia'
import { dagCbor } from '@helia/dag-cbor'

const helia = await createHelia()
const d = dagCbor(helia)
const object1 = { hello: 'world' }
const myImmutableAddress1 = await d.add(object1)
const object2 = { link: myImmutableAddress1 }
const myImmutableAddress2 = await d.add(object2)

const retrievedObject = await d.get(myImmutableAddress2)
console.log(retrievedObject)
// 输出:{ link: CID(baguqeerasor...) }
console.log(await d.get(retrievedObject.link))
// 输出:{ hello: 'world' }

通过这些示例,您可以看到Helia的强大之处。它不仅提供了灵活的数据存储解决方案,还通过不同的模块满足各种需求。

🔒 自定义哈希器

在Helia中,内容的不可变地址(CID)是由哈希器决定的。默认情况下,Helia使用sha2-256多哈希技术,但您可以根据需要选择其他哈希器。这对于需要特定属性的应用程序尤其有用。以下是如何使用不同哈希器的示例:

import { createHelia } from 'helia'
import { dagCbor } from '@helia/dag-cbor'
import { sha512 } from 'multiformats/hashes/sha2'

const helia = await createHelia()
const d = dagCbor(helia)
const object1 = { hello: 'world' }
const cidWithSHA256 = await d.add(object1)
const cidWithSHA512 = await d.add(object1, { hasher: sha512 })

console.log(cidWithSHA256)
// 输出:CID(bafyreidykglsfhoixmivffc5uwhcgshx4j465xwqntbmu43nb2dzqwfvae)
console.log(cidWithSHA512)
// 输出:CID(bafyrgqhai26anf3i7pips7q22coa4sz2fr4gk4q4sqdtymvvjyginfzaqewveaeqdh524nsktaq43j65v22xxrybrtertmcfxufdam3da3hbk)

🐾 下一步

想要更深入地了解Helia的使用?请查看Helia示例库,里面涵盖了各种用例。如果你觉得还有什么遗漏的地方,可以按照贡献指南创建一个PR。

📗 项目文档与API文档

有关Helia的详细信息和API文档,请访问项目文档API文档

📣 项目状态与贡献

Helia v1于2023年3月发布,开发团队正在积极进行性能改进和bug修复。如果你对项目感兴趣,我们欢迎你的参与!请查看我们的贡献文档了解更多信息。

🛍️ 知名用户

想知道有哪些项目正在使用Helia?请查看使用Helia的项目

🌞 许可证信息

Helia在Apache 2.0和MIT许可证下发布,详情请查看相关许可证文件。

通过Helia,您可以轻松地在分布式网络中存储和检索数据,享受现代化的开发体验。快来体验吧!

发表评论