查看原文
其他

Polkadot类似于区块链世界的中国电信

2017-06-27 岳利鹏 因特链

【社区的PC端网站:chainx.org上线,公众号和网站的最新资讯会同步更新,欢迎关注】

 

       我之前翻译了Polkadot的白皮书,关注微信公众号,点击菜单就可查看,但白皮书过于专业,大部分非技术的同学都表示看不懂,我只想说后面太细节的我也没大看懂,这篇文章只是斗胆表达一下我的个人理解。


        在介绍Polkadot之前,不得不先说下论文作者:大名鼎鼎的Gavin Wood。大部分人会说:我只听说过中本聪和Vitalik神童。Gavin行事过于低调和高冷,不是中本聪这样的比特币创世纪人物,也不是Vitalik这样的以太坊象征性人物。深入研究过以太坊技术和历史的人,都知道Gavin Wood做为以太坊创始人的重要性。Vitalik发起了以太坊项目,他个人书写了最初的白皮书,然后发起众筹,组织开发,Gavin Wood作为CTO加入以太坊,之后撰写了宝典级别的黄皮书 YellowPaper,专业术语叫形式化证明,其实也不是数学公式证明,而是对以太坊最细节的逻辑和架构进行了描述,如果你是最大牛级别的程序员,不用照抄Go或Python的客户端,是可以直接对照黄皮书把以太坊重新实现一遍的。以太坊相对比特币复杂了一个数量级,黄皮书全世界能直接看懂的人估计也不超过一百个。之后他几乎是一个人写完了最早C++版本的以太坊客户端cpp-ethereum。另外以太坊还有个Python的原型展示客户端py-ethereum,和真正在用的Go语言的官方客户端Geth。

        之后由于种种原因,Gavin Wood离开了以太坊,成立了Ethcore,按照cpp-ethereum重新开发Rust语言版的以太坊客户端:Parity。Rust语言号称超高性能、超高安全、超高开发难度,代表着最新的编程语言技术,但还远未流行起来。Gavin Wood敢首先吃螃蟹,用它搞定了以太坊,性能上是Geth和C++客户端的近3倍。仅是平常速度快到没什么,去年9月以太坊DevCon2.0开发大会的前夜,黑客利用Geth的一个内存泄露漏洞专门组装了一个交易,让Geth客户端全部崩溃,留下Parity撑下了当天的开幕,好是尴尬。此后的两个月,以太坊遭遇重重攻击,由于部分opcode定价过低,又被黑客发送大量IO相关的交易使节点运行缓慢,Geth内存爆满,只有Parity由于本身架构的优势硬顶了下来。那段时间Geth天天升级客户端,才能勉强维持同步。Parity几乎一战成名,矿池节点纷纷从官方的Geth换成了Parity。

    之后在以太坊关于状态树清理的第四次硬分叉中,Geth又由于代码编写错误引发意外,与Parity走在了不同的叉路上,几十分钟后V神宣布Geth那条叉作废,全网一脸懵逼,你让那些还在用Geth的交易所、矿池、用户怎么搞,赶紧停止充值提现,停止挖矿,只能卸了Geth去装Parity。后来Parity的用户界面又甩了Geth上的官方钱包Mist几条街。

    以太坊动荡的2016下半年终于平静了,Ethcore也更名为ParityTech,正式从以太坊独立,并在去年10月份宣布了Polkadot项目,“史称”第三代区块链技术,主攻跨链任意消息通信。现在的区块链技术,包括比特币和以太坊,虽说是全世界上万个节点,但本质上只有一台普通PC的运算能力,否则一般用户的电脑就不能作为一个全节点同步全网数据,然后可以不信任任何人地在本机上做运算做决策。如果没有全节点,用户就要到某一个全节点那里去读取数据,那万一他给你的数据时假的呢,诱导你做出错误决定。普通电脑cpu、带宽、内存、硬盘都有限,所以现在的比特币10分钟只有1M数据量,以太坊15秒470万Gas,一般复杂度的交易只能估计支持40笔,一个爆款ICO能堵上一天。如果区块链将来需要承载更多的事务,需要解决扩容的根本问题,大家也都意识到了这点。


    另一方面目前的链没有互通的功能,以太币和比特币的兑换只能通过中心化的交易所进行。你充值BTC给交易所,等半小时,挂单买成ETH,再提现到自己的以太坊地址。这个中心化的转接场所是完全违背区块链去信任的自由精神的,你充值到交易所的币,其实已经完全不是你的了,交易所可以直接跑路,黑客还可以偷走,然后大家也经常被各种交易所的不作为问题搞得神烦。这种跨链代币兑换的问题还是比较基本的,另一个跨链项目Cosmos主攻这个方向。

    Polkadot的志向更加远大,比如以太坊目前无法直接读取现实世界的数据,需要一个用Oracle的概念由某个人输进去,单条以太坊也承受不了过多的逻辑。以太坊的未来方向是分片,好多条相同技术的以太坊可以相互任意通信,执行合约等。分片是同构跨链,这是个很好的方向,问题是以太坊是否能垄断区块链世界。它的技术满足不了一些关于隐私、性能、商业运行等方面的需求,必然会有各种区块链技术出现,包括公有链的Zcash、Ripple、IOTA、IPFS等,还包括各种联盟链产品等,当今目前又有各种山寨链出现,不论靠谱程度高低,他们必然共存于世。

    其实单条区块链不管多少个节点,都类似于一家网站的服务器,为用户提供了一种特殊的服务,例如比特币就是阿里巴巴,以太坊就是腾讯,Zcash就是百度,而跨链就是他们之间的那个互联网协议的,只有都连起来,才能为用户提供全部的服务。而这种连接不能是目前交易之类的中心化权力机构进行转发,必须也是一条去中心化民主共治的链。所以说Polkadot类似中国电信这样的基础设施服务商,提供网站之间的通信带宽服务。中国电信不提供什么网店和社交服务,Polkadot也一样,没有任何的应用,只是单纯地消息路由。我们虽然不大感受的得到中国电信的存在,但谁不是每个月要交有线无线的月租费。为什么只是说中国电信呢,因为也可能有中国网通,有线通,华数之类的服务商,跨链这个领域Polkadot也不会全部垄断,但它的网络效应会比单条链要高更多。

    Polkadot的论文开头提到,指出目前区块链系统无法伸缩的原因是:把共识系统中的一致性和有效性绑定的太死了,Polkadot是个异构的多链框架,可以从根本上解决这个问题。有效性的概念是比如我有10个比特币,我转给A是有效的,我转给B也可以是有效的。但一致性的概念就是我只能转给其中某一个人,即使我发出了两笔有效的交易,最终网络会共识出一条最长链来达成一致,另一个交易会被丢弃。更加概括性地讲就是有效性负责运算,一致性负责投票,一个是强CPU依赖的,一个是强出块权依赖的。运算只要有CPU就行,POW投票需要买矿机,POS投票需要买权益。那么Polkadot如何分离这两者呢,它是一条中继链连接多条平行链的系统,中继链负责一致性,平行链负责有效性。这个平行链不一定是条链,也可以是其他类型的系统,由收集人管理。中继链是Polkadot的主权益代币链。某条中继链还可以是另一条中继链的平行链,这样就可以形成多级嵌套关系,达到真正的可伸缩性。比如1条中继链管10条平行链,那么10套这样的中继链再配一条上层中继链,就可以连接100条平行链。

    

