Web3 数据架构

Web3 和 Web2 应用程序之间的主要区别在于它们的数据体系结构。Web3 应用程序依赖于以用户为中心的(“自主权"或"主权”)数据存储体系结构。在此模型中,应用程序数据托管在分散的网络上,与每个单独的用户一起存储,并由应用程序客户端写入并由应用程序客户端查询。这与 Web2 应用程序形成鲜明对比,后者依赖于以应用程序为中心的设计,在 Web2 应用程序中,应用程序的所有用户的所有数据都存储在孤立于该应用程序的单个数据库服务器中。

构建主权应用程序需要什么?

因此,构建 Web3 数据应用程序需要一些基础基元:

  1. 具有快速可变性的分散式数据可用性网络
  2. 用于以_身份为中心、基于模型_的数据存储和检索协议
  3. 用于在运行时对用户存储执行 CRUD 操作的客户端

以用户为中心的数据模型

如您所见,Web3 数据应用程序基于数据模型的概念构建,用于从用户控制的存储中存储和检索结构化数据。Web3 采用基于模型的方法而不是基于应用程序的方法,以便允许跨应用程序进行简单的数据重用和可组合性。对于应用程序来说,与其他应用程序(例如,,)共享单个数据模型要比强制这些应用程序共享包含所有不同类型数据的整个数据库(其中许多数据不在应用程序之间共享)要容易得多。user profile``````social graph``````skills``````linked blockchain accounts

围绕使用以用户为中心的数据模型构建应用程序创建出色的开发人员体验对于加速采用这种新的 Web3 数据架构非常重要。改善_开发人员体验_和提高跨应用程序数据_互操作性的工具_包括:

  • 用于创建和部署数据模型的工具
  • 用于共享、发现和重用数据模型的工具

示例:去中心化社交网络

作为这一切如何运作的简单例子,让我们考虑一个分散的社交网络。在幕后,此应用程序可以减少到只有四个数据模型,其中每个用户在自己的存储中为每个模型维护自己的数据:

  • PostList:存储用户帖子的索引
  • Post:存储单个帖子
  • Profile:存储用户的配置文件
  • FollowList:存储他们关注的用户的列表

应用程序部署和使用

要部署此数据应用程序,开发人员需要将这些数据模型中的每一个部署到 Ceramic。在网络上可用后,任何应用程序都可以使用它们来 CRUD 该模型的用户数据存储。例如,如果另一个开发人员正在构建一个新的社交网络,并希望使用现有用户和内容引导它,他们可以简单地重用与初始社交网络相同的数据模型,并且他们的应用程序将能够自动加载和支持对现有数据的存储交互。这就是多个应用程序在共享数据集上进行协作的方式,以及开放数据标准和协议如何从社区中的任何开发人员那里出现。

有关基于相同数据模型构建以实现数据互操作性的两个应用程序的示例,请尝试 Self.ID 和 DNS 应用程序。对一个应用程序中的数据所做的任何更改都会自动反映在另一个应用程序中。

IDX:以 ID 为中心、基于模型的存储协议

Ceramic为数据可用性提供了一个分散的网络,具有快速的可变性,这是部署和运行Web3数据应用程序的基础。大约一年前,Ceramic社区首次推出了CIP-11"身份指数",通常称为.它指定了一个协议,用于在Ceramic之上实现的以身份为中心,基于模型的数据存储和检索 - 这是构建主权应用程序的第二个要求。IDX protocol

IDX.js:最受欢迎的 IDX 客户端

IDX协议(CIP-11)只是一个规范,不起作用的代码。为了使协议可供应用程序开发人员使用,3Box Labs团队创建了IDX.js,这是一个用于对用户数据存储执行CRUD操作的运行时库 - 这是构建Web3数据应用程序的第三个也是最后一个要求。他们还创建了支持工具,如IDX CLI和参考应用程序 Self.id,以展示IDX.js和相关Ceramic技术。

通过作为在Ceramic上构建应用程序的简单切入点,IDX的采用.js随着Ceramic生态系统的发展而加速,并已成为在Ceramic上构建应用程序的最流行方式。目前部署在Ceramic主网上的几乎所有应用程序都使用IDX.js。

IDX.js的使用随着Ceramic的使用而加速

为什么要改变一件好事?

为了提供更多功能,服务更多用例并提供最佳的开发人员体验,IDX.js的范围从简单地提供IDX协议的基本实现发展到一个不必要地单一和固执己见的地步。

因此,IDX.js 和关联的库 将被弃用。它们被本文其余部分概述的新工具集合所取代。idx-constants``````idx-tools``````idx-cli

如果您当前使用的是 IDX.js 和/或 3ID Connect,则无需急于升级代码。IDX 协议本身没有重大更改,新库的数据交互与 IDX.js 完全兼容。

数据模型:数据模型的开源

DataModels 允许开发人员为Ceramic应用程序创建、共享、重用和讨论可与 IDX 协议一起使用的开源数据模型,从而实现跨应用程序数据互操作性。

数据模型注册表

DataModels Registry 是一个开源的、社区创建的Ceramic可重用应用程序数据模型存储库。它提供了一个开发人员可以公开注册、发现和重用现有数据模型的单一位置,这是基于共享数据模型构建的可互操作应用程序的基础。目前,该注册表是作为开源Github存储库实现的,在MIT和Apache 2下获得双重许可。将来,它将在Ceramic上分散。

安装和使用

添加到注册表的所有数据模型都将自动发布到**@datamodels**组织下。任何开发人员都可以使用该约定安装一个或多个数据模型,使这些模型可用于在运行时使用任何 IDX 客户端(包括 DID DataStore 或 Self.ID)存储或检索数据,这两者都将在下面描述。npm``````@datamodels/model-name

