没有分布式存储,就不是真正的DApp|专访Genaro吴为龙

专注报道区块链的 碳链价值


Genaro的设计目的是为了让数据拥有分布式存储的媒介,该媒介能为链上DApp提供数据的分布式存储,同时令每一个用户拥有对自身数据的所有权。


希望读者可以通过这篇文章了解Genaro,更希望读者可以藉由此篇文章,了解数据的分布式存储这一概念以及它的实现原理和实现过程。


作者:李画

编辑:秦晋


 “你想要一个分布式的账本吗?”如果向用户提出这样的问题,他们十之八九会陷入疑惑,并反问,“什么是分布式账本?”即使是区块链从业者,恐怕也很难用简单的句子回答出什么是分布式账本,以及用户为什么需要这样一个账本。


但如果换一个问题,“你想要一个分布式的应用,或者说分布式的App吗”?被问者可能会有一些好奇,并询问“分布式的App和我现在使用的App有什么不同?”


这个问题的答案是清晰的,易于理解的。分布式的App可以消减中心化机构作恶的便利性,可以让用户拥有对自身数据的所有权,可以让交易过程变得更加可信,可以让用户获得经济上的收益……


而这也许是互联网用户们想要的一些“功能”。他们需要分布式的应用,但不理解也不需要一个分布式的账本。


从账本到应用,面临着挑战。有的挑战显而易见,比如系统能否支持应用“跑”起来。这个问题最被诟病同时也最被重视,不少技术方案和崭新项目的出现都是为了解决这一短板。


有的挑战却隐蔽得多,比如分布式应用保持了真正彻底的分布式吗?还是仅仅是分布式的账本加上各种中心化的解决方案?


目前的状况是后者,尤其在至关重要的数据存储方面。包括Ethereum和EOS在内,大部分公链能够承载的只是一个分布式账本,因为链上数据大小受限,DApp运行所需要的大量数据不得不存储在中心化的服务器上,这让DApp在很大程度上丧失了分布式和分布式能够带来的优势,同时面临着包括DDoS攻击在内的各种威胁。


该如何解决这一问题?该如何设计和实现区块链数据的分布式存储?


碳链价值采访了Genaro项目CTO吴为龙,一个典型的crypto guy。他讲述了自己对这一问题的理解以及Genaro对此的解决方案。Genaro的设计目的是为了让数据拥有分布式存储的媒介,该媒介能为链上DApp提供数据的分布式存储,同时令每一个用户拥有对自身数据的所有权。


希望读者可以通过这篇文章了解Genaro,更希望读者可以藉由此篇文章,了解数据的分布式存储这一概念以及它的实现原理和实现过程。


基于Kademlia的分布式存储网络


首先,为了保证用户对数据的所有权和隐私权,也就是说数据对于非授权用户是不可见、不可用的,在存储数据前,先要对数据进行加密。


Genaro采用了两步走的加密方法:先用对称加密的方法使用密钥对明文数据加密,再用非对称加密的方法加密密钥。这种组合的加密方法可以在实现加密的基础上有效地提高加密效率。


在完成数据加密后,紧接着是做数据切片,也就是把一份文件数据切割成一个个小的数据片段,而这些数据片段将会被存储到分布式系统中不同的存储空间中去。数据的分布式存储的存储颗粒度不是文件,是小的数据片段。


有了需要被存储的数据片段,如何实现这些数据片段的分布式存储?Genaro采用的是实行Kademlia协议的DHT(Distributed Hash Table,分布式哈希表)网络。


哈希表是一种数据结构,存储KV对(Key/Value Pairs,键值对)。它使用hash()函数把key值映射到index上,即hash(KEY) = index,然后把与这个key值对应的value存储到index所标记的存储空间中。当要查找Key值对应的value值时,只需要做一次hash()运算即可。


哈希表的存储空间在同一台机器上,分布式哈希表(DHT)则把Key值的集合分散到分布式系统中的节点,并且可以有效地将消息转送到拥有所查询Key值的节点,实现数据的分布式存储。


Kademlia是实现DHT的诸多技术中的一种,在Kademlia算法里, 每一台加入Kademlia网络的机器都拥有一个160位的NodeID,而每个数据片段的Key值也是一个160位的标识符,每组数据(以KV对的存储形式)都存储在160位键值空间中与自身Key值对应的机器节点上。 



在获取数据,也就是从机器节点取回数据时,Kademlia使用了“距离”这一概念来寻址,通过对两个160位标识符的“异或(XOR)”,获得系统二叉树中两者之间的距离。异或算法建立了一种全新的DHT拓扑结构,相比其他算法提高了路由查询速度,能够快速从分布式的机器节点中找到需要的数据。


通过上述技术,Genaro实现了加密数据的分布式存储。用户的数据文件被加密、切片、分散存储到不同的机器节点上,并可通过Kademlia被检索、重新组装和使用。


以SPoR+PoS为共识的Genaro公链


如何用上述分布式存储网络来存储区块链的DApp数据,并保证数据的一致性和完整性?Genaro采用的方法是使用双层架构,将区块链与分布式存储网络集成。



Genaro I/O流协议(GSIOP)在分布式存储网络和区块链间创建了一个数据通道,数据通过该协议传输,以同构的方式实现同步,从而保证数据在存储网络和区块链上的一致性。


用户在Genaro公链上完成数据初始化,文件数据存储在分布式网络中,区块链上则存储相应的存储记录。初始化会同时完成数据使用特性,比如对数据调用角色进行划分,有数据的拥有者,也有数据的使用者,数据的每一次改动都能看到拥有者的commit。


