作者 :Joseph Poon (joseph@lightning.network) & Vitalik Buterin (vitalik@ethereum.org)
译者 :Liam Lei
审校 :rectinajh
原文链接 :Plasma White Paper.
概要
Plasma 是一个提出用来激励和实现智能合约执行的框架,使合约能够扩展到每秒进行大量的状态更新,并使区块链能够应用于全球庞大的分布式金融应用中。智能合约因交易费用的激励,能够持续自动地运行下去,这都依赖于底层的区块链(如,以太坊)来强制实施交易状态的转换。
我们提出了一个方案,让分布式自治系统不仅能够应用于金融服务领域,也可以用来为全球数据持久化服务提供经济激励。这一方案或许会替代原有的中心化服务器集群。
Plasma的设计有两个关键的部分构成 : 首先,将所有区块链计算构造成MapReduce函数的集合;然后,可选择性地提供一个方法将权益证明 (Proof-of-Stake) 与代币 (token) 在已知区块链顶层进行绑定。值得一题的是,中本聪(Satoshi Nakamoto)提出的共识机制在设计上并不支持扣块 (block withholding) 。
构建过程使用欺诈验证 (fraud proofs) 将智能合约写入主区块链 (main blockchain) 中,因而状态转换能由父区块链(parent blockchain)执行。所有的区块链将被写入一个树形层级结构中,并将每一条链视作带有执行历史记录,和与默克尔验证 (merkel proofs) 绑定的,可转换为MapReduce函数的计算的独立分支(前提是,根区块链能被访问,以及其中的数据无法被篡改)。
关于非全局数据的全局执行,最大的难点在于数据的可访问性 (data availability) 和区块扣押攻击 (block withholding attack) 。对此,Plasma提供了一个折中方案。该方案允许从错误链回退,同时创建机制来激励和执行之后的正确操作。
在没有错误状态出现的执行过程中,只有经过merkel验证的操作才会每隔一段时间广播给根区块链(如,以太坊)。因此这使得可大规模扩展的,低成本交易与计算成为了可能。Plasma能够在较大规模的情况下持续运行去中心化的应用。
1. 可扩展的多方计算
一般情况下,区块链的准确执行需要让每一个参与方自行验证区块数据是否准确。要想加入一个新的区块,需要有人完整地验证该区块,以确保数据无误。许多用来扩展区块链交易能力的方案(如 闪电网络 Lightning Network)使用基于时间的协议来�建立交易双方的契约关系(一个声明/质疑的协议),以至于被声明的数据一定有一段“纠纷期”来让链上所有交易参与方进行执行与交易状态相关的操作。这个“声明/质疑”规范允许一方声明某一特定的交易状态是准确的,如果该状态与声明不一致,则另一方可以提供一份证明来质疑之前提交的声明,质疑过程在一段双方同意的时间内进行,该时间段叫做“纠纷期”(dispute period)。若是存在欺骗或交易有误的行为,区块链能够对过错方进行惩罚。该机制仅仅只在错误数据被声明的时候才会实施。有了这个“声明/质疑”验证机制,参与交易中的有利方能够在根链(以太坊)上声明确凿无误的交易信息给不利方。
这套机制不仅可用于支付,也可以扩展到交易的计算过程本身,所以区块链被叫做合约的裁定层。然而,前提是参与交易的所有人都对交易过程中所有的计算进行正确性的验证。举个例子,闪电网络提供了一种机制(如,带有条件状态的多方预先签名的交易的树),让人能够建立协议来进行合约状态的计算。
这些机制适用于一定规模的高性能计算,但某些情况下需要收集大量的外部状态(例如,完整的系统/市场,大量共享/不完整的数据计算,数量庞大的贡献者)。这种多方链下状态协议 (“状态通道”) 要求参与者完整进行计算验证,否则计算过程中将会产生大量的信任操作,即便交易只进行一次。值得一提的是,对于交易“轮数”有一个假设,那就是每轮合约进行初始化之前,计算执行路径必须能够完全解藕,以便交易方能够执行退出操作,并且能够在链上进行消耗资源的计算过程(因为很难证明哪方正处于挂机状态)。
转而,我们打算设计一个系统,其中计算过程能在链下进行,但最终执行过程还是在链上。其优势在于能够扩展到每秒数以亿计的计算但只需最少的链上更新操作。这些状态更新在一系列的自主进行权益证明 (proof-of-stake) 的验证节点中进行。这些验证节点被激励机制刺激,使其执行正确的,由欺诈验证 (fraud proofs) 强制执行的行为,.其作用在于执行计算过程,并保证任意一方不能轻易地中断计算服务。这些举措能够最小化数据可获取性 (data availability) 相关的问题(如,区块扣押),通过在存在拜占庭操作方的情况下,最小化根链上的状态更新操作,以免除根链上用来抵御风险的交易费用,并提供一种机制执行状态转换。
与闪电网络类似,Plasma也是由一系列运行在底层区块链之上的合约构成,这些合约保证了交易的执行,同时也保证了任一交易方在接下来的净结算/取现状态中能够拿到资金。
2. Plasma
Plasma 是一种扩展区块链上计算的方式, 并通过一定的经济激励使链自动且持续地运行,而无需让合约创建方进行交易状态转换的管理。链上所有的节点对链进行操作以获取奖励。
大规模的扩展是通过将合约里面表示一次转账的资金,缩小成位图中单一的比特位,这样的话,凭借一笔交易记录和签名可以合并多笔不同的交易付款。我们将MapReduce框架与其结合,来搭建由与之绑定的智能合约执行的可扩展计算。
这一结构允许任一交易方委托交易外第三方代理管理资金和计算合约,就和比特币系统中的矿工一样,但Plasma架构运行在底层区块链之上,以至于交易方不需要为每一笔账户状态更新创建交易(包括引入新用户的账本条目),同最少的链上数据表示合并后的状态更新。
Figure 1 : 任何人能够为许多不同的使用情况创建自定义的Plamsa链。Plasma是一系列智能合约的集合,能够在根区块链中衍生出许多支链。由根区块链执行Plasma链里的状态转换。根链是所有计算的执行人,但如果出现欺诈行为,则只在根链上执行计算以及惩罚操作。许多Plasma链能够和其业务逻辑以及智能合约并存。在以太坊中,Plasma将由直接运行在以太坊上的EVM合约构成,但只处理一小部分的事务,在不存在欺诈节点的情况下,这部分事务囊括了大量的计算和财务账目。
Plasma 包含了五个关键的部分 : 一层以经济激励的方式,用来持久运行合约的激励层;一个用来将子链部署进树结构,来降低成本和最大化交易净结算收益的结构;一个用来把状态转换的欺诈验证构造进子链中,使其与子链的树结构兼容并具备高可扩展性的MapReduce计算框架;一套依赖于根链的共识机制,用来复制中本共识的激励结果;以及一个位图-未交易输出 (bitmap-UTXO) 结构,以确保准确的根链下状态转移同时最小化批量逃离 (mass-exit) 的成本。允许在数据不可访问的情况下或其他欺诈行为出现时回退是Plasma其中一个关键的设计亮点。
未完待续