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所设想的未来链。