Polkadot:畅想一种异构的多链架构(第一部分)

本文译者:岳利鹏

 

原文作者:

Gavin Wood博士

以太坊&Parity 创始人

GAVIN@PARITY.IO

 

摘要:现有的区块链架构都存在诸多问题,不仅仅是从实用性角度所说的扩展性(extensibilty)和伸缩性(scalability)的问题。我们认为,问题源于把共识架构中两个很重要的部分:一致性(canonicality)和有效性(validity)绑定得太紧密了。这篇文章介绍了一种异构的多链架构,能从本质上把两者拆开。

为了分离这两者,且能保持最小化的绝对安全性(security)和透明性(transport)等基本功能,我们将介绍一种原生的支持内核可扩展(core extensibilty)的可行性方法。对于可伸缩性(scalability)的问题,我们通过对这两个问题分而治之的思路解决,通过非信任节点的激励机制,弱化他们的内生绑定关系。

本架构的异构本质,支持众多高度差异化的共识系统在非信任(trustless)、完全去中心化的联邦内交互操作,允许去信任(trust-free)地相互访问各区块链。

我们提出一种方式,支持向后兼容一个或多个现有的网络,比如以太坊等。我们相信这个系统能够提供一种有用的底层组件,能够实用性地支持全球商业级别的可伸缩性(scalability)和隐私性(privacy)。

 

1 前言

这篇论文的意图只是一个技术版本的概要,旨在用一些原则来描述将要开发的这个区块链示例,解释这个可能方向的合理性。它罗列了诸多区块链技术方面的具体改善措施,以及在此开发阶段所能够提供的尽可能多的细节。

它并不是要写成一个形式化证明的说明书。它并不完整,也不是最终版本。它并不是为了覆盖框架非核心的模块,例如API、依赖、语言和用法等。这只是概念性实验,都很可能会修改提到的参数。为了响应社区的意见和评论,会新增、重定义、删除各组件。通过实验性的证据和原型,给出关于什么会有效、什么不会的信息,也很可能修正本论文中大部分内容。

这篇论文包含了一个关于协议和一些想法的核心描述,可能会被用来解决多个方面的问题。它将是能够用来在概念验证阶段开展一系列工作的核心描述。一个最终的“1.0版本”会基于这个协议,再添加一些变得可证明而且决定包含到项目中来的想法。

1.1 历史

2016年10月09日:0.1.0-proof1

2016年10月20日:0.1.0-proof2

2016年11月01日:0.1.0-proof3

2016年11月10日:0.1.0

 

2 介绍

区块链已经承诺了它的伟大意义,能够应用于包括物联网(IOT)、金融、治理、身份管理、去中心化互联网和资产追踪等多个领域。然而抛开这些技术承诺和大话,我们还没有看到现有技术下,出现重大的关于现实世界的应用部署。我们相信这是因为现有技术的5个关键缺陷:

伸缩性(Scalability):全球范围内花费了多少计算、带宽和存储的资源,来处理单个交易?峰值情况下能处理多少交易?

隔离性(Isolatability):多参与方对于应用的差异化需求,能否在同一个框架下接近最优程度地满足?

开发性(Developability):工具的工作效果有多好?APIs是否已满足开发者的需求?教程资料是否可用?是否集成权力?

治理性(Governance):网络是否保留了能够随着时间进化和适应的灵活性?制定决策能否高度地包容、合理和透明,来提供去中心化系统的高效领导力。

应用性(Applicability):技术是否真的解决了用户的刚性需求?是否需要其他的中间件来嫁接真实的应用?

当前的工作,我们主要面向前两个问题:伸缩性和隔离性。也就是说,我们相信Polkadot架构可以在这两个方面,提供有意义的改进。

