1
Plasma 或者Nervos 第二层扩容方案,和采用DPOS共识机制的EOS,都试图提升区块链系统的吞吐量和处理效率。EOS是通过减少参与共识的节点,缩小共识规模,缩短共识的时间,达到提升效率的目的,但是被人诟病的问题在于牺牲了部分去中心化的特性。
我在想Plasma 或者Nervos又是如何实现效率的提升呢?在去中心化这个层面,Plasma或者Nervos,和EOS相比,优势在哪里?是不是更加去中心化呢?
简单的理解,Plasma实现效率提升的办法是,把大量的交易放在互相平行,互不影响的子链上,来提升处理交易的速度和规模,主链通过保存子链提交的交易哈希,对子链进行治理和管理。既然有主链,子链之分,那么就分别对主链和子链考察其去中心化特性。
如Nervos的设计,主链为POW共识机制,能够保证主链去中心化的特性,这一点是毋庸置疑的。
但是当我把目光放到子链上,就发现问题了。单个子链上的处理方式,大概是用更少的节点来完成共识,这样共识的速度更快,处理交易的速度也就快了。从这个角度来说,子链上的做法和EOS提升效率的做法是没有本质区别的,都是牺牲了子链的去中心化,换来效率的提升。
虽然子链会把交易哈希提交给主链,保证提交的哈希的不可篡改和可追溯,但是如果子链存在中心化的作恶,数据本来就无效的,有问题的,在没有人监督举报的情况下,主链是毫不知情的。这种情况,和人们诟病EOS,担心的问题,如出一辙。
这两天我一直被这个问题困扰,难道效率和去中心化的并存是一个伪命题吗?分层系统也无法解决或者至少是一定程度的改善?直到我看到了Jan在Nervos公众号的文章《Don't trust ,Verify 》。Jan在文中的观点给了我很大的启发: 区块链网络中的全节点因为对区块头和区块体同时进行验证,因此相当于网络中的防火墙,防止不符合要求的数据在网络中扩散,因此全节点对于一个P2P网络至关重要;一个网络的去中心化不取决于出块节点的数量,而是全节点的数量。数量越多,网络越可靠。
以比特币为例,虽然出块节点的算力集中在小于10个矿池手中,但生产出区块不是共识的结束,只是共识的开始。区块会接受众多全节点的验证,全节点形成的网络就就像一道“防火墙”有效阻止了无效交易和区块的传播。全节点越多,这样的网络就越可靠。
从全节点的角度出发,我们再来看看EOS和Plasma 或者Nervos ,会是另外一番景象。
先看看EOS ,为了实现百万级别的TPS ,EOS依靠全网的选出了21个超级节点(出块节点),并要求出块节点使用最好的硬件来支撑高性能。但是,值得注意的是,同时也就要求网络中的全节点匹配高效昂贵的硬件来支撑高性能。问题来了,我们知道21个超级节点是能够得到网络补贴的,但是全节点则没有。那么很可能一般的用户很难有足够的动力去维护一个全节点,网络最终演化成一个没有全节点的结构。这时,出块节点既出块又验证,既是运动员,又是裁判。人们只能选择相信出块节点不会作恶。而在比特币的网络中,大量的全节点承担了裁判的角色,而出块节点仅仅是运动员。用户可以相信大量的全节点,不需要相信矿池。在没有补贴的情况下,全节点必须投入高成本维持运营,是问题根本所在。
那让我们回到Nervos或者Plasma的子链,再考察全节点面临的情况。和EOS会有不同吗?我能想到一个重大的区别,EOS网络中的全节点要验证整个网络中所有的业务产生的数据,而Nervos和Plasma ,因为将业务分配到不同的平行子链,每个子链中的全节点,只需验证所在子链的数据,而不是整个网络的数据。在整个网络业务总量相同的情况下,子链全节点的成本投入肯定低于EOS的全节点,当然具体的投入取决于具体业务场景的需求。而且理论上来说,网络可以根据费用情况对子链的任务进行调整和分配,控制主节点的维护费用在一个相对较低的水平。本质上,分层网络将总体任务进行分解给不同的平行子链,降低了单个子链节点的维护成本,就有可能使得子链拥有大量的全节点,依然保持去中心化的特性;而EOS只有单个网络承担巨大的任务,就会造成节点成本高企,最终没有全节点的局面。
当然,上面的分析中,没有考虑,在分层网络本身的复杂性,以及主链和多个子链之间的交互的成本。本人非技术出身,整个分析的用词可能不太准确,逻辑可能还有诸多漏洞,还请大家指教。
2
EOS真的没有全节点吗?
Jan在《Don't trust ,Verify 》中提到一个观点: 一个网络的去中心化不取决于出块节点的数量,而是全节点的数量。数量越多,网络越可靠。
比特币依靠大量的全节点对出块节点进行监督,保证网络的安全。
而EOS则有备选节点,扮演的角色类似全节点的功能,对超级节点的出块进行监督,在必要的时候可以顶替作恶的超级节点出块,虽然维护成本高昂,但是会获得代币的奖励 。只要生态发展的好,经济奖励能够持续,备选节点就不会退出。这个和Jan在《Don't trust ,Verify 》中,谈到的关于EOS可能出现没有全节点,出块节点既当运动员,又当裁判员的情形不一样。EOS的状况可能没有这么差。
我觉得这已经触及到一个根本的话题:多层加密经济网络和单层区块链网络(弱去中心化)相比,在网络安全(去中心化)上是不是更加优胜?
从出块节点的角度来看,前者把大量的业务放在不同的子链,子链牺牲一定的去中心化特性,保证高性能;而后者,也是牺牲去中心化特性,提升性能。两者网络都牺牲了一定程度的去中心化特性。
但从全节点的角度来考虑,前者可以通过主链调整子链上的业务规模,控制全节点的成本在较低的水平,促进尽可能多的全节点参与到网络,保证网络安全;而EOS 通过补贴备选节点,吸引备选节点参与到对出块节点的监督,保证网络的安全。两者看起来都有方案,弥补出块节点中心化给网络安全带来的隐患。
3
Jan 本人的回答
很好的问题。备选节点和全节点并不一样,全节点是无需许可人人能跑的。例如在bitcoin中,出块需要pow, 但是全节点人人都能下载软件跑一个,全节点可以执行所有验证,用户只需要信任自己运行的全节点。
eos中的备选节点并不是人人能跑的,数额有限。用户需要信任这些节点,而不是只需要信自己。
4
谢谢Jan的解答。
从这个角度来看,共识规模的不同带来不同等级的安全。
以前中心化的系统里,只有一个中心,我们只能选择信任它,零共识,安全等级低。在EOS里,有多个中心,共识规模有所提高但仍然有限,普通人无法参与共识,只能选择相信这些参与的节点,安全等级中等。在如比特币这样节点众多的网络里,共识规模是全球的范围的,安全等级更高,而且普通人可以自己成为一个节点,验证数据,安全等级又高一个层次。
未来不同的场景,对共识的规模需求不同,共识会分层,底层的共识最慢最贵,越往上,共识规模越小,效率越高,成本越低。多层网络的一个好处应该是可以同时满足对共识规模多样化的需求,而单条链共识规模是相对固定的。
5
星球里有小伙伴回答:
对于区块链网络系统而言,“不可篡改”是非常重点的特征,这是通过经济博弈的机制来决定的。。。去中心化的理解,应该是指不管进入系统的时间早晚,自由节点都有权力通过各种方式去验证区块链网络系统上面“不可篡改”的数据真实性。当然,验证的各种方式,并非一定要指全节点的方式,可以按照不同的信任需求和成本考虑,进行自由的决定。。。。全节点的数量越多,只是提供给”不可篡改“特性更大的稳定。
6
验证节点越多,可以对出块节点进行监督,更好的保证网络安全,这是从监督的角度来看。
回到出块节点本身,正如你所说,是不是可以通过经济博弈机制的设计来,从源头来抑制节点的作恶动机。就比如比特币系统,虽然大部分的算力掌握在少数几家矿池手中,但是他们为什么不作恶呢?因为作恶的收益,没有他遵守规则获得的经济收益大。EOS的情况也类似。
所以经济博弈机制是一道保险,如果有更多的全节点进行验证,那就是双保险了吧。不是所有的场景都需要上双保险,但是第一道保险是必须的。
7
小伙伴继续回答:
。。。经济博弈机制和全节点验证都很重要。不过,我相信,“时间”这个参数在整个系统中是需要好好考虑的。。。系统是在迭代的,在不同”时间“阶段的共识\网络等是有需求差异和性能差异的。正如ETH启动之初到现在以PoW方式运行,而到后期将按照PoS方式运行(虽然不确认矿工是否会同意执行切换)
8
在刚开始我的思考和Jan的回答里,我们考虑的是全节点的参与,就像防火墙,会阻止无效的数据和区块的扩散,对网络的安全有积极的意义。
后来,一个睿智的小伙伴加入进来,他提到了经济博弈机制。即使没有全节点或者很少的节点验证,有经济博弈机制,网络的安全还是可以保证的。比如EOS的节点验证可能是事后的验证,但是因为机制的设定是的作恶是有非常高的成本的,所以超级节点也不愿意作恶,甚至是犯错。所以,经济博弈机制就像一个隐藏在网络中的防火墙,从源头上就可以防止作恶。
从对网络安全贡献的阶段来看,经济机制超前全节点的验证。可以这么理解,经济机制就像法律或者规则一样,理性的人在正常的情况下,都会遵守规则,但是在非正常的情况下,可能情况是不可控的,谁也说不好,一个看着好好的人,在街上就会拿出刀来开始捅人 ,对吧。而全节点的验证,就像是安检一样,不管你是谁,你进地铁或者其他公共场合,就必须接受安检,以此来杜绝发生意外。
我相信,经济博弈机制对于大多数的系统可能就已经足够了,但是对于安全需求等级极高的场景,我们还需要引入全节点的验证。