即使是阿里巴巴,也是靠各种多层次,多进程,分布式存储+计算,堆大量服务器来实现的每秒百万级以上的交易。这样巨大的一个量,在去中心化的区块链上实现,有多么难。一个简单的交易和一个多步骤且有复杂的业务逻辑的进程比TPS,是多么的没有意义。
但凡看到白皮书里提到百万TPS的区块链项目,第一反应就是表示怀疑。不是说完全不可能,而是非要把高TPS作为一个卖点,而且还要说得这么高,就是没有IT常识。以为人有多大胆,地有多大产呢。只能唬一唬外行。百万TPS,谁可以做到?阿里巴巴可以做到!那我们首先就来看看阿里巴巴是怎样处理每年双十一晚上的高并发交易请求的吧。
在下面这张图上,从上到下我们可以看到,阿里巴巴把交易请求在很多个层次进行了各种分配:
一,通过DNS轮询实现机房间的负载均衡。在DNS服务器中配置多个IP地址,每个IP地址对应到不同的机房里的虚拟IP。 二,LVS和F5是工作在网络第四层的负载均衡解决方案,其中LVS是软件,运行在操作系统内核态,可对TCP请求或更高层级的网络协议进行转发。 三,在多台服务器上分别部署网络服务器,使用反向代理软件(Nginx)把请求均匀分发到每个服务器上。 四,按照业务板块来划分应用代码,作出不同的应用如淘宝,天猫等等 五,引入企业服务总线ESB屏蔽服务接口的访问差异。 六,引入容器化技术实现运行环境隔离和动态服务管理。所以在双十一的晚上,可以很方便的部署更多的服务器来支持应用。 七,复用的功能抽离成微服务,所以我们可以看到有用户管理服务,支付服务,订单服务等。 八,引入分布式文件系统,NoSQL数据库和搜索引擎等技术,为数据库减压,同时也提升数据调用效率。 九,数据库内部,还采用了数据库读写分离,按业务分库,和大表拆分成小表等优化。
原文可以在这里读:https://segmentfault.com/a/1190000018626163
所以,看到了吧,即使是阿里巴巴,也是靠各种多层次,多进程,分布式存储+计算,堆大量服务器来实现的每秒百万级以上的交易。这样巨大的一个量,在去中心化的区块链上实现,有多么难。一个简单的交易和一个多步骤且有复杂的业务逻辑的进程比TPS,是多么的没有意义。
还有一个项目里常见的,就是说解决了著名的区块链不可能三角。什么是区块链不可能三角?就是区块链的安全性,高效性,和去中心化,三者不可兼得。我想说的是,在一条区块链上,说是不可能就是不可能,没有必要偷换概念说成可能。如果说有一种可能,就一定是在保证安全性和去中心化的基础上,把交易分流来实现高效。所以,解决方案无外乎下面这些:分片,分层,侧链,子链。我们通称为多层结构吧。
所以,今天我们就来研究一下实现或号称实现了多层架构的公链。
这曾经是一个明星项目。它的主打亮点,就是分片。先介绍一下分片。分片其实是一种传统数据库技术,它将大型数据库分成更小、更快、更容易管理的部分。每个部分就叫一个片(Shard),支持并行处理。所以分片可以大大提高数据的处理能力。在区块链中,分片就是把网络上的所有交易分成不同的组,每个组就是一个片,由各个节点组成的分片同时进行处理,把工作分散到每个分片,加快了处理速度。它分为状态分片、交易分片和网络分片三种类型。所谓网络分片就是把网络中的物理节点分配到不同的分片中,构建起单独的分片网络以支撑上层交易状态;交易分片是把交易分配到不同的分片进行共识,全网可以同时对不同的交易进行打包验证;状态分片就是把完整的账号信息存储在各个分片中,每个分片内各自维护部分的账本信息,状态分片涉及到跨分片数据同步,跨片交易的问题,在三种分片中是最复杂的一种。
Zilliqa采用的是POW共识,实现的是交易分片,而不是状态分片。每个分片定期轮换掉少量节点,采用PBFT方式在分片内共识。
全博士的创始团队,简单明了的改进方式,务实的宣传,而且确实在测试环境中实现了近每秒1000次交易。所以当初这个项目很受投资人青睐。我在简书上发的第一篇博客,就是介绍它。只可惜上线后TPS没有更大的优化,与EOS等采用DPOS共识的区块链比较优势并不明显。加上创始人相继离开。Zilliqa前景并不乐观。
最早提出分片概念的其实是以太坊。早在2016年就开始有分片的提案出来。但是以太坊太大,升级需要考虑的安全因素很多。所以升级的道路漫长。直到今年12月,伊斯坦布尔升级,才开启2.0之路,但是真正要实现分片,估计还有几年之久。不过以太坊的分片模式,还是值得探讨一下。它将分好几个步骤实现。
第一步,将推出信标链。这是ETH2.0生态系统的核心,成为其他分片的安全和验证的根源。信标链部署完毕后,将使用 PoW/PoS 混合机制进行股权证明。
第二步,实现状态分片,并建立分片之间以及分片与信标链之间的通信方式。把用户分到不同的片上,实现状态分片。然后把状态在信标链上终极认证。
第三步,实现完全分片和集成的ETH2.0。分片将从「基本数据制造者」升级为「全功能链」。并且引入全新的以太坊虚拟机 eWASM。
实际上以太坊对分片的规划还有很多不确定的地方,暂时只有一些规划和提案,比如:
在节点分片的管理上,信标链需要通过采用随机数协议和可验证延迟函数来提供随机性和不可预测性,防止潜在的攻击者试图预测他们的节点将被分配到哪个分片之中。
需要设计一个各个分片之间的交互需要遵循一个特殊的协议,来确保效率和安全性。分片还需要知道何时适合进行彼此通信,并且只在需要时才进行通信。
以太坊作为最繁忙的区块链,一发而动全身,每一次升级都需要缜密的计划,各方的配合。所以虽然笔者坚信ETH2.0将成功实现,并将帮助以太坊实现大规模的扩展和采用,但是市场等不起。实际上已经有不少全新的公链项目已经实现了以太坊提出的分片理论。
Harmony实现的是状态分片,也就是说账本数据也做了进行了分片处理。它就借鉴了ETH 2.0的理论,分片架构包含一条信标链和多条分片链。
Harmony在分片中采用的是优化过的PBFT。优化部分就是加入了BLS签名,使得消息量从 O(n*n) 变成了 O(n)。
Harmony也通过运行分布式随机数协议和可验证延迟函数来为分片提供随机性;信标链采用POS,接受节点的抵押代币,并且对子链状态进行终极确认。
Top Network采用的是网络分片。它设计了三层网络。上层是类似ETH2.0的信标链的信标网络,对分片进行管理;分片属于共识网络,对交易进行处理;另外还有一个审计网络,对分片已经验证过的交易做审计,以防止分片内交易被篡改。当然还有一些创新,如采用简化了的DAG思想,在交易级别做共识,而不是基于区块。因此交易确认快。但是,明明承认单片TPS也就500的样子,也没有实际支持到任何高并发的应用,却在各种宣传中说单链处理能力超过30万TPS,市场营销很不专业。
MOAC应该是最早提出母子链架构的公链,并且在2018年就主网上线。后来MOAC的架构更名为基础链和应用链。基础链为应用链提供安全和验证的根源。应用链从基础链中生成,与基础链和其他应用链共享账户信息,但是是一条独立的区块链,运行独立的交易,保留账号的状态。然后定期通过刷新把状态刷新到基础链上。这个实现方式被后来的很多公链借鉴。
MOAC的还一个创新就是应用链可以支持多种共识,用户可以根据自己的业务需求选择共识机制。这比简单的分片又有进一步的升级,因为这种对多种共识的支持可以让MOAC支持多种完全不同的应用,所以MOAC是真正的为商业应用而生的区块链。分布式存储项目FileStorm就是在MOAC上实现的一条应用链。
在MOAC的发展路线图上显示,MOAC未来还将支持多层架构。任何一条应用链都可以成为新的应用链的基础链。这样的架构才能在未来支持到像阿里巴巴这样需要高吞吐高并发处理的商业帝国。
Nervos因为被火币选为区块链合作伙伴,又在美国合规融资2500万美金,成为是公链当红炸子鸡。他们提出的Layer1和Layer2的架构,跟采用信标链和分片链来扩容的方式没什么两样。但是Nervos项目显然融入了很多工程理论和开放思想。Nervos的Layer2,可以是一条独立的区块链,可以是一个分片,一个状态通道,甚至一个DAPP。Layer2自由发展,只有非要用到安全问题的时候才调用Layer1。走出简单的TPS扩容想法,从实用性出发,增加分层的多样性,Nervos反而将扩展性变得更高。这一点非常值得学习。
最后再提一下这两个项目。它们用不同的方式实现跨链。其实也是把不同的链连接起来变成一个生态。未来的公链,很多也会通过支持Cosmos或Polkadot协议,来跟其他的公链做数据和价值交换。
从上面的这些公链分析中,不难看出。分层架构,或者说多链生态,是未来公链的大势所趋。而且,要支持复杂的商业逻辑,和不同的应用对数据存储和交换,对计算性能要求的不同,未来的公链一定要支持复杂的架构,多样的共识,合理分配存储和计算资源,但是通过标准的API接口,让终端用户使用更方便。
另外,还有一个常常被忽视的部分,就是区块链对节点的经济激励。经济模型的合理与否是公链能否长久运转的关键。复杂的架构将会带来节点奖励的差异,差异过大就会影响到区块链的安全性。公链大多从POW转向POS,可是POS共识并不像POW那样经历过时间的验证。用户在公链上发行的加密资产,与公链原生通证应该怎样互相影响,未来会形成怎样的经济体。再加上无币的联盟链,是否可以与有币的公链并存。这些都是全新的领域,需要进一步开发。
一个公链新尝试 所以,综合各种分片公链的优缺点,笔者在这里提出一些新的想法:
区块链的核心是共识。最先要达成共识的是技术开发人员。欢迎区块链专家和编程高手一起来跟我们一起探讨这些新想法。如果能达成共识,然后共同开发,这样实现的公链一定大有市场。如果能一起技术突破,实现像阿里巴巴一样高效的区块链系统,就一定能承载赋能实体经济的重任。
聊到这里,可能有人会问。FileStorm就是一个基于区块链实现的分布式存储应用。做好存储不就行了。为什么要回过头来做公链呢?这是因为,光靠存储是不能充分利用数据的价值的。还需要合理的数据共享和高效的计算。计算的三大要素是存储,计算和网络,区块链要成为真正的超级计算机,就必须兼顾到这三点。FileStorm区块链已经实现了存储,加上区块链,未来再把计算融入,就能让数据产生更多价值,为产业赋能。
FileStorm是在MOAC上实现的一条应用链,是MOAC的延展。而MOAC是支持多层链架构的。FileStorm希望能把自己的创新加到MOAC应用链的多层架构中,打造一个全新的分布式存储多链生态。为各种去中心化应用提供更好的区块链服务和存储服务。
国家鼓励区块链技术的自主创新。FileStorm在对接区块链应用中积累了很多经验,可以用于完善自身,并且争取有所突破。
比如FileStorm的DPOS共识,就可以轻松改造成联盟链,并且把分布式存储做为区块链服务(Blockchain-as-a-Service)的一个重要组成部分。让FileStorm可以服务更多的政企单位和中小企业。带着公链思维做联盟链,才能更好的促进社会价值的平均分配,和行业的公平竞争。
作者:区块链_献哥
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!