Polkadot白皮书阅读笔记

Polkadot白皮书是Gavin Wood博士撰写的一篇关于区块链异构多链系统之间互联互通的技术构想。这个系统可适用于任何区块链系统,用于扩展性能和延伸功能。

Gavin Wood博士行事相当低调,他是以太坊的创始人之一,也是以太坊Parity项目和智能合约语言Solidity的创始人。世人都称Vitalik Buterin是V神,实际上没有Gavin Wood博士也不可能有以太坊的今天。当年Vitalik撰写了以太坊的白皮书,构思了以太坊的架构,但直到Gavin Wood加入,才让以太坊的开发走上了正轨,并逐步成熟。因此Gavin Wood博士对以太坊的发展和区块链的贡献都足以铭记史册。

区块链技术发展至今,虽然取得了巨大的成就,但也凸显出越来越多的问题,其中关于区块链网络的可扩展性就是最为人诟病的问题之一。而Polkadot项目就是Gavin Wood博士提出的一种扩展区块链网络性能的构想。

以下所有内容皆为笔者按自己的理解总结汇编自白皮书。

自2008年中本聪发表比特币论文标志区块链技术的诞生以来,区块链技术发展至今,已经在以下五个方面遇到了巨大的瓶颈:

1. Scalability(可扩展性):系统处理一个单笔交易,需要占用多少处理器资源,多少带宽资源,多少存储资源;在高峰期,系统每秒能处理多少笔交易?

2. Isolatability(隔离性):在同一框架内,各方迥异的需求能在多大程度上被最大化的满足?

3. Developability(可开发性):现有的开发工具能解决开发者的问题吗?有足够的教育资源吗?这些资源和工具是否被合适的整合?

4. Governance(可管控性):现有的网络系统还有进一步发展的空间吗?现有的去中心化系统中系统所作出的每一个决策都有足够的包容性,合法性和透明性以有效地引导系统发展吗?

5. Applicability(适用性):某项技术真的解决了该领域的刚需吗?是否技术离实际需要解决的问题还有一定的鸿沟?

Polkadot试图对前两个问题(Scalability和Isolatability)提出一个构想方案。

Polkadot是一种网络协议,是一个开放,开源的项目。构想中的第一个版本名为“Parity Polkadot Platform”(简称PPP),将包括完整的协议实现和各种API接口。它将是个通用的协议栈,不依赖于任何特定的公有,联盟及私有区块链系统。

在全面展开Polkadot构想之前,我们先看看现有的区块链项目及其特点:

1. 2014年Chain fibers项目应运而生。这个项目提出了中继链+同构多链的构想。同构的多个区块链之间可以进行透明无碍的互通互联。Polkadot从该项目中得到启发,将采用该项目主要的体系架构。

2. Factom项目无需考虑全局状态,因而给系统带来了较好的可扩展性,但项目的不足之处在于能解决的问题非常局限并且涵盖范围狭隘。

3. Tangle使用有向无环图(DAG),让新交易通过验证老交易的方式得以产生。但如果交易状态的改变激增,这种方式将难以应付。如果我们使用UTXO模式,配合有向无环图就能把Tangle系统限制为一个纯粹价值转移的系统,处理起来就容易很多。

4. 异构链。这里说的异构链通常指各类型的侧链。最初侧链方案的提出是为了解决比特币系统的扩展问题,让比特币和各种侧链能通信。在某种程度上,这些侧链方案只能算比特币网络的延伸(extensibility)而算不上扩展(scalability)。

5. Cosmos是个类似侧链的多链系统。在这个系统中,每一个链都会和主hub链进行通信。每一次通信完毕后,通信的结果会被返回给这次通信的发起方。不过项目目前还不成熟,尚有不少细节待完善。

6. Casper是以太坊现在的重点工作项目。它着重解决以太坊共识机制的问题,将把以太坊从PoW最终转到PoS,因此这是个非常复杂的项目。相对而言,Polkadot会简单很多,并且两个项目的目标也不同。Casper的主旨是实现PoS共识机制,而不是实现可扩展性(scalability),并且最终部署Casper以太坊必须要进行硬分叉。Polkadot的目标是区块链的可扩展性和可延伸性。它能包容任何未来新的区块链系统,并且不需要区块链网络进行硬分叉。它和以太坊几乎没有什么关联性,也不需要以太坊做什么特别的工作就能和它进行通信。

因此Polkadot的定位是个可扩展的异构多链系统。

Polkadot系统中有一个中继链(relay chain)和若干相互之间独立的平行链(parachain)。

Polkadot的设计要考虑以下几个方面:

1. 要有可靠的安全性,隔离性和通信能力,让各种平行链能根据自己的需求利用系统不同的特点。

2. 为了让该系统能不断升级改进,必须在系统中加入一定的管控机制。

因此Polkadot系统必须具备这几个特点:

1. 最小化(Minimal):功能越少越好。