从 @datamodels npm 组织安装数据模型

数据模型论坛

DataModels 论坛位于 DataModels Registry 存储库中。DataModel 注册表中的每个模型都有自己的讨论线程,社区可以使用这些线程留下评论、进行讨论、讨论升级等。开发人员还可以发布有关 DataModels 的想法,以便在将其添加到注册表之前征求社区的意见。

釉料:Ceramic开发人员套件

Glaze 是一套低级开发人员工具,用于在 Ceramic 上构建应用程序。Glaze旨在通过将IDX.js拆分为更小,更具体的软件包,为开发人员提供更大的灵活性和控制力。

DID DataStore.js:核心IDX客户端

DID DataStore是一个基本的 IDX 运行时客户端, 是 IDX.js的精简替代品 – 具有较小的范围和更少的依赖项。如果您使用过 IDX.js,您会注意到 DID DataStore 没有与默认数据模型捆绑在一起,例如 ,也不支持开箱即用的 CAIP-10 区块链帐户链接。如果要将 DID 数据存储与数据模型或区块链帐户一起使用,则需要将它们单独安装为包。如果您想要一个类似于 IDX.js 的捆绑式解决方案,请参阅下面的 Self.ID。basicProfile

DataModels.js:DataModels 的运行时

DataModels.js是一个运行时库,可简化在应用程序中使用数据模型的过程。它经常与 DID DataStore 一起使用,并支持 DataModels 的一些有用的运行时功能:

  1. 可用性 – 确保应用程序使用的数据模型在 Ceramic Node上可用,以便它们可以与 Ceramic 或 IDX 客户端一起使用,例如DID Datastore
  2. 别名 – 允许开发人员为其数据模型分配人类可读的名称,以便他们可以更轻松地在应用程序代码中使用,而无需通过其引用数据模型streamID

如果您使用的是 IDX.js 或 IDX CLI,则 DataModels 可替代运行命令或使用类似的引导文件,并且无需在运行时创建别名。idx bootstrap

更多 釉面工具

  • DevTools 是一个库,用于管理 DataModel 的整个生命周期,例如创建自定义模型、添加到现有或创建新的架构和定义,以及将 DataModel 发布到任何 Ceramic Node。
  • Glaze CLI 是一个升级的命令行界面,旨在支持 Glaze 开发流程。它提供了比核心Ceramic CLI 更多的功能,并为 DataModels 和 DID 数据存储添加了本机功能。

Self.ID:用于构建Ceramic应用程序的捆绑包

Self.ID 是一套高级捆绑包,可简化构建Ceramic应用程序的开发过程。

Self.ID 核心:只读捆绑包

Self.ID Core是一个预装的软件包,其中包含构建从 Ceramic 上的帐户读取数据的应用程序所需的一切。Self.ID 核心提供跨平台支持,但_只读_ API。如果您当前使用的是 IDX.js,Self.ID Core 非常相似。它包括:

  1. Ceramic客户端:JSCeramicHTTP客户端,具有所有必需的设置。您唯一需要做的就是传入Node的CeramicURL
  2. IDX 客户端:DID 数据存储.js
  3. 数据模型运行时:数据模型.js
  4. 流行的数据模型:基本配置文件3ID钥匙串加密帐户Web帐户
  5. 热门实用程序:支持 CAIP-10 区块链账户

Self.ID Web:浏览器捆绑包

Self.ID Web 使用写入 API 扩展了 Self.ID 核心捆绑包,并提供内置的用户身份验证。Self.ID Web 仅支持浏览器应用程序,现在是用于构建Ceramic应用程序的最受欢迎的捆绑包。

  1. 3ID Connect:基于浏览器的跨链用户身份验证系统,与区块链钱包兼容。3ID Connect允许用户将任何链中的一个或多个区块链帐户连接到他们的Ceramic分散身份。3ID Connect支持所有EVM链和其他区块链平台,如NEAR,Cosmos,Filecoin和Tezos。

更多 Self.ID 工具

  • 图像实用程序:用于将图像上传到IPFS,以多种大小和分辨率存储它们,并检索应用程序UI最需要的图像。非常适合在处理用户配置文件照片等图像时优化应用程序性能。有时您想显示全分辨率图像(例如个人资料页面),有时您只想显示低分辨率缩略图(例如仪表板)。
  • 3Box 旧版配置文件:用于将旧版 3Box 配置文件作为基本配置文件加载的实用程序函数。以前,这是由IDX.js提供的。

常见问题

我应该使用哪个库?

如果您已经熟悉IDX或更高级地满足您的开发需求,DID DataStore可能是一个更好的选择;它提供了最大的灵活性,新功能将首先在那里实现。如果使用自定义数据模型(架构和定义),则应熟悉数据模型的新工具集,包括 DataModel 注册表和 DataModels.js。

如果您刚刚开始使用 Ceramic 和 IDX,Self.ID 应该会提供更流畅的体验。它允许您构建Web3数据应用程序,而无需了解所有概念即可进行工作设置。如果您想更好地了解全套可能性,您仍然应该了解Ceramic和生态系统的其余部分。

我现在该怎么办?

IDX.js和相关软件包正在弃用。向前推进新功能和改进将仅在 Glaze 和 Self.ID 包中实现。我们建议你更新应用,以便尽可能使用新程序包。

加入开发者社区

Ceramic社区热衷于构建Web3数据应用程序。如果您想了解有关本文中提到的任何内容的更多信息,在尝试使用新工具时遇到任何问题,无论是用于新项目还是从IDX.js迁移,请加入Ceramic不和谐

要开始构建Ceramic应用程序,请立即转到 Glaze 和 Self.ID 开发人员文档!2