一个去中心化存储架构

Blockstack网络使用名为Gaia的存储系统存储应用程序的数据。事务性的元数据存储在Blockstack区块链上,而用户应用程序数据存储在Gaia存储中。 在区块链之外存储数据可确保Blockstack应用程序可以为用户提供高性能和高可用性的数据读写,而无需引入中央信任方。

了解Blockstack架构中的Gaia

下图描述了Blockstack架构及其在Gaia中的位置:

Blockstack Architecture

区块链需要大量人之间的共识,因此会很慢。 此外,区块链设计的初衷并不是要去容纳大量数据。 这意味着对于用户而言在区块链上写入和存储的每一位数据都非常昂贵。 例如,设想一个应用程序在链中存储了所有tweet。

Blockstack使用分层方法解决了区块链性能问题。 该系统的基础是区块链和Blockstack 域名系统(BNS)。 区块链控制系统中域名(身份)的所有权,域名包含子域名、用户域名、与应用程序域名。

Blockstack中的域名与OSI(Open Systems Interconnection)中的路由数据相对应。 路由数据存储在第二层Atlas节点网络中。 加入Blockstack网络的每个核心节点都可以获取此路由数据的完整副本。 Blockstack使用路由数据将域名(用户域名,子域名和应用程序域名)与特定的存储位置相关联。

最后一层是Gaia存储系统。 Gaia系统由hub服务和云服务提供商(例如Azure,DigitalOcean,Amazon EC2等)上的存储资源组成。 通常,计算资源和存储资源属于同一云供应商。 Gaia当前具有对S3和Azure Blob存储的驱动程序支持,但该驱动程序模型还允许其他后端支持。

由于Gaia将应用程序和用户数据存储在区块链之外,因此Blockstack DApp通常比在其他区块链上创建的DApp具有更高的性能。 此外,用户可以选择数据的存储位置,Gaia使应用程序可以通过统一的API访问该用户数据。 当用户登录时,身份验证过程将为应用程序提供Gaia hub的URL,然后该hub将代表该用户写入存储。

用户所有权或Gaia如何是去中心化的?

Gaia Hub 作为写入数据存储的服务运行。 Hub服务通过要求来自请求者的有效身份验证令牌来写入数据存储。 通常情况下,Hub服务在计算资源上运行,而存储本身在单独的专用存储资源上运行。 通常情况下,两个资源都属于同一个云计算提供商。

Gaiastorage

Gaia的分散管理方法关注在用户对数据及其存储的控制。 如果用户可以选择要使用的Gaia hub提供商,则该选择就是启用用户控制的应用程序所需的所有去中心化操作。

用户数据的控制在于访问用户数据的方式。 当应用程序为给定用户alice.id 获取文件 data.txt 时,查找将遵循以下步骤:

  1. alice.id 获取 zonefile
  2. 从她的zonefile中读取她的个人资料网址。
  3. 获取 Alice’s 资料
  4. 验证 这个资料是用 alice.id 的密钥签名的
  5. 从资料里面读 gaiaHubUrl (例如 https://gaia.alice.org/)
  6. https://gaia.alice.org/data.txt获取文件

因为alice.id可以访问她的zonefile,所以她可以更改配置文件的存储位置。 例如,如果当前配置文件的服务或存储受到损害,她可能会这样做。 为了更改个人资料的存储位置,她将自己的Gaia hub的URL从其他hub提供商更改为另一个Gaia hub的URL。 如果Alice自己有足够的计算和存储资源,则可以运行自己的Gaia存储系统,并绕开商业Gaia hub提供商。

Note: 已经有身份的用户尚无法将其数据从一个gaia hub迁移到另一个gaia hub。

直接代表Alice的应用程序不需要执行查找操作。 相反,Blockstack的身份验证流程向应用程序提供了Alice选择的应用程序根URL。 由于Alice的浏览器必须生成身份验证响应,因此该身份验证流程也处于Alice的控制范围内。

了解数据存储

Gaia hub 按给定的写入信息明文存储。 它提供有关数据的最小保证。 它不能确保数据被有效格式化,也不能确保包含有效签名或被加密。其设计理念是这些数据的存储方式应该是是客户端的关注点。

客户端库(例如blockstack.js)能够提供这些保证。 Blockstack使用了端到端原理的自由定义来指导这种设计的决策。

Gaia与其他存储系统相比

Gaia与其他去中心化存储系统的技术栈如下。为简洁起见,所有存储系统共有的功能都将省略。

Features Gaia Sia Storj IPFS DAT SSB
用户控制数据的托管位置 X
可以在普通的Web浏览器中查看数据 X X
数据读/写 X X X
数据可以删除 X X X
数据可以列出 X X X X X
回收已删除的数据空间 X X X X
数据查询具有可预测的性能 X X
可以委托写权限 X
可以委托列表权限 X
本机支持多个后端 X X
数据可全局寻址 X X X X X
需要一种加密货币才能工作 X X
数据是内容寻址的 X X X X X