社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  区块链

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

碳链价值 • 5 年前 • 450 次点击  


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


 END


 欢迎扫码关注区块链深度媒体「碳链价值」



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/e9iVZ2xrHF
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/21848
 
450 次点击