使用GraphQL的区块链的开源查询协议

科技2020-03-23 14:38:17
导读任何尝试在(以太坊)区块链上构建分布式应用程序(dApps)的人都会同意:虽然区块链在概念上非常接近数据库,但查询数据库与查询区块链完全

任何尝试在(以太坊)区块链上构建分布式应用程序(dApps)的人都会同意:虽然区块链在概念上非常接近数据库,但查询数据库与查询区块链完全相比,感觉就像一个不同的世界。

首先,在区块链上存储数据存在显着的性能问题。这些与区块链的分布式性质以及共识协议和密码学的组合所带来的惩罚有很大关系。

如果数据库由节点网络组成,其中每个节点都保留整个数据库的完整副本,并且每个事务都必须由每个节点进行验证,那么数据库也会很慢。这就是为什么人们一直在尝试各种方法来使用区块链作为数据库,包括改变区块链结构。

图表做了不同的事情:它允许区块链,但提供了一种使用GraphQL有效地索引和查询存储在它们上的数据的方法。

查询区块链

实际上,性能只是从区块链中检索数据的一部分。情况变得更糟:区块链没有任何查询语言可言。让它沉入片刻:没有查询语言。想象一下没有查询语言的数据库!你怎么能得到你需要的东西?人们如何构建dApp,真的吗?经过大量的努力和脆弱的特殊代码。

正如耶稣罗德里格兹在这篇文章中所指出的,区块链数据访问具有挑战性,主要是由于三个基本原因:权力下放,不透明度和顺序数据存储。所以人们留下了一些选择:

编写自定义代码以在区块链上找到所需的数据,并在每次需要数据时重复这些(昂贵的)调用,或者一次检索数据并存储在脱链数据库中,并构建索引以指向原始数据区块链数据。

这就是图表的用武之地。图是一种用于索引和查询区块链数据的分散协议。但它不仅仅是一个协议:Graph还有一个实现,它是开源的并使用GraphQL。

GraphQL是API的一种查询语言,由Facebook开发和开源。GraphQL已经拥有了自己的生命,它越来越流行并被用于访问数据库 - 例如,参见Prisma或FaunaDB。

ZDNet与The Graph的联合创始人,项目负责人Yaniv Tal和研究负责人Brandon Ramirez进行了问答。

用Tal的话说,现在,在dApp上工作的团队必须编写大量的自定义代码并部署专有的索引服务器,以便有效地为应用程序提供服务。因为所有这些代码都是自定义的,所以无法验证索引是否正确完成或将此计算外包给公共基础结构。

通过定义执行此索引并确定性地提供查询的标准化方法,Tal继续补充说,开发人员将能够在可以实施安全性的公共开放式基础架构上运行其索引逻辑。

免责声明:本文由用户上传,如有侵权请联系删除!