中继链采用POS共识算法,将主要借鉴Honeybarger,还有Tendermint。假设中继链有144个验证人,会每隔一个块或更长一点时间,随机将验证人分组,然后分配给各个平行链。每组验证人负责这条平行链的数据验证,然后再整体完成中继链区块的共识。大体结构使中继链区块中包含所有平行链区块的块头和类似SPV的树形证明数据,包含跨链交易执行所需的必要数据。然后每条链都有一个入口队列和出口队列,想外发的交易填进出口队列,等待被中继链路由;接收到的其他链的消息会被填入自己的入口队列,然后自己去执行。


        平行链由很多固定身份的收集人管理,以收集交易手续费为激励,为中继链提供自己的块头和跨链交易相关的证明数据,这部分数据在Polkadot里称为平行链的候选块,将来由中继链的验证人随机选定。由于平行链也不一定真有一条链,所以这里的块也是泛指。【特别声明,以下是我的理解,并未在论文中详细说明】:中继链会分成两类,第一类是类似以太坊和比特币这样有自身共识系统的区块链,他们有自身的POW矿工来维持链的运转,他们不能直接作为平行链参与到Polkadot网络中来,而是需要新成立一些收集人组建转接桥系统,将以太坊区块的数据整理为中继链所需的格式,这个转接桥系统才是Polkadot的平行链。第二类是还没有出现的过的区块链系统,他们将来的出块人就是收集人,他们链区块的决定权是由中继链的验证人决定的,这类系统可能才真正是Polkadot所设想的未来链。

    今年一个很奇怪的事情是,ParityTech用Rust重写了比特币的客户端,我一开始不理解比特币客户端已经是历史悠久了,为什么要重写一个,那些矿池也不会为了快一点去换吧,你们怎么不赶紧去做Polkadot的中继链开发呢。后来想了想知道,这个客户端就是Polkadot的前奏,开发出来也根本不是为比特币现有的矿池做的,而是为了比特币的收集人系统做的,并不参与比特币的出块权争夺,而是为了能更方便地整合将来的上层比特币收集人系统。他们需要维护一个比特币的全同步只读节点,还要参与数据上报,还要在中继链上有权益记账,还要维持中继链的全节点,所以Gavin Wood干脆就用Rust重新写一个比特币,而不是比如用c++的比特币再套上收集人的逻辑。

    以太坊的Parity客户端最近也不更新了,也在紧锣密鼓地为Polkadot进行改造,需要先为这两大系统做出触手,才能对接中继链。所以中继链是一步步根据现有区块链的规则去设计的,而不是无中生有的,每新出现一种区块链技术,中继链的验证规则和路由规则都会重新设计,需要硬分叉级别的改造。不过论文中还提到,以后可能会做出一条纯净的中继链,本身不包含任何平行链的协议,而是用WebAssembly等将区块链的协议做成运行时部署的,再加上中继链的参众两院治理机制,管理中继链的升级。不过这种过于高级,Gavin Wood说还是以后再弄吧。

    一旦中继链这种系统成熟了,平行链其实不用再自己管理共识了,上面所说的第二种平行链就会诞生了。由中继链直接管理共识,平行链收集人只是处理交易,也就不再有转接桥系统了。其实这两种也没有本质区别,只是这一致性和有效性的分界线到底在哪里,Polkadot只是提供了一种选择性。

    所以Polkadot论文中专门总结了它只做两件事情:合并安全性(Pooled security)、 去信任的跨链交易性(trust-free interchain transactability)。合并安全性的意思就是大家不用都去各自建立一套昂贵的POW挖矿体系,或者新建一个代币没什么价值的POS机制,而是将共识一定程度上让渡给中继链,你就能获得全网安全性的累积。去信任的跨链交易性的意思是所有链的块头都被整合在一起,平行链中要参与跨链的用户和收集人都在中继链开户,中继链管理着跨链交易手续费和跨链数据的惩罚。

    ParityTech是低调做事的人,不像目前行业里一纸白皮书就出来圈钱了,Polkadot的共识研究部分去年被英国政府资助,如果他们需要资金肯定也会有很多VC一拥而上,但我猜为了网络初始的去中心化特性,他们会有一次众筹,而且会同时支持BTC、ETH、ZEC三种货币,具体什么时候,他们也不着急,我也不知道,预计在等待法律流程结束,一两个月内?!


    Polkadot论文里写的预计上线时间是两年,现在才刚过去8个月。技术过于高深,看不懂没关系,跟对人就好了。Polkadot和Cosmos也与今年初低调成立了Interchain Foundtion,链互联社区(chainx.org)首先看到了这个方向,准备早期潜伏,致力于这个领域的宣传和推广工作。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存