FROM : https://docs.blockstack.org/storage/overview.html#
Blockstack网络使用名为Gaia的存储系统存储应用程序数据。事务元数据存储在blockstack区块链上,用户应用程序数据存储在Gaia存储中。在区块链之外存储数据可以确保blockstack应用程序可以为用户提供高性能和高可用性的数据读写,而不需要引入中央信任方。
理解blockstack架构中的Gaia
用户控制或Gaia是如何去中心化的?
理解数据存储
Gaia和其他存储系统
理解blockstack架构中的Gaia
下图描述了blockstack架构和Gaia在其中的位置:
区块链需要在大量人群中达成共识,因此速度可能很慢。此外,区块链并不是设计用来存储大量数据的。这意味着对用户可能编写和存储的每一位数据都使用区块链是昂贵的。例如,假设一个应用程序在链中存储每条tweet。
Blockstack使用分层方法解决区块链性能问题。系统的底层是一个区块链和blockstack命名系统(BNS)。区块链控制系统中名称(标识)、域名、用户名和应用程序名等名称的所有权。
Blockstack中的名称对应于OSI堆栈中的路由数据。路由数据存储在第二层Atlas对等网络中。每个加入blockstack网络的核心节点都能够获得该路由数据的完整副本。Blockstack使用路由数据将名称(用户名、域和应用程序名)与特定的存储位置关联起来。
最后一层是Gaia存储系统。Gaia系统由Azure、DigitalOcean、Amazon EC2等云软件供应商上的中心服务和存储资源组成。通常,计算资源和存储资源属于同一个云供应商。Gaia目前支持S3和Azure Blob存储,但是驱动程序模型也支持其他后端支持。
由于Gaia将应用程序和用户数据存储在区块链之外,blockstack应用程序通常比在其他区块链上创建的应用程序性能更好。此外,用户可以选择数据的位置,Gaia允许应用程序通过统一的API访问用户数据。当用户登录时,身份验证过程向应用程序提供Gaia hub的URL,然后Gaia hub代表该用户将数据写入存储器。
用户控制或Gaia是如何去中心化的?
Gaia Hub作为一个服务运行,它向数据存储写入数据。hub服务通过要求请求者提供有效的身份验证令牌来写入数据存储。通常,hub服务运行在计算资源上,而存储本身运行在单独的专用存储资源上。通常,这两个资源属于同一个云计算提供者。
Gaia的去中心化方法侧重于用户对数据及其存储的控制。如果用户可以选择使用哪个Gaia hub提供者,那么这个选择就是启用用户控制应用程序所需的全部去中心化。
用户数据的控制取决于访问用户数据的方式。当应用程序获取给定用户alice.id的文件data.txt时,查找将遵循以下步骤:
1.获取alice.id的zonefile。
2.从她的zonefile中读取她的个人资料URL。
3.获取Alice的简介。
4.验证配置文件是否由alice.id的Key进行签名
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
具有现有身份的用户还不能将数据从一个中心迁移到另一个中心。
直接代表Alice编写的应用程序不需要执行查找。相反,blockstack身份验证流向应用程序提供Alice选择的应用程序根URL。此身份验证流也在Alice的控制范围内,因为Alice的浏览器必须生成身份验证响应。
理解数据存储
Gaia hub按照给定的方式存储书面数据。它提供了关于数据的最小保证。它不能确保数据被有效格式化、包含有效签名或加密。相反,设计哲学是这些关注点是客户端关注点。
客户机库(如blockstack.js)能够提供这些保证。Blockstack使用了端到端原则的自由定义来指导这个设计决策。
Gaia和其他存储系统
下面是Gaia与其他去中心化存储系统的对比。为了简洁起见,省略了所有存储系统共有的特性。
特性 | 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 |