公链史记从鸿蒙初辟到万物生长的十年激荡
“当这个时代到来的时候,锐不可当。万物肆意生长,尘埃与曙光升腾,江河汇聚成川,无名山丘崛起为峰,天地一时,无比开阔。”这是财经作家吴晓波在撰写《激荡三十年》时,对一个突飞猛进的伟大时代的描述,区块链也是如此。在经历了忽视、追捧、质疑、纷争......,区块链行业依然锐意向前,打破一面面固有的认知之墙。
但历史总是任人打扮的小姑娘。我们在讨论区块链发展时,总是不得已穿梭于其他行业的意见领袖对区块链的侧写之中,亦或听到许多区块链项目团队掺杂了自身利益的表达。
而在对于区块链团队的技术贡献,尤其是对国内团队的判断上,也往往是建立在感性的,带着主观色彩的表达之上。
可见区块链行业,缺乏系统化的历史沿革描述,这不利于这种全球化技术今后在国际的沟通。
感慨至此,事情总是要有人去做的。作为国内最早一批从事区块链研究,并且深扎行业至今的老兵,我们也希望能为再行业做一些基础性的工作,因此,我们将以公链为序幕,展开区块链十年激荡篇章。
公链是区块链的基础设施,是最接近于区块链本源理想的技术形态,因此,了解公链的发展就变得十分重要。我们把公链的历史大致分成三个时代:
1.鸿蒙初辟:史前公链时代
2.天地初开:公链单机版
3.万物生长:公链分布式版
1. 鸿蒙初创:史前公链时代
一生二,二生三,三生万物。
很多人进入区块链行业,都是先从研究比特币白皮书开始的,比特币作为区块链技术第一个及其重要的应用,也得益于三个重要的技术准备。
技术一 非对称加密
比特币作为一种现金支付体系,首先要解决的是归属问题。
非对称加密就是区块链的解决方法,最早的非对称加密算法是 rsa,是1977年由罗纳德·李维斯特、阿迪·萨莫尔和伦纳德·阿德曼一起提出的。
不过比特币并没有采用 rsa 算法,原因是rsa的公钥长度太长,占用空间太大。比特币使用的椭圆曲线加密算法是 1985年提出来的,离现在大概有30多年了。
技术二 p2p技术
分布式网络中动辄就要存在上万个节点,处理每个节点间的通讯问题是重中之重。而解决这个问题的技术,也是一门古老的技术 p2p 技术,p2p 技术在互联网发明之初就大行其道,这项技术的提出最早是在 1969年,离现在差不多有 50年了,但是技术的成熟大概是在 2000 年左右,p2p 现在已经渗透到每个角落,包括你在qq,微信上传输文件,用迅雷下载之类的都会用到这个技术。
第三个技术 工作量证明共识算法(pow)
区块链网络如果想稳定运行,其安全性必须通过技术手段得以保证,在众多安全问题中,比较严重的就是有节点妄图作弊,篡改区块链上的数据,pow共识算法就可用于解决这个问题。
pow(proof of work)工作量证明机制,要求对方服务前,必须出具某种工作证明机制,这并不是一个新概念,主要用于防止拒绝服务信息和反垃圾信息。类似于用于防止dos和垃圾信息的机制hashcash,它最早在2002年被提出,不过最早的应用不是用于虚拟货币,而是用于解决垃圾邮件问题。
邮件的发送方需要计算一个固定难度的hash,这样发送一个邮件就需要大量的cpu 的消耗。比特币的原理实际上和这个类似,只是发送邮件改成了打包区块,如果你要打包区块,那么你得先计算一个指定难度的hash。而比特币保证全球的节点,要求平均十分钟才有一个人能计算出这个难度的hash,这样上万个节点每时每刻都有人打包区块时,不至于引发混乱。另外如果有节点妄图篡改之前区块数据以威胁网络安全,那么他就要重做当前区块和被篡改区块间所有的区块,并比所有其他节点先完成这一系列操作,可想而知,这种作弊的成本是及其高昂的,通过这种机制,比特币网络得以实现安全运行。
以上三点不难看出,在比特币的诞生之前的很长一段时间,公链技术都已经准备好了。区块链新世界的开辟只是需要一个扳机,而扣下这个扳机的,就是2008年美国次贷危机引发的全球金融危机。人类金融体系的周期性问题让大家意识到,传统中心化的金融机构所维持的经济结构不仅十分脆弱,而且漏洞颇多到了不得不考虑大变革的地步,正是这样强烈的需求,比特币横空出世。
2. 天地初开:公链单机版
区块链新世界的开辟,要从比特币的诞生说起。
比特币的诞生无疑是划时代的,但是这并不意味着比特币是一个完美的产品。比特币最大的缺陷就是无法支持大的吞吐量。受制于当时的技术和需求,比特币被设计成了一个单机软件,一台家庭个人电脑,就可以运行出一个完整的节点。这意味着就算10亿台电脑都运行比特币节点,比特币的性能还是不会提高,整个系统的吞吐量受限于单台机器的性能。但比特币的诞生,却带来了巨大的思想解放,让大家意识到这是一个全新的世界,无数怀揣信仰的人开始试图改进比特币,以太坊是第一个比较有影响力的项目。
以太坊虚拟机的是与非
以太坊和比特币的唯一区别就是虚拟机编程能力的区别。可能很多人还不知道,比特币也有一个脚本,这个脚本的能力非常有限,并且考虑到安全问题,还刻意的做了限制。而以太坊在虚拟机上则表现得过于大胆,所以引起了一系列的安全问题,而且至今这种潜在的安全隐患仍然存在。众所周知,允许用户在链上编程是一件非常危险的事情,但却又必须去满足的需求,这就像我们平时用的浏览器,浏览器内嵌了javascript引擎,但是同时,黑客就可以通过javascript引擎的漏洞,通过脚本来攻击浏览器。在这里以太坊做出了取舍,它让区块链拥有了编程能力,其本质代价是牺牲了安全性。最近facebook提出了一个叫做 move 语言,试图解决 evm的缺陷,但是,从业界软件工程的实践来看,允许用户编程会大大扩大攻击的面,系统的安全性仍是今后悬在区块链网络上的达摩克里斯之剑。
eos 并不是划时代的产品
以太坊解决不了吞吐量问题后,eos应运而生。但是,eos不是通过技术创新来实现吞吐量的,而是通过让系统更中心化来实现高性能。以太坊牺牲了比特币的安全性,eos牺牲了比特币的去中心化的特性。同时,eos 也减掉了以太坊真正的性能瓶颈 mpt树,这样通过mpt树的方式创建轻钱包的功能成为不可能事件。通过一定的妥协措施,eos 的确做到了性能的提升,但是,这肯定不是未来真正的区块链解决方案。
区块链世界初开,诞生了各具优势的项目,他们根据各自的方向在开辟不同的道路,后来者将在三条路上探索前行,开枝散叶。
3. 万物生长:公链分布式版
纵观互联网发展史,最初人们搭建网站,只用一个单机版本的数据库就可实现,但随着业务的发展,单机版本已不能满足要求,分布式数据库随之产生。在这里我们也不得不感叹,历史总是惊人的相似,因为区块链世界也延续了这样的发展趋势。
区块链技术已经进入更加深入的商业化结合阶段,伴随着业务逻辑的复杂,单链架构成为历史只是时间问题,分布式版的公链系统将成为主流,分布式公链系统的特点是节点越多性能越高,因此衡量此类公链的重要指标之一,就是看节点数量。
目前,较为主要的分布式公链有cosmos 模式 和 平行链模式两种,我们将分别研究列举。而更重要的是,许多中国团队更早的看到了未来的发展方向并提前布局。可以预见,在分布式时代,中国的区块链企业有望实现全面超越。
cosmos 照搬了互联网模式上链
互联网是由无数局域网连接而成的,cosmos也类似,很多条公链通过hub互相连接,构成一个大的区块链。这是个绝妙的想法,甚至未来可能成为区块链全球协议的一部分。但是,cosmos却仍然有两个问题没有解决:
1. 单链的性能依然没有解决:这种模式与eos类似,一定程度上牺牲了去中心化。
2.子链搭建成本非常高:cosmos希望汇聚更多的链,但它却忽略了成本问题。
这种模式下,一方面搭建一个链的成本很高,几乎等同于搭建一条公链,同时安全防护的成本也十分高昂。比如链上21个节点,如果存在ddos攻击(distributed denial of service:分布式拒绝服务攻击),或者被黑客入侵,21个节点全部被黑客数据删除,那么可能这条链就永远从地球上消失。
技术进步的终极追求是便利生活,纵观历史上众多伟大的科技创新,最终都降低了人们的使用成本。
第一个支持平行链的公链: 比特元
分布式版公链还有还有一个很火的项目叫波卡,其核心技术价值在于parachain概念,不过这种概念目前还没有落地。但让我们很意外的是,其实parachain-平行链其实早就已经实现开发,甚至已经有一条名为比特元的公链在2018年就开始支持和运行,整整领先于行业1年时间。然而让我们惊讶的是,为什么如此重要的技术突破,竟很少有行业者观察到并重视起来,反复思索之后我认为,究其原因,可能是人们完全没有意识到平行链概念意味着怎样的突破性意义。
那么,平行链的本质是什么?
一句话概括可以理解为:共识安全由主链保证,业务逻辑由平行子链实现
平行链架构分为一条主链和若干条平行链,主链与平行链间即独立又平行,形成了一套高性能、保证网络安全稳定等特性的系统,而最重要的是在这条系统上搭建平行链,成本非常低。
平行链模式可以和cosmos做清晰对比。cosmos 的数据由每条链管理,但是平行链则完全不同。以比特元平行链为例,比特元上的平行子链数据是全部写入比特元主链的,也就是说,cosmos的共识是在自己的子链上完成,平行链的共识是在主链上完成。共识完成后,数据同步到平行子链,由平行链完成运算,校验。比较有意思的是,比特元的平行子链可以像eos一样搭21个节点,然后通过把执行结果写入主链的方式,在平行子链上又做了一层共识。比如,平行子链发生了前文提到的攻击行为,数据全部被删除了,这条链依然可以从主链下载下来数据,重新恢复出来。
此外还有一个非常重要的问题,就是区块链的性能。
试想一下,主链要写所有平行子链的数据,很可能出现性能的瓶颈。实际上,这个还是单机的一个思维模式。因为,主链上没有状态数据,分片处理变得非常容易,也就是主链很容易实现分布式化。这种模式下,主链不是每个节点都会保存所有的数据,节点数越多,系统吞吐量就越大,性能会更高。
结语:
区块链技术发展至今,各种区块链项目你方唱罢我登场,让人眼花缭乱。本文摒弃了繁杂的内容,单纯根据区块链的技术特点,进行研究和陈述。从技术特点上可以将区块链系统分成两代,重要的标志就是整个区块链的吞吐能力是否可以随节点数的增加而增强。分布式版本的区块链系统,将能支撑更多的用户,适应更复杂的应用场景,但是同时开发的复杂度差了不止一个数量级。
自比特币问世至今已有十年,行业经历过波澜壮阔,其中精彩足以成著;
但十年又很短,区块链技术的应用如今还是萌芽,我们更期待他将来会成长为怎样的参天大树,结出怎样的花朵和果实。
上一篇: 创客之星王桂超:成功或失败,只差一个坚持
下一篇: 电商论道:林夕阁采访草根站长王彦林