假如用户A、B、C和D与数据有关,他们会分别拿到不同权限的密钥对,只有拥有数据更改权限密钥的人,才能在与链上交互,获得确认后再更改数据;而其他使用者虽然可以使用数据,但无法更改数据。在这种限定下,就不会出现多个用户在链下随意更改,导致数据的不可用、不一致。


在使用分布式网络存储数据时,另一个需要解决的问题是数据的完整性。Genaro需要保证当把数据存储到网络中后,被存储的数据是可以被验证存储完整性的,也就是说文件数据是可用的,而不是存储后无法找回的。


为了解决这一问题,Genaro选择了SPoR算法,它基于Kevin D.Bowers和Ari Juels的论文《Proof of Retrievability》,PoR(Proof of Retrievability,可检索证明)是证明目标文件存在且未被损坏的一种方式。


SPoR对PoR进行了改进,通过设立特定的文件指纹(sentinels)来侦测被存储文件数据的可验证性。


在建立阶段,验证节点对文件加密,并把文件指纹植入文件的随机位置;在验证阶段,为了验证存储节点保有文件,验证节点指定文件中含有部分指纹的位置,并要求存储节点返回相应的指纹值;因为存储节点无法区分开指纹和原文件,因此如果它修改了文件的一部分,有很大的概率也会修改掉相应部分的指纹。在这种情况下,当验证节点验证了足够多的指纹后,就可以确定存储节点是否修改了文件,从而可以保证文件的安全性和完整性。


在Genaro公链,SPoR承担的功能不仅是验证存储的完整性,它也被用作共识的达成,与PoS一起组成Genaro的混合共识机制。


PoS共识有两大问题:无利害关系(Nothing at Stack)和长程攻击(Long-Rang Attack),Genaro混合共识依靠由SPoR提供的辅助信息解决这两个问题。


Genaro公链将指纹校验记录引入区块链共识操作中,校验次数在链上同步,所以在多个分支上,只有主链才会同步到相对值较大的检验记录总数,依靠这部分信息,就可以对错误分支押注的攻击者进行惩罚,解决无利害关系问题;而同样因为引入指纹校验记录,在相对久的区块分支,即便一开始分支可以演进,当到达验证点之后,就会因为指纹总数少于主链而停止,从而解决长程攻击问题。


在工程实现中,Genaro使用了许多经典的技术和算法——比如PoR,它是整个云存储的开端——再把区块链思维加入其中,一步步迭代出崭新的东西,最终带来结合分布式存储网络的区块链公链,实现了DApp数据的分布式存储。


Genaro生态系统


采用双层架构,将区块链与分布式存储网络集成在一起的Genaro系统中,包含众多的生态参与者。


这其中,有DApp开发者。他们可以基于Genaro公链一站式开发出实现数据分布式存储的DApp。如果说共识机制是操作系统,存储网络就是硬盘,Genaro创建了一个功能齐全的整体,而这个整体是以分布式的形式存在的。


所有的原始数据都是安全加密、分布式存储的,只能通过区块链的数据“岛”到达,而区块链本身只能通过私钥访问,分布式账本与分布式存储结合,实现了真正的分布式DApp。同时,分布式存储也为DApp提供了更高的安全性,为DApp开发者带来了更低的开发成本。


Genaro也为其他公链提供数据分布式存储这一基础设施的服务。公链是一条高速公路,Genaro则可以为公路铺设“数据存储”那一层路基。公链项目可以专注于自我优势领域的开发,而通过与Genaro的合作实现DApp数据的分布式存储。


在Genaro生态系统中,还包括数据的拥有者(存储者),他们不仅可以安全、私密、永久地存储自己的数据,而且还拥有对自己数据的所有权,这一点在“数据就是价值”的未来会变得至关重要。


同时,基于Genaro可搜索加密和半同态加密,用户可以在保护数据隐私的情况下分享数据、交易数据,从而实现数据价值,并可利用数据获得收益。


为分布式存储网络贡献硬盘空间的参与者也是Genaro生态的一员,Genaro在对存储付费的同时,通过共识机制的设计给予参与者更多的激励,鼓励他们分享存储空间,促进整个生态系统的发展。


虽然生态系统是庞大的,但对于DApp用户来说,他们不需要知道系统内部的工作原理便可以轻松的使用它,并享有分布式DApp能带来的种种优势。


结束语


在区块链领域有无限的方向,每个方向都可能开拓出崭新的天地,Genaro做的是为未来DApp数据生态系统奠定基础。


吴为龙说,所有的区块链技术都不是“火箭技术”,是需要脚踏实地,一步步优化、一步步推进的技术。这大概也是团队的共识,因为以工程化的逻辑去设计、去实现,保证可用的最大化,正是Genaro的节奏。


这段时期,行业内很多人士在提可信区块链,可信存储是可信区块链最重要的组成部分之一,而数据的分布式存储正是有效的值得期待的可信存储解决方案。

END



小公告:

 

碳链价值官方微博账号“碳链价值-Tangent”正式上线了。

 

在那里,我们不但会同步微信公众号中深度文章,还会随时发布最前沿,最有价值,最热点的区块链讯息。


同时在微博上我们可以更灵活、更集中地沟通与互动,欢迎各种头脑风暴的来袭,欢迎各种意识观点的冲突,也欢迎各种余音绕梁的调侃,欢迎加入我们。

 

我们是碳链价值,我们专注于报道区块链,我们为高质内容代言。


长按识别二维码,关注碳链价值

    + 关注

    + 订阅

    扫描二维码推荐公众号

    微信公众号