当前,例如Parity以太坊客户端这样的高性能区块链实现,已经可以在消费级高速硬件上每秒处理超过3000笔的交易。然而显示世界的区块链网络却限制在30笔交易每秒的情况下。这种限制主要是源于目前同步(synchronous)的共识机制,需要充分的计算缓冲时间来安全地处理,也就加重了其必须对于慢速硬件的支持。这归咎于其底层的共识架构:状态转换机,或者这种让所有参与方校对和执行交易的方式,在本质上将其逻辑绑定在了共识一致性(canonicalisation)的设计上,或者需要让所有参与方都同意所有的可能性、有效性和历史。

这种说法即适用于类似比特币和以太坊这样的工作量证明(POW)系统,也适用于NXT和比特股这样的权益证明(POS)系统,他们都本质上受制于同一个障碍,但这些共识算法却是个能让区块链成功的简单策略。然而,在一个协议里紧密捆绑这两个结构,我们也就捆绑了多个不同风险偏好、不同伸缩性需求、不同隐私需求的角色和应用。一种特征满足不了所有人的需求。因为这种场景,产生了很多次的广泛呼吁,但网络只能倾向于更保守,服务于少数人,最终导致在创新能力、性能和适应性方面的失败,非常戏剧化。

有一些系统例如公证通(Factom),整个地去除了状态转换机。然而大多数应用场景都需要依赖一个共享的状态机,来支持状态转换的功能。去除它只是隐藏了问题,却没有给出真正替代性的解决方案。

现在看起来清楚了,因此一个合理的方向是:像路由对于可伸缩去中心化计算平台那样,解耦共识组件和状态转换组件。而且不出意外的话,这也是Polkadot解决伸缩性问题的策略。

2.1 协议、实现、网络

和比特币、以太坊一样,Polkadot希望一开始的时候只是个网络协议,并且是运行这一协议的主要公有网络(目前假设)。Polkadot倾向于是个免费和开放的项目,协议在一个知识共享的许可证上制定,代码托管在FLOSS许可证下。这个项目以一种开放的状态开发,接收各方面有用的捐助。一个微意见提交系统(RFCs),但不像Python改进议程那样,会提供一种公众协作参与协议修改和升级的方式。

我们对Polkadot协议的初始实现,将称为Parity Polkadot Platform,会包含协议的完整实现和API接口。像其他Parity的区块链实现一样,PPP会设计成通用目的的区块链技术栈,并不限定于公有网络、私有网络或联盟网络。目前为止的开发已经被包括英国政府在内的几方资助。

但是,这篇论文还是在公有网络的场景下。我们在公有网络下预见的功能,是一个完整设想(比如私有或联盟网)的子集。另外在这个场景下,可以清晰地描述和讨论Polkadot的所有方面。这也是说读者需要知道,在非公有(有权限的)场景下,一些特定的机制(比如和其他公有网络的交互)并不直接和Polkadot相关。

2.2 前人工作

从状态转换中解耦底层的共识,已经私下讨论了两年,在以太坊的最早期的时候Max Kaye就提议过。

一个更复杂的可伸缩方案叫做Chain fibers,这要回溯到2014年6月,在那年底也发表了。它创造了一个关于单个中继链(relay-chain)和多个同构链,可以透明地跨链执行的先例。退相干性(Decoherence)通过交易延迟(latency)来实现,这就使需要更长时间,来处理需要协调系统多个部分的交易。Polkadot借鉴了很多它的架构以及随后跟很多人的讨论,虽然跟它的设计和规定也很不一样。

然而目前并没有运行在生产环境下的系统可以和Polkadot相比,有的也只是提出了些相关性功能,很少有本质层面的细节。这些提议可以归纳为:丢弃或减少状态机全局相关性的系统、试图通过同构分片提供全局相关性的单例状态机系统、目标仅是异构性(heterogeneity)的系统。

2.2.1 没有全局状态的系统

公证通(Factom)演示了个没有有效性的一致性系统,能够高效地记载数据。由于没有全局状态和其带来扩展性问题,它可以被看做是一个可伸缩的方案。然而前面也提到了,严格上来说它只解决了很少的问题。

