声明:无任何利益相关。
近来个人的学习关注点主要集中在跨链这个主题,看了一些很有创意的项目,比如万维链,Cosmos,Polkadot等,也越来越相信,跨链才是支撑下一步区块链杀手级应用的底层技术。
虽然2018号称公链竞争元年,但时至今日,公链的发展仍然受限于区块链基础科学的发展;效率、去中心化、安全铁三角的互相牵制,公链的TPS瓶颈问题等等,都需要更加天才的想法来推动发展。而一直都被诟病的拥堵的以太坊也在研究共识机制的过渡。EOS公链的初步成功,给了很多人以信心:DPoS或许真的是理想主义和现实之间的一个完美过渡呢?我们常常喊着理想化的完全的公平,一人一票的投票权,一边又在寻找身边的KOL,来企图找到跟随的方向。
而共识机制,一方面是区块链的设计核心,另一方面也是人性的揣摩,更不用说,背后的利益博弈。
如果不是偶然被cue到关于Genaro项目的问题,我想自己也不会来写任何关于Genaro项目的文章,但读了号称多个高校联手打造的黄皮书,个人的感觉是,一头雾水。大概是受限于自己的分布式存储和可搜索加密这一块知识的短板,所以找了下面三篇论文来看(均可点击下载原文):
第一篇,详细解释了Genaro用到的P2P网络算法原理以及实现方式;
第二篇,详细说明了在加密数据上进行搜索(可搜索加密)的原理和实践技巧;
第三篇,详细阐述了PoR算法的完备的理论框架和实现方式。
而这三篇文章和Genaro的黄皮书的关系又是什么呢?从黄皮书的组织架构上看:
- 存储网络
- 公链
- 共识治理结构
这三篇文章恰恰也是每个部分的核心思想。虽然比特币本身也是站在巨人的肩膀上,进行了集合式的创新,并成功运行近10年之久,而发展到今天,区块链仅仅有集合创新是不足以支持作为下一代公链的野心的。而Genaro的创新能够支撑它的野心吗?能真的通过提供分布式存储 + 公链双底层架构来支撑杀手级应用吗?能真的作为公链之公链的基础设施完成它的使命吗?
我们先从Genaro是什么开始谈起。
Genaro是什么?
在黄皮书的愿景部分,开篇第一句概括了Genaro的本质:
Genaro是一个结合了点对点加密存储网络的公有链。
再稍稍对这个定义进行提炼扩充一下:Genaro = 点对点加密存储网络 + 可编程的公有链。
接着,我们不妨先谈一谈什么是点对点存储网络,再引申到加密版本的点对点存储网络,其次,再从可编程的公有链来理解一下Genaro到底是什么。
点对点(P2P)存储网络
这没什么高深的,也是我们日常生活中都在使用的技术。而提到点对点这个词,和分布式,去中心化时常谈论的是同一个感性的概念,而去中心化这个词本身还带有一定的反政府主义的色彩,所以很多大会上的PPT已经开始回避。总之,点对点存储网络下,没有谁是中心化服务器。我们平时用的邮件,其实可以是去中心化的,点对点的,只需要有更多人运行IMAP协议(互联网邮件访问协议),互相作为节点即可托管服务,但实际上,我们是在用中心化的服务器在托管自己的邮件。这表明,我们对技术是不是点对点没那么在意,只要好用即可。也意味着我们还没走到一定要用去中心化技术的意识形态那一步,所以比特币早先也只是一群极客的狂欢,是无政府主义的密码朋克们的乌托邦。
再举个真的是P2P的例子。已经倒掉的快播和被招安的迅雷,都是P2P技术的拥趸。当然与Genaro有合作的Storj,还有全球人民都知道的eMule,uTorrent,BitTorrent等等都是P2P阵营的老玩家了。所以当Genaro花了很大的篇幅来解释什么是P2P,以及自己用到的Kademlia技术(P2P新一代通用技术),并不能显示出自己有多么创新,更何况,内容还部分拷贝自论文,就连配图也是(马赛克)。
P2P特性最能得到体现的是文件分享,比如迅雷,但是迅雷这种会把用户的带宽免费占用。什么意思呢,就是你下载电影时,你是在从多个临近的可用节点上获取,然后你同时也在为其他人提供下载。到99.99%的时候,就要验证数据是不是完整的了,不完整前面的工作就白费了。这个模型里你免费获取了别人的服务,同时也在免费用别人的资源,迅雷作为中间商,当然就可以通过限速等流氓手段逼着你买会员啦。
所以这是畸形的P2P,也是不够公开透明的P2P,因为迅雷会把你的电脑当肉鸡,也就是当你啥也没传时,会看到你的网络有上传网速,这就是迅雷的客户端在背后作怪。
可是也没得办法,用人家的服务,就得接收人家的霸王条款,而这些霸王条款是藏在密密麻麻的用户协议里的。
所以,P2P的共同参与,透明开放,平等,共享等这些美好的特征,在中心化的公司参与下,是要适当削减的。
但是结点的去中心化,扁平化,节点平等等特点倒是保留得很好。
说到在这里,需要强行插播一下P2P网络思想:
在没有中心化的索引目录的情况下,在保存了不同文件的节点上,快速找到需要的文件。
数据一旦进入网络存储,而不是在自己的硬盘上,就要解决一个问题是:怎么找到它们?这就要引入P2P网络实现方法。
简单说就是DHT:分布式哈希表。说到哈希,就要有一个(key, value)这样的数据结构浮现出来,key是哈希的键值,value是存储的具体数据。而每步查询的目标就是:尽可能地将查询key发送到离存储这个key最近的那台机器上。不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据。实现的是整个DHT网络的寻址和存储。
总之,理解为:数据被切割成多个小块,分布存储到了互联网上的不同节点了,此时要想到你的电脑也可以作为节点,可不是事不关己高高挂起。这些小块数据,更加灵活的游走在互联网上,随时进入到请求这个资源的最近的节点、进入到硬盘。
但是这些数据分成碎片之后,如何确定是不是还能组成完整的数据,是不是1+1 = 2,就需要一定的机制来进行验证。此外,碎片数据是明文存储在不同节点上,还是要加密存储?
加密存储的点对点存储网络
如果数据分成碎片之后,裸着存在节点上,而帮我们存储数据的节点又不可信,就会很麻烦了。比如个人的照片,文章,视频等隐私数据,明文存在隔壁张先生家里的主机上,虽然只是碎片,也足以满足人家的窥探欲了。所以在点对点存储下,如果是敏感数据,加密是必要的措施。
而加密和功能性又是一对难以调和的矛盾,后面也会展开说。简单说,你在搜索引擎里搜索东西,对数据的检索,分享等,都是基于数据是公开的基础之上,而加密了的话,搜索和分享都将变难,需要一定的机制才能实现。
可编程的公有链
可编程公有链,这个对着以太坊就可以理解了。大哥比特币是非图灵完备的平台,也支持256条脚本,所以也属于可编程公有链,只不过比较脆罢了,但不能说大哥没有这个功能,那是不行的。以太坊支持智能合约的开发,就是一个可编程的公有链。开发者可以在平台上开发自己的应用。显然,Genaro也是要做这件事情,同时,从后面看到Genaro是对EVM的增量开发,所以Genaro的公链也是基于以太坊这个公链做了定制吧。
而当前存储网络和公有链其实是分离的组件。从个人视角来看,Genaro的宏观创新点在于将这两个分离的组件结合在一起了。从而满足开发者程序部署在Genaro公链,数据存储在Genaro的分布式存储网络里。对于开发者而言的好处是:能够一站部署智能合约,且同时不用担心数据的存储问题。
既然Genaro想要把这两个部分集合在一起,就一定需要一种方式来整合,这个“胶水”一样的角色就是:SPoR混合机制,而关于这个机制,将在后文共识部分进行展开。
Genaro生态
谈及生态,我们要清楚在这个系统里的角色,以及有哪些资源。
角色
在白皮书中,可以看出Genaro定义了四种角色:
- Storage Sharer存储分享者: 提供存储资源
- Challenger挑战者: 提供计算资源,像是PoW算法下的矿工
- Storage User存储使用者: 需要支付GNX来使用存储
- Developer开发者: 开发者可以基于Genaro来开发智能合约,并在Genaro的分布式存储上存储用户数据,需要支付Challenger,Storage Sharer费用,以GNX计算。
资源
而能够共享的资源包括两种:
- 存储资源
- 计算资源:SPoR+PoS
SPoR的过程也会帮助选择PoS的节点。
为了帮助区块链应用落地,云端转向区块链,构建全球区块链生态系统,Genaro官方会构建:
- Genaro Hub
- Genaro加速器
这些是什么,不做具体展开,我认为当前理解目的即可。
存储网络
Genaro定义了一个分布式存储的媒介,让数据能够进入到Genaro的存储网络,而且这些数据的状态在链上有记录跟踪。在分布式存储下,存储的节点可能非常不靠谱,必须经过加密。加密之后的数据如何查找,搜索等等功能也要配套跟上。
Genaro架构
基于eMule的Kad协议,也就是实现Kad协议的DHT网络。
IPFS简单对比
这一部分参考了Genaro的CEO答记者问以及IPFS的技术文档。
全球有许多成功的分布式文件系统,但这些系统理论框架停留在应用层。通用的文件基础架构无法形成,也无法提供低延迟的数据分发。
这是一个数据分发的新纪元。
知道我要的数据在哪里
IPFS中,每个节点都有一个NodeID,用于标识节点身份。DHT负责存储这些节点的身份信息。
如何完成数据传输
IPFS是明文存储,且引入了Git的版本控制,一个节点上的数据上传到 IPFS 上就形成一个对应的地址,别人通过访问这个地址,可以接触到数据。
而 Genaro Eden 是一个加密的存储后端,它对标的是云,数据存储同时实现云上面的搜索,分享,计算等各项功能。
Genaro 取文件是从多个节点同时取的。断点续传还没有工程实现出来,还在研究当中。
Genaro 是作为一个以存储数据作为激励方式的公链,会自建公链来激励硬盘分享者。
Genaro 公有链的定位是一个底层的公有链,相当于是公链中的公链。其他公有链也可以使用 Genaro 的存储网络。
数据存到Genaro公有链上,存储的数据是安全,原因在于只有有私钥的人才可以获取数据。取回只能凭借自己的密钥。
可搜索加密
分布式数据存储的必要条件是加密,如果不加密数据就会被存储数据的节点看到了,这是不安全的。但是加密的话,就会牺牲功能性。怎么能做到既加密又有功能性呢?还真的有!
对数据进行加密,需要:
- 生成伪随机数序列
- 将明文与伪随机数进行异或运算得到加密密文
注意这里的伪随机数是有特殊的结构的,才能保证对密文进行搜索。而如果想要有更直观的感受,可以阅读鲤斯基的漫画版,而如果想解释清楚这个机制,不加数学公式是不可能的。
这里也略谈,具体可以参考论文:Practical Techniques for Searches on Encrypted Data.
GSIOP:区块链和真实世界之间的数据通道
这里要提一下Genaro公链上的关于存储的两种交易类型:
- Get:提取之前存在网络上的文件
- Set:将文件添加到网络存储中
这两类基础事务都将产生新的交易事务,也都会添加到交易账本上。
而GSIOP是一个通道,在Genaro系统中,数据并不上链,但是对数据的操作会在链上同步记录,也即前面的Set和Get交易都将记录在Genaro公链上。
分布式存储的数据是怎么存上去的?
假设你想往Genaro上传一幅画,这幅画既然进入了Genaro网络了,经过分割、加密,得到的是一个一个碎片,宏观上要存储到不同的节点上,节点是各个用户提供的。进入到Genaro网络的数据,链上是知道的,链相当于账本,记录了谁上来了,谁被谁改动了,还有属于谁,所以第一步,怎么上去的?
答案就是GSIOP。
这就是链下和链上的一个梯子,一个通道,一个协议 。反正你要进入到我的网络里来,就得先按照我的规则(GSIOP定义)初始化,然后按照DApp定义的规则改动。
共识机制
这部分在Genaro官方的文章里有很好的概括:
首先是共识机制设计的关键:
- 减少能源消耗
- 完成有意义的计算
这两点同时实现极为困难。
第一,如果消耗的资源减少,安全性就越低,因为攻击者越容易将分叉链让大家误以为是主链;第二,有意义的计算如何有规律的与区块链系统连接起来,比如如果做机器学习计算,稳定的Data Set从何而来,计算的奖励如何分配,都是需要精心设计的地方。
而PoS是非常激进的做法:几乎不用进行计算,这就大大降低了能耗。证明节点需要对区块结果进行押注,错误则丧失押注,正确则赢得奖励。
同时PoS是双刃剑,很难保证安全性:
- nothing at stake
- long range attack
Nothing at stake:如果攻击者fork当前的链,挖矿节点的保证金已经押在了两条链上,他不需要去判断哪条是正确的链,而是都支持,从而导致攻击者得逞,而无论攻击者是否得逞,节点选择全部挖的策略也可以保障自己的收益,所以只要理性节点不是“token大户”,都会去支持攻击者。
Long range attack:则是更为棘手的问题:可以理解为PoS中的女巫攻击。攻击者不是去fork现有的链,而是回到初始阶段的链,造一条更长的新的链,让网络误以为是主链。因为PoS共识中节点的增长速度没有限定(比特币PoW有限定,10分钟出一个块),攻击者可以用很短的时间造一条更长的链。一个区块链系统,一开始不会有很多矿工,前期的块都是少数矿工挖的,如果这些矿工互相串通好,联合起来回到早起阶段,因为那个阶段只有他们可以挖接下来的块,他们可以很容易联合发起此攻击。
SPoR:数据可检索证明
什么是SPoR:可以被看作是一个微型PoW。
sentinel: 哨兵。
数据可检索证明的意思是,当用户不取回文件的时候,依然可以相信文件完好无损的保存在系统中。在Genaro系统中每天都会对存储节点进行“challenge”,存储节点通过运行SPoR算法表明数据是可被取回的。
直观理解就是:我把包裹放你这里,我暂时不取回,但是我每天都想知道这个包裹放你这里是不是还好。所以你要是能给我发个消息,或者拍个图什么的,我确认下就好了。
这个证明不会随着时间的推移而增加。
在Genaro系统中,PoS是主体,SPoR的角色是用来加强防守。
混合共识的过程:
1.节点进行GNX押注,分享存储空间,申请加入委员会
2.报名者进行实力排名(根据epoch中heft重量与GNX押注等因素)确定委员会名单
3.由委员会点按排名顺序依次连续出块
4.出块节点获得奖励
通过SPoR算法来筛选可信节点。即:要求共识节点付出一定代价,交保证金。通过Something at Stake来打破nothing at stake。而通过选取部分节点+允许信任节点连续出块的方式可以提升TPS。Genaro的混合共识机制的本质是将存储网络与公有链进行深度绑定。
公链中的交易分为两类:
- 普通交易
- 存储行为引发的交易(上传,下载)
其中,存储行为引发的交易,会将sentinel相关信息存入区块,如果节点想要从头开始造链,则无法复原存储网络。这就可以解决Long Range Attack问题。
最后,将进入杂谈部分。
Genaro能解决开发者之殇吗?
再来回顾Genaro的愿景:一站式DApp双底层开发系统。
从这个愿景来看,Genaro确实站在了开发者的角度来思考。对于开发传统的应用软件而言,要做好前端后端,前端处理交互逻辑,后端要处理数据和相应的操作逻辑。
比特币直接是一个账本系统,没有太多的数据需要存储,也不提供开发平台。
而以太坊虽然提供了一个开发智能合约的平台,但也不解决数据存储问题,只存储与状态相关的数据。而DApp确实需要来自链外的数据,为了解决数据的验证性问题,以太坊平台提出了预言机机制,并以中心化的方式完成了数据的验证。而通过前面提到的GSIOP通道,结合自带的分布式存储,对于开发者来说确实是能够一站式部署并运行智能合约的同时,完成储存数据等的一系列操作,让DApp开发更简单且高效。
Genaro如何处理监管?
回到文章开头,个人认为Genaro的创新点在于公链 + 分布式加密存储的结合,拆开成两个组件,都不能算是突破性的创新。但是在弥合这两个分离组件的部分,提出的混合共识机制确实有一定的独创性。
而现在回到分布式加密存储这里,Genaro如果要在国内发展,必将要面临来自监管的问题。
之前在NEO的Smart Data分析文章中看到,NEO要花费巨大的精力来处理与政策的配合问题。而在Genaro这里,更大的问题会出现,对于个人而言,如果Genaro目标是为每个人提供了安全私密永久的分布式共享云盘和值得信任的网络及共享社区,这个愿景虽好,但是我们其实知道我们身处一个高度管制的互联网环境。如果借由Genaro的加密分享,能够脱离政策监管,让数据的流动变得隐形,这是政策不会允许的。而如果配合了监管,便会违背对用户的安全私密永久的承诺。
不知Genaro如何结局。
Genaro能变革云存储行业吗?
Genaro Eden解决方案,对标的变革对象是云存储行业,目标是成为区块链底层公链。
这也是个很大的愿景,我们知道现在的云存储巨头早已经开始涉足分布式存储领域。个人共享的存储和计算资源,集合起来能比肩这种大公司提供的服务吗?
而如果有足够多的节点加入到Genaro,或许会形成一个更加强大的分布式大脑。而前提是,一旦巨头开始提供针对DApp开发者们的存储服务,Genaro的机会窗口又将缩小很多。
Genaro的数据确权如何进行?
假设我盗版了别人的数据资料,马上上传到自己的Genaro账户,像一个黑箱子一样,谁也不会知道我偷了什么。也就是说,Genaro给出的解决方案是什么?
Genaro的数字身份呢?
关于这个部分,对于开发者而言,对于用户身份的感知还是有需求的。公信宝将用户的明文数据以大数据分析,生成标签的形式进行了全网广播,这些标签对于开发DApp的人来说,是很宝贵的数据。
而Genaro提供的加密存储的底层,那关于数字身份的构建,是不是一定程度上要交给上层开发者来做,而不是由Genaro提供一个通用的数字ID?
END.
@bingw, I gave you a vote!
If you follow me, I will also follow you in return!