Genaro黄皮书解读:“区块链+分布式存储”集大成者

通读此文,不仅能对Genaro项目在技术层面上有个较完整的理解,而且能对当前最热门的云计算、区块链以及分布式存储技术有个大致的了解。

作者:古千峰

编辑:七七

昨天,Genaro项目技术黄皮书发布,笔者在第一时间下载(网址:https://genaro.network/en/documentation/Genaro%20Network%20Yellow%20Paper_zh),在仔细阅读后,受益匪浅。建议广大区块链技术工作者可以看看。篇幅虽然不多,仅14页,但几乎涵盖了80%的当前流行的分布式存储与区块链技术。

通读此文,不仅能对Genaro项目在技术层面上有个较完整的理解,而且能对当前最热门的云计算、区块链以及分布式存储技术有个大致的了解。

之所以有以上评价,源于Genaro本身就是一个集区块链技术与分布式存储于一身的特殊项目。打个不恰当的比方:Genaro=以太坊+IPFS。

因此,要解读Genaro的技术黄皮书,得分两个部分,分别是分布式存储区块链。

下图是笔者整理的白皮书思维导图,将根据这个思维导图进行下一步解读。

一、Kademlia

分布式存储技术的基础是P2P网络,之前BT网络、eMule、VeryCD等等,都是P2P网络。P2P技术经过这些年的发展,已经相当成熟。比较有代表性的算法有Kademlia DHT,以及由其派生出的Coral DSHT和S/Kademlia DHT等等。不仅仅是上述提到的P2P网络,IPFS和Genaro也都使用了Kademlia分布式哈希技术。因此,大致了解下什么是Kademlia很有必要。

Kademlia算法要解决的问题就是在没有中心化索引目录的情况下,如何在保存了不同文件的节点上,快速找到需要的文件。Genaro的黄皮书中用了大量篇幅来介绍Kademlia,但技术性太强。笔者用一个算法例子来解释下Kademlia。

假设一个学校某一天决定把中心化图书馆拆了,把图书交给每个学生,同学之间互相借阅,那么怎么才能快速找到需要借的书在谁手里呢?

然后Alice看看自己的k-bucket 5(通讯录的第五区,请注意,该“通讯录”一般只占极小部分,否则便成为了中心化索引)中有没有Bob,这里有两种情况:

1.如果有,那就直接联系Bob借书;

2.如果没有,在k-bucket 5(第五区通讯录)里随便找一个同学B(注意是任意同学,它的学号第5位肯定与Bob相同,即他与Bob的距离会小于24,相当于比Bob、Alice之间的距离缩短了一半以上),Alice请求同学B在它自己的通讯录里按同样的查找方式找一下Bob:

a.如果B知道Bob,那就把Bob的手机号(IP地址)告诉Alice;

b.如果B也不知道Bob,那B按同样的搜索方法,可以在自己的通讯录里找到一个离Bob更近的同学C(Bob、C之间距离小于23),把C同学推荐给Alice;Alice请求C同学进行下一步查找。

如此下去,直到找到为止。

Kademlia的这种查询机制,有点像是将一张纸不断地对折来收缩搜索范围,保证对于任意n个学生,最多只需要查询log2(n)次,即可找到获得目标同学的联系方式。如果是1000万个节点的话,只需要寻找最多log2(10000000) = 23.25次,即可找到需要的内容。

这也是目前绝大多数分布式存储网络都采取Kademlia算法为数据发现的原因,因为检索效率很高。

(以上案例节选于《易懂分布式 | Kademlia算法》一文)

二、可搜索加密技术

该技术属于加密技术在云计算领域的应用。

顾名思义,就是基于密文进行搜索查询的方案,用密码学来保障用户的数据隐私信息。

用户不需要将所有加密文件全部下载到本地,然后在进行检索,从而节约了大量的带宽消耗和磁盘空间消耗。通过在线的加密搜索,可以直接检索加过密的数据,并根据需要下载。

Genaro使用了可搜索加密技术中的一种,即:搜索对称加密(SSE: searchable symmetric encryption)

三、代理重加密

该技术也属于加密技术在云计算领域的应用。

代理重加密技术可以解决用户在数据共享方面的不便。

代理重加密实质上是一种用于密文之间的密钥转换机制。在代理重加密过程中,服务商得不到数据的明文信息。

具体流程是授权人A透过代理者产生针对被授权人B的转换密钥。代理者利用该密钥,将原本由授权人A的公钥加密的密文转化为由用户B的公钥所加密的密文。

这样就在很大程度上解决了用户A与用户B需要共享公钥的问题,被授权人B只需要使用自己的私钥就可以获取密文对应的明文。从而实现了用户之间的安全的数据共享。

四、I/O流协议

作为区块链和分布式存储混合型项目,如何打通区块链的链上与分布式存储的链下数据,是个非常重要的问题。让以分布式存储的链下数据也同样具备链上数据的可信度,是I/O流协议需要解决的问题。

GSIOP 就是通过加密的方式保证了链下存储可靠性的协议方案。这种方案的最终目的是解决数据上链问题,也就是目前的区块链技术一直以来无法解决的Oracle(预言机)问题。希望Genaro的区块链+分布式存储方案能在这个问题上有所突破。

以上四项技术属于分布式存储,接下去来看下Genaro项目的区块链部分。

首先,Genaro的区块链部分是基于以太坊做的修改,在以太坊的虚拟机EVM中,增加了和文件存取相关的指令opcode。同时在Solidity语言中,也相应的增加了相关开发语法,形成了自身的GVM虚拟机。这种设计,将对现在主流的DAPP开发者-以太坊社区有利,能快速基于Genaro开发DAPP应用。

其次,在共识机制上,为了提升以太坊共识效率。同时,为了保证加密分享的文件本身是可以被证明存储完整性的,而不是存储后无法找回。Genaro对早期IPFS的PoR(复制证明)算法上做了改进,提出了SPoR算法,并与以太坊Casper的POS算法进行融合,提出了POS+SPoR的混合共识算法。

PoR算法也是几乎所有分布式存储的通用算法,最近PoR算法有了新的突破,斯坦福大学的Ben Fisch最新的关于PoR算法研究论文出炉,见https://web.stanford.edu/~bfisch/porep.pdf,笔者将对此报告做另行解读。

对Genaro的解读至此,通过以上文字,读者可以看出,Genaro在整合一些成熟的技术的基础上,做了新的改进。这种整合与改进也是正是比特币、以太坊、IPFS等项目采取的方式。这种“积木式”开发,不仅仅在互联网行业非常流行,即使在底层公链上,也是如此。

作者简介:

古千峰,美国区块链媒体BTC Media亚太区CTO,Ripple早期开发者,分布式商业实践者与顾问,柚子杯黑客马拉松巡回赛发起人,武谷社区创始成员,IPFS原力区创始成员,哈希说区块链课程顾问,上海软件业协会首批认证区块链架构师。

END

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180801B0QJS300?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券