Tangle是个关于共识系统的概念性尝试。不把交易排序再打包到区块中,而是通过串联的共识得出一个全局的一致性状态改变排序,它在很大程度上抛弃了高度结构化的排序想法,而是推出一个有向无环图,后续的有依赖的交易通过明确的指向,来帮助前面的交易达成一致。对于任意的状态改变,这个依赖图就会很快地变得无法处理,然而对于更简单的UTXO模型,立即就变得合理了。因为系统总是松散地连贯,而且交易通常是相互独立的,大规模的全局并发变得非常自然。使用UTXO模型确实可以让Tangle定位成价值转移的货币系统,而并没有其他的更多通用和可扩展的功能。因为没有了全局依赖性,而和其他系统的交互又需要确定性地知道其状态,这种方法就变得不切实际了。

2.2.2 异构链系统

侧链是个支持比特币主链和附属链之间去信任交互的提案。但并没有任何和侧链进行富(rich)交互的具体规定:交互被限定在允许和侧链之间相互托管对方的资产,也就是行话所说的双向锚定(two-way peg)。最终也是为了做个框架,通过锚定比特币链和其他链,允许在比特币协议之外进行外部交易,为比特币添加附属的外围功能。从这方面讲,侧链系统更多着眼于可扩展性而不是可伸缩性。

根本上将,侧链确实没有关于有效性的条款,从一条链(比如比特币)的代币转到另一条链上,安全性只是寄希望于侧链能否激励矿工来一致性地验证交易。比特币网络的安全性无法简单地在其他链上起作用。进而一个确保比特币矿工联合挖矿(复制他们的一致性算力到侧链上),并且同时验证侧链交易的协议也被提出来了。

Cosmos是个延续侧链思路提出来的多链系统,替换中本聪的PoW共识算法为Jae Know的Tendermint共识算法。本质上,它包含多个使用独立Tendermint实例的区块链(在空间zone中运行),和一个使用去信任通信的中心(hub)链。跨链通信仅限于转移数字资产(也就是代币),而不是任意信息,然而这种跨链通信是可以返回数据和路径的,比如给发送人通知转账的状态。

和侧链一样,空间链上验证人的经济激励问题也没有解决。一般的假设是每个空间链会各自持有通胀增发的支付代币。设计仍然还比较早期,现阶段的也缺乏在全局有效性上建立可伸缩一致性的经济手段细节。然而相比于那些需要强耦合的系统,为了空间链和中心链间的松耦合性,需要给空间链的参数添加更多灵活性。

2.2.3 Casper

目前关于Casper和Polkadot之间,还没有完整的讨论和比较,即使是公平和彻底(也不准确)地描述两者。Casper是正在重塑PoS的共识算法,它研究如何让参与方在最终会确定的分叉上押注。本质上,需要考虑即使是长程攻击的情况下,也要保证应对网络分叉的健壮性,还需考虑基础以太坊模型上的可伸缩性。因此,在本质上Casper协议的目标比Polkadot和以往项目要复杂的多,也偏离了基础的区块链模型。它仍然还没有做出来,不知道将来如何运作,也不知道最终会开发出来的样子。

然而Casper和Polkadot都代表了有趣的新一代协议,对于以太坊的争论,本质上也是他们的终极目标和实现路径上的差异。Casper是以太坊基金会主导的一个项目,只是被设计用来作为PoS协议的替代,没有从本质上打造可伸缩区块链的意愿。关键还需要一次硬分叉来升级,而不能时可扩展的,因此所有的以太坊客户端和用户都需要升级,否则就得留在原来的前途不明朗的分叉上。因此,这类协议在去中心化系统上的部署会很困难,需要紧密的协调。

Polkadot在几方面上不同;首先而且也是最重要的,Polkadot将被设计成完全可扩展和可伸缩的区块链开发、部署和交互测试平台。他将被设计为面向未来的、可以吸收最新的可用区块链技术的平台,且不需要过于复杂的去中心化协调和硬分叉。我们已经预见到了几个应用场景,例如高度加密的联盟链和低区块时间的高频链等,它们不太可能在近期的以太坊上实现。它们最终和以太坊之间的耦合度也会很低,以太坊上也没有支持两者间非信任交互的想法。

