隆重推出 Space SDK:在开放网络上构建您的 Web 和移动应用
开源与协作
开始构建,并与我们分享
团队非常激动地向大家展示我们最新的开源成果……一个用于在 Web 和移动端开发去中心化应用程序的新库:Space SDK!
Space SDK是一个 JavaScript/TypeScript 库,您可以将其集成到您的网站或移动应用程序中,使它们能够以用户拥有的方式在分布式网络(IPFS / Textile节点)上存储文件,并通过 Space API 的实现轻松访问更多 Web 3.0 协议。
您可以在这里找到代码库和文档:
这是 SDK 的早期版本,本周将推出更多更新,作为其首次扩展(共享功能),在接下来的几个月里,我们将公开测试它,并接收反馈和建议,以探索新的想法!
Space SDK 是一个配套框架,它支持通过 Space API 使用IPFS、Textile、Ethereum、GunDB和其他开放 Web 协议,而无需在用户设备上运行 IPFS 节点等本地实例,从而实现以下 Web 和移动体验:
- 将文件和数据存储在用户可控的存储位置。
- 启用公共或私有端到端加密文件共享。
- 集成用户拥有的基于密钥对的身份识别系统。
- 通过用户驱动的全球数据层托管/分发内容(即将推出!)
Space SDK 的所有功能都经过简化。存储、文件共享、基于密钥的身份验证等功能都可以通过现成的方法轻松访问🔥
与 Space Daemon 不同,Space SDK 是模块化的,并且与协议无关。每个模块都可以自定义,这意味着您可以直接使用我们提供的协议/连接来利用每个模块,也可以将其用作框架来插入您自己的实现,或者完全替换其中的一部分!
例如,您可以不使用存储模块上的 Textile hub 的默认连接,而是使用您自己的存储层(例如Hypercore),并且仍然能够使用 SDK 的其余功能。
这就是我们构建 Space SDK 的方式:灵活、轻量级,并且尽可能对移动设备和网页友好。
不同的需求,相同的福利
如果您还记得的话,去年年初,我们发布了Space Daemon,这是一个桌面库,它带有 IPFS/Textile 节点,公开了 gRPC 方法,用于加密文件上传、文件共享、用户控制的帐户等功能,以及更多用于在相同底层协议下构建 Open Web 应用程序的工具。
今天,Space SDK 的发布使得所有这些功能都可以在网页/移动设备上轻松使用。
除了SDK 是基于 JavaScript 构建而 Space Daemon 是基于 GoLang 构建之外,两者之间的主要区别在于 Space Daemon 嵌入了一个 IPFS/Textile 节点并将文件缓存在那里,而 SDK 仅使用 GunDB 的去中心化数据库来存储文件/存储桶元数据和密钥,并依赖远程 Textile Hub 进行分布式在线存储。
这次切换带来了一个巨大的好处。不仅网页/移动应用可以访问Space的分布式存储网络,而且未来我们计划开放Space,使我们的用户以及任何其他平台及其用户都可以通过Space的开放存储层托管和分发内容。
这是我们探索如何为用户和平台提供去中心化存储接口的众多步骤之一,敬请期待我们今年晚些时候带来的更多更新。
引擎盖下的功能
Space SDK延续了让应用程序分发存储空间,并赋予用户对其帐户和数据真正所有权的趋势。其功能涵盖用户可控的存储和密钥管理,以及由开放Web协议支持的端到端加密文件共享和交互。
Space Daemon 中的大多数功能在 Space SDK 中均可用,而那些尚未提供的功能(例如共享)也将很快添加!
这些方法可通过不同的接口访问,如果您想使用自己的存储/身份验证/身份等层,这些接口可以轻松替换或重新配置。
目前,SDK 包含以下 API:
用户 API:
用户模块负责处理用户身份和认证管理的几个方面。默认实现基于 Textile Hub 提供了一个基本的身份层,负责每个用户的密钥生成和检索、身份验证以及会话令牌。
- 身份创建与管理
- 基于挑战的身份验证
- 密码短语密钥备份
存储 API:
存储模块使 Web/移动应用程序能够以编程方式使用 CRUD 操作从 IPFS/Textile 上传、固定、管理和获取文件及数据。默认情况下,它指向 Textile Hub 和 Space Services,但可以进行修改以连接其他存储层。GunDB用作UserStorage 类使用的默认元数据存储。
- 创建文件/目录
- 列出文件/目录
- 创建存储桶
- 分享(即将推出!)
界面亮点✨
我们已经深入了解了模块/API所实现的功能,现在让我们更进一步,重点介绍这些功能背后的一些实用接口!您可以在此处的包细分中查看所有接口。
例如,Vault 接口,用户 API 使用该接口以安全加密的方式存储和检索敏感凭证。
或者UserMetadataStore,它包含了创建、更新和检索用户存储桶元数据记录的所有操作。
入门指南:安装
安装 Space SDK 非常快捷方便。只需使用以下 npm 命令安装库即可开始使用:
npm install @spacehq/sdk
就这些了!您现在可以开始使用我们的各种 API 了。
用户/身份示例:
import { Users } from '@spacehq/sdk';
const users = new Users({ endpoint: 'wss://auth-dev.space.storage' });
// createIdentity generate a random keypair identity
const identity = await users.createIdentity();
// the new keypair can be used to authenticate a new user
// `users.authenticate()` generates hub API session tokens for the keypair identity.
const user = await users.authenticate(identity);
// `user` can be used with the storage class to provide identity.
// user's identity can also be backed up with a special recovery phrase
const uuid = 'specify-uuid-representing-user-in-your-system';
const passphrase = 'specify-unique-pass-phrase-related-to-backup-type';
const backupType = VaultBackupType.Google;
await users.backupKeysByPassphrase(uuid, passphrase, backupType, user.identity);
// backed up users identity can also be recovered later
const recoveredUser = await users.recoverKeysByPassphrase(uuid, passphrase, backupType);
// `recoveredUser` has same authentication as `user` above.
想要了解更多示例?请阅读用户类文档。
存储示例:
import { UserStorage, AddItemsResultSummary } from '@spacehq/sdk';
const storage = new UserStorage(user);
await storage.createFolder({ bucket: 'personal', path: 'topFolder' });
const result = await storage.listDirectory({ path: '' });
// result contains `topFolder` items
// upload a file
const uploadResponse = await spaceStorage.addItems({
bucket: 'personal',
files: [
{
path: 'file.txt',
content: '',
},
{
path: 'space.png',
content: '',
}
],
});
// uploadresponse is an event listener
uploadResponse.once('done', (data: AddItemsEventData) => {
const summary = data as AddItemsResultSummary;
// returns a summary of all files and their upload status
});
想了解更多存储方面的示例?请阅读存储 API 的文档。
开源与协作
Space SDK 是一个开源社区项目。其中的每个模块都对开发者开放,他们可以不受限制地进行构建、扩展和探索,我们将继续与社区携手开发它!
我们认为分布式/去中心化网络的未来发展方向是开源和协作,因此我们将 Space SDK 构建成一套模块化和灵活的工具集,它不局限于单一用例或当前的 Open Web 技术栈。
开始构建,并与我们分享
您可以从其Github 页面开始使用 Space SDK ,并加入我们在 Slack 上的开发者社区,分享您的项目或与团队交流,提出任何问题/建议。
我们非常期待看到更多精彩的项目!想到有了SDK,所有平台(网页/移动/桌面)上的DApp和网站都能探索提供Web3功能的新途径,真是令人兴奋!🔥
- 注册试用 Fleek
- 加入我们的社区聊天
- 请在Twitter上关注我们
- 订阅我们的YouTube 频道
- 请查看我们的技术文档
- 请通过support@fleek.co联系我们