2. 简单(Simple):能放在平行链或者其它中间件的功能就不要放在Polkadot里。尽量避免系统复杂化。

3. 通用性(General):不应该对加入系统的平行链设置各种限制和先决条件。

4. 健壮(Robust):Polkadot应该是个牢固可靠的底层架构,要尽量减小系统遭受黑客攻击的可能性。

根据这些构想和思路,Polkadot系统中设计了四个角色:

1. 验证人(Validator):拥有最高权力,负责封装区块。验证人需要在系统中抵押一定数量的代币。验证人必须有足够的资源并保证足够的在线时间运行中继链的全节点软件,负责验证中继链发来的区块。在系统中验证人的任务繁重,并且可能无法同步维护所有平行链的交易记录,因此验证人可以指派校对人(Collator)来推荐平行链的区块以分担其工作。当所有的验证人验证完所有平行链的区块后,就要负责验证中继链的区块。验证中继链区块的工作包括:处理各平行链的交易队列(比如某些数据要从一个平行链发往另外一个平行链),处理中继链的交易,打包中继链的区块,更新各平行链的状态等。没有完成任务或者被发现作恶的验证人将会受罚。

2. 提名人(Nominator):提名人负责提名验证人,也需要抵押一定金额的代币。

3. 校对人(Collator):校对人负责处理交易并向验证人推荐新产生的区块,由验证人最终决定是否将此区块封装正式加入区块链。每一个校对人都要运行某个平行链的全节点。

4. 渔民(Fisherman):渔民的任务非常简单也非常重要,他负责找到系统中不称职甚至是作恶的某个角色,一旦找到这样的角色就会得到系统的奖励。

这四个角色的交互图如下所示:

在确定了系统中的角色后,系统设计的各方面规划如下:

1. 共识机制:在中继链中,将采用拜占庭容错机制(BFT)作为共识机制产生区块。但这还不够,因为Polkadot是个完全开放和公有的区块链系统,为了激励验证人参与系统,还需要使用PoS共识机制选取验证人。

2. 代币机制:在系统中,将有代币产生。代币会以一定速度进行膨胀。每个想成为验证人的候选人必须抵押一定代币。验证人会得到代币膨胀及验证打包交易的费用。在验证人不再担任验证人角色后的相当长一段时间内,其所抵押的代币仍然被系统封存,以增加验证人作恶的成本。

3. 平行链和校对人:每个平行链区块的区块头由中继链负责封装,具体的由位于中继链中的一组验证人执行验证和封装,并且每一个区块都会随机选取不同组别的验证人执行此任务。中继链的实现会类似于以太坊采用的账户(account),状态链(state chain)以及虚拟机。另外由于中继链的主要任务不是处理交易,因此系统会把让中继链执行交易的费用设置得相当高,以尽量避免让中继链执行交易,而要让它专注处理其它事物。

4. 链间通信:系统对于平行链之间的互联互通所采用的方法很简单,就采用基于Merkle树的队列机制进行处理。当一个平行链(A)向另一个平行链(B)发起交易时,该交易会被推送到A的输出队列,然后由中继链把A的输出队列中的交易传送到B的输入队列,然后再由B自行处理其输入队列中的交易。

5. Polkadot和以太坊:由于以太坊支持图灵完备的操作。Polkadot和以太坊之间会有丰富的互动场景。当一笔交易由Polkadot向以太坊发送后,以太坊中可以由类似“交易传递合约”的智能合约执行。具体来说,以太坊可以设置一个“接入合约”(break-in contract)来处理由Polkadot发送来的交易;也可以设置一个“发出合约”(break-out contract)来把交易发向Polkadot。

6. Polkadot和比特币:现有比特币系统和侧链采用的方式是双向锚定的方式。如果Polkadot采用这种方式,工作量就会变得很大。在这种情况下,系统计划采用类似以太坊“发出”的方式,只不过不是发出合约,而是“发出地址”(break-out address)。当比特币向Polkadot发起通信时,可以把通信的数据嵌在代币中,向“break-out address”发送该代币。不过由于比特币系统在诸多方面的限制,要真正实现比特币和Polkadot的互联互通要做的工作仍然非常多。

系统的整体框图结构如下所示:

行文至此,我们已经讨论了整个Polkadot系统大体的设计框架,功能和组成部分,再往深入研究就涉及到非常底层的技术细节讨论了。

在白皮书的后续章节中,作者深入讨论了这几个方面的技术细节:

1. 中继链的运作

2. 代币质押合约

3. 平行链的注册

4. 中继链区块的封装

5. 中继链区块封装的进一步改进设想

6. 链间交易的路由

7. 平行链中区块的验证

8. 网络通信

这些具体的技术细节待需要深入了解时可以再逐个研究。笔者认为整个白皮书最重要的核心是理解作者设计这套系统的出发点,设计思路,框架中各个角色的关系以及在各个场景中系统是如何运作的。

参考链接:https://polkadot.network/PolkaDotPaper.pdf

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180717G106AQ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券