改版中,提建议就可获得币视界股 
Polkadot让区块链世界实现万链互联
浏览数:746 

原标题:Polkadot类似于区块链世界的中国电信


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

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

gav6.jpg

之后由于种种原因,Gavin Wood离开了以太坊,成立了Ethcore,按照cpp-ethereum重新开发Rust语言版的以太坊客户端:Parity。Rust语言号称超高性能、超高安全、超高开发难度,代表着最新的编程语言技术,但还远未流行起来。Gavin Wood敢首先吃螃蟹,用它搞定了以太坊,性能上是Geth和C++客户端的近3倍。仅是平常速度快倒没什么,去年9月以太坊DevCon2开发大会的前夜,黑客利用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数据量,以太坊17秒470万Gas,一般复杂度的交易估计只能支持40笔,一个爆款ICO能堵上一天。如果区块链将来需要承载更多的事务,需要解决扩容的根本问题,大家也都意识到了这点,也有各种尝试。


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

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

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

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

overall_cn.png


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

平行链由很多固定身份的收集人管理,以收集交易手续费为激励,为中继链提供自己的块头和跨链交易相关的证明数据,这部分数据在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)首先看到了这个方向,准备早期潜伏,致力于这个领域的宣传和推广工作。

转载于:http://chainx.org/index.php?s=/news/index/detail/id/4.html