简言之,尽管Casper/以太坊2.0和Polkadot有一些相似点,我们相信从本质上它们最终的目标是不一样的,并非竞争,在可预见的将来,两个协议会大概率地并存。

 

3 概要

Polkadot是一个可伸缩的异构多链系统。这意味着不像以往那些专注于不同程度潜在应用功能的单个区块链实现,Polkadot本身被设计成不提供任何内在的功能应用。Polkadot提供了中继链(relay-chain),在其上可以存在大量的可验证的、全局依赖的动态数据结构。我们称这些平行的结构化的区块链为平行链(parachains),尽管也不要求它们必须是一条链。

换句话说,Polkadot会被设计成一个独立链的集合(例如包含以太坊、以太坊经典、域名币、比特币),除了两个非常重要的点:

合并的安全性

去信任的跨链交易性

这两点也是我们称Polkadot为可伸缩的原因。从原则上,一个问题在Polkadot上被彻底解决了:可以向外扩展,会有非常大数量的平行链。尽管每个平行链在各方面都通过不同的网络模式进行平行管理,但这个系统却有可伸缩的能力。

Polkadot提供了一个尽量简单的架构,把大部分的复杂性都放在了中间件上。这是个刻意的决定,为了试图减少开发的风险,使必备的软件可以在短时间内开发出来,还能对安全性和健壮性持有信心。

3.1 Polkadot的哲学

Polkadot需要提供一个绝对坚实的基座,来在其之上建设下一代共识系统,覆盖从生产级别的成熟设计到初期想法的所有风险。通过对安全性、隔离性、通信能力提供强有力的保证,Polkadot能够允许平行链从一系列特性中选择适合它们自己的。的确,我们预见了各种实验性的经过考虑的区块链特性。

我们看到,传统的高市值区块链(例如比特币和Zcash)、低市值的概念性区块链和接近零手续费的测试网,是并存在一起的。我们看到,全加密的暗黑联盟链和高功能性的开放区块链(例如以太坊)也并存在一起,甚至还为之提供服务。我们看到,实验性的新虚拟机区块链,比如主观时间计费的Wasm区块链,在将难度计算问题从类似以太坊的区块链方式,修改成类似比特币的区块链方式。

为了管理区块链升级,Polkadot将内生支持某种形式的治理结构,很可能基于现有的稳定政治体系,会有一个两院结构,类似于Yellow Paper Council。底层权益代币持有者作为最高权力机构,会有全民投票控制权。为了反映用户的需求、开发人员的需求,我们期望建立一个合理的两院结构,采纳用户的意见(由绑定的验证人决定)、主要客户端开发者和生态系统玩家的意见。代币持有者会保留最高的合法权,可以形成一个最高法庭来参政、议政、替换或解散这个架构,还有那些我们不怀疑的最终需求。

借用一句马克吐温的谚语:“政府和尿布都得经常换,而且理由都一样”。

然而在大范围共识的机制下组织参政会很琐碎,更多关于替换和新增的质的改变,希望既不是通过非自动的弱法令(例如通过块高度和新协议的形式化证明文档的哈希)来达到一致性,也不是通过在核心共识算法中包含一个高效的高级语言,来改变他自身可能需要改变的各个方面。后者是一个最终目标,然而为了落实一个合理的开发路线图,更可能选择前者。

Polkadot看重的主要原理和规则有:

最小:Polkadot需要有尽可能少的功能性。

简单:只要他们可以推给中间件、放在平行链、或用下面要讲的一种优化手段,就不在基础协议里添加多余的复杂性。

通用:没必要在平行链中添加任何要求、约束或限制;Polkadot需要成为共识系统开发的基石,要尽量通过给模型加入最具适应度的扩展和优化。

健壮:Polkadot需要提供一个稳定的基础层。为了经济稳定性,需要采用分散的方法,来降低高额奖励这个攻击向量可能引发的问题。

相关文章:

Leave a Reply

消息接收
avatar
500
wpDiscuz