本文由币乎社区(bihu.com)内容支持计划奖励。
Plasma是一个由Joseph Poon和Vitalik Buterin设计的区块链扩展解决方案,它使用子链向根链(即以太坊)报告的方式来增加交易吞吐量,这样就不用担心通常情况下使用小一点的链而产生的安全问题。OMG(OmiseGO)去中心化交易所是期待Plasma而进行设计的。我们将会使用Plasma来支持可扩展性,完全的链上交易而不用牺牲安全。在这篇文章中我将会讲述我们如何建立一个Plasma。
目标:创建一个不需要依靠自身来确保安全的区块链
我们通过要求用户在出现错误的时候退出子链而达到这一点。下面是运作方式:
- 如果一个无效的交易被包含在子链里,所有的用户必须要在7天内退出子链。
- 如果一个用户不能访问一个子链,但是一个子链区块被提交给它的父链,用户就必须要重新获取子链的访问并检查它的有效性,否则7天内退出。
- 撤回(也称为退出)按照创建交易的顺序进行退出处理。未花费交易输出(UTXO)引用一个被包含在父链的低区块高度的交易(也就是更老的交易)比包含在更新的区块中的交易的优先权要高。这样就导致引用最近包含的无效交易的退出比引用更老的有效交易的退出优先权要低一些。
- 只有输入的拥有者签名了已经被包含在相应父链的交易的确认验证,交易才算是有效的。
责任分解
- 客户端——观看以太坊并运行子链,尽快的检测诈骗行为并退出。
- 子链——观看以太坊的存款,并执行关于链当前状态的所有计算。
- 根链——通过智能合约将子链锁定到以太坊。为子链处理存款和退出,只接收足够的信息来处理这两者,以及确认和否认诈骗性退出。
- 父链——保证子链安全。与最小可行产品(MVP)的根链同义;在Plasma的最终形态中在子链和根链之间可能存在多个父链。
存款
为了使用Plasma链,用户必须要将他们的资产(即以太币或其他代币)从父链转移到子链上。要移动存款,用户通过将资产移动到在以太坊上相应的Plasma智能合约上从父链移到子链上。
MVP的存款处理已经简化了在Plasma白皮书中指定的处理过程,降低了复杂性。存入Plasma链的存款会被立即包含到子链的父链记录中,并且无法取消存款。想要取消存款,用户可以立即撤回它们的资产。
存款人没有额外的风险。一旦转移资产到智能合约的交易被确认,它们可以被撤回。即使子链没有相应存款的映射,存款人可以依然撤回他们的资产。
撤回
要将资产转移回父链,用户可以发起一个撤回。用户发起撤回可以只是简单的为了将资产移回到父链并将资存在父链。当检测到一个错误性的Plasma链用户必须发起一个撤回;如果用户没有及时撤回,那么他们可能存在丢失资产的危险。
有两种类型的撤回。第一种是“简单撤回”,这是单方从子链撤回自己的资产。第二种是“大量撤回”,当多方一起从子链撤回他们的资产。大量撤回显然更加的复杂,将会在未来的文章中进行讨论。
当用户从Plasma子链撤回资产,是按照退出交易被创建的顺序进行处理的(前面的先处理)。在挑战期结束之后撤回会最终化。在挑战期间任何人可以提供诈骗性行为的证据。
简单撤回
简单撤回包含四步:
- 用户提交一个撤回请求给父链上的Plasma智能合约。
- 撤回请求进入一个挑战期,该挑战期会打开一段时间。在这段时间内,任何人都可以提交双花的证据给Plasma智能合约,证明这个撤回是无效的。如果一个挑战成功了,那么用户尝试退出是无法撤回它们的资产的。
- 如果撤回请求被证明是无效的,撤回者会被惩罚,报告者会得到奖励。如果直到挑战期结束都没有一个成功的挑战,那么撤回者接收到自己的资产。这后面的经济激励还没有最终化。
最终化
有两种类型的最终化:
- 子链最终化——取决于子链使用的共识机制;我们选择使用权益证明。
- 根链最终化——取决于根链使用的共识机制;以太坊目前使用的是工作量证明。
子链的最终化和安全性取决于根链。Plasma提供的所有安全保证都假设以太坊正常运行。
关于Plasma MVP该记住的事情
- 它是权威证明(POA),权益证明将会被加进来。
- 它不会利用债券来惩罚欺诈行为。
- 如果一个无效的交易被包含在子链中,所有人都必须要立即退出子链。
- 子链依赖于以太坊的最终化(区块确认)。
Plasma MVP是朝着下面两点迈出的一步:(i)通过扩展以太坊主网来激发以太坊的潜力,(ii)构建一个OMG去中心化的交易所,为主流金融的使用做好准备。随着OmiseGO更进一步参与到Plasma开发中,设计将会发展到Plasma和OmiseGO白皮书中描述的其他特征中。
我要特别感谢Joseph Poon,Vitalik Buterin和Karl Floersch的时间和洞察力,这对于将全局的区块链缩放解决方案转化为我们正在实施的MVP技术规范是非常有价值的。 所有的错误都是我自己的。
翻译作者: 许莉
原文地址: Construction of a Plasma Chain 0x1