首页 > 品牌人物 > 查看内容
  • 分享到

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

2018-08-05 10:31

来源:cc-value

作者:佚名


通读此文,不仅能对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同学(学号00000110)想找《分布式算法》,她首先需要把书名进行哈希计算,得到该书名的哈希值为 00010000。那么Alice就知道她需要找到 00010000 号同学(命名为Bob同学)或学号与Bob邻近的同学。


那么怎么才能找到Bob呢?Bob的学号 00010000 与Alice的异或距离(不是物理距离)为 00010110,距离范围在[24, 25),所以Bob可能在k-bucket 5中,即第五区中。


然后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原力区创始成员,哈希说区块链课程顾问,上海软件业协会首批认证区块链架构师。

标签:
发表评论
回顶部