最近读到了一篇关于介绍 Plasma 的外文文章,一不小心想翻译出来和大家分享(欢迎吐槽):
整个以太坊区块链的规模呈指数级增长,导致了网络上的参与者一直在试图尽可能地限制区块的大小,以防止区块链网络的处理性能变弱,这就是可扩展性限制。人们对于像以太坊这样的区块链网络的关注在增加,而建立在它之上的 Dapps 目前是不可持续的,开发者社区中的许多人正在寻找继续前进的替代方案。
针对区块链扩容问题大体有两种方法,即第一层 和第二层 解决方案。前者是所谓的链上可扩展性解决方案,其基础层和区块链网络的协议层级从根本上重建,例如分片和以太坊2.0中的共识协议(POW 到POS)的转换。而后者是所谓的链下可扩展性解决方案,主要用于加密经济学重组,而不是在特定网络的系统核心上重设或重建,这样就将功能扩展到现有的基础层,如比特币区块链的闪电网络和以太坊网络上的 Plasma,我们将在以下几段深入探讨。
Plasma 扩容系统的重要点在哪里?
已经有一个名为 Plasma 的以太坊区块链网络的链下可扩展性解决方案 - 可扩展的自动智能合约。Plasma 是一系列智能合约,运行在根链(以太坊主网)之上,形成一个可靠的侧链链接网络连接到一个分层和树状结构的根链,强制执行区块链历史和 MapReducible 计算进入一系列的 merkle 证明。
Plasma 为以太坊网络提供必要的缓解,帮助它扩展到所需的层级。它是一组可以轻松部署连接到根链上整个辖区的可信赖的侧链层的协议和指南。目标是增强可扩展性并降低智能合约和 Dapp 的交易费用,因为只有被默克尔化的信息会被定期广播到具有非错误状态的根链。
这个想法本质上是一个特定于应用程序的扩展系统,形成基于每个用例构建的以太坊智能合约层,通过主网智能合约中的分支可信侧链,可以有效地与以太坊主网(在 Plasma 中又叫“根链”)进行交互。 后期一连串的链下交易使用主网作为正确性和安全性保证,实现可信赖的侧链结构体系和可扩展性方面的指数增长。通过使根链仅处理来自子链的少量证明(或仅在发生争议时需要的重要交互)来实现构建,以便根链对于所有相关子链可以作为最终最安全的协议层。每个子链运行就像自己的区块链具有自己的共识协议一样,同时子项有效性的证明被提交并存储在紧接下面的链中,而不是存储在整个计算中。
Plasma 链的一个关键属性是所谓的退出 机制,它允许用户放弃子链,一旦出现任何问题时可以将资金提取到根链。然后通过使每个诚实的一方能够轻松地提供有关交易的有序历史的明确证据,并在非法退出/取款的情况下快速挑战链上,就可以使相关的链下或链上各方受到控制。
不同的 Plasma 原型及实现
一旦 Plasma 链与以太坊主网连接,用户就可以使用诸如加密钱包之类的应用程序发送,接收和存储诸如ERC-20,ERC-721,稳定币等加密货币。有各种 Plasma 实现,例如:
Plasma MVP
我们都知道以太坊主网本身是基于账户的区块链,而 Plasma MVP 利用基于 UTXO 的概念,这更像是一个由无状态对象组成的协议区块链,指定可花费的币/代币作为剩余交易输出,只有持密钥的人可以花费它们,类似于我们对比特币区块链网络的看法。Plasma MVP 允许 PETH(Plasma Ethers)的产生,消除了对两阶段确认的需要,提供了更简单的交易最终性,从而提高了吞吐量。UTXO 模型通过显著降低复杂性使得欺诈证明和退出/取款更加容易,因此 Plasma 链上的任何人都可以使用未花费的硬币/代币退出。以下是检查在特定链上特定区块中是否已存在特定 UTXO 输入(具有唯一 utxo_id)的实现(意味着如果被找到就是已经花费了):
Plasma 使用了 MapReduce,这是一个用于在可信赖的侧链( Plasma 链或其子链)上的数千个节点进行高规模计算的框架,被配置为映射的辅助性功能,从而将跨链中交易记录的大数据减少为状态之间的更小的区块。Plasma 也是基于 POA 的(权威证明),其中交易被验证并且区块由授权节点(一组指定的验证器,其为任何 Plasma 链中的 POA 网络的参与者提供所有资产流动性)产生。Plasma MVP 实现了用Solidity编写的根链合同,其中包含部署脚本,Plasma客户端和根链API的包装器。
Plasma Cash
在 Plasma 的概念之上,有一种称为 Plasma Cash 的实现(它仍然与使用 DPOS 的Plasma作为一致性算法兼容),它只关注需要在网络中追踪包含数字资产的区块。
设想这样一个场景:用户发起一定数量的 ETH 存款交易,带有唯一 ID 的与存储 ETH 同等价值的 Plasma 币产生,然后在 Plasma 链上被识别并且在该点处追踪这些 token 将足以简单地读取 Plasma 链中特定币(也称为 PETH)的位置,而无需读取所有以前存储 ETH 的历史区块。
Plasma Cash 原型涉及为 ETH 存款分配唯一的 token 识别码(主要用于未来的任何加密货币)。这基于 merkle 树模型,在该模型下,用户只需处理存储交易记录的 merkle 树的分项,而无需经过整条链。它允许所有者将资产转移到可信赖的侧链,同时保持原始值在以太坊主网上的安全,并通过为每个 Plasma 运营者分配唯一的 ID 来完成。通过这种方式构建的体系结构就会使每个用户验证更少的数据。以下代码片段演示了计算的 merkle 根,如果 computedHash 和 _rootHash 匹配,则通过返回 true 来证明特定叶实际上在 merkle 树中:
有了 Plasma Cash 的实现,分散式交换(DEX)完全作为操作者/验证者的角色,并且仅限于一个订单匹配引擎,因此用户拥有自己资产保留区块的私人钥匙,有权随时根据自己的意愿利用退出程序将其数字资产从根链(例如通过 Plasma Cash 桥接)中取出。Plasma Cash的特性还促进了显著的较大区块,以及可跟踪的数字资产的稀疏 merkle 注册表,极大地提高了交易活动流的可扩展性,其数量远远超过了现有以太坊网络的规模。
Plasma Debit
Plasma Debit 基本上是 Plasma Cash 的扩展,在以太坊主网上的第二层解决方案,支持部分支付和可分割。它是存在于资产持有者,链上用户和链上经营者/验证者之间的一套双向支付渠道,但需要进行从 Plasma 链到根链的定期链上公证 。
Plasma Debit 的实现可以说比基于 UTXO 的模型更接近于基于帐户的模型(Plasma Cash 是基于 UTXO 的)。对于每个帐户,都有一个帐户可以持有的上限和一个可以撤回到主网的固定金额。Plasma Debit 很重要,因为它允许在以太坊网络上使用不可替换的 token 进行廉价支付以及微型交易,只需要很少的资源来验证它们,还允许将整个账户转移到另一个地址。
该实现目前采用的是一种验证器结构的 merkle 树,它将限制流动性的数量,这使得该模型可以对交易进行未经验证的审查(由于在 merkle树 中只有一个验证器)。验证者可以为提供流动性和更新帐户状态的网络设置自己的费用。当它涉及从 Plasma 链中提取/退出时,它将向成员发送更新后的帐户余额,并将所有额外的流动资金返回到指定的验证器。
“可信的侧链的侧链架构”是关键!
在 Plasma Cash 的基础上,可以形成一个3层的区块链网络(或者超过3层,根据预期使用情况的需要,可以是一个可靠的侧链的侧链的网络)作为主干,在生产中运行不同的受信任侧链,具有与 Plasma 链和以太坊主网相关联的不同功能。
对于用例中涉及到的不同 token, Plasma 链将成为这些 token 交易的信息交换中心/枢纽, 最终通过原生的 ETH、ERC20、ERC721等等将 Plasma 链与以太坊主网连接。
如果进一步进行链上的多加密货币交易,我们可以在系统中启用 BTC/稳定币交易,可以在第2层(Plasma 链)上添加内置的分散交换功能。对于这种情况,PETH(Plasma ETH)将是支付的本币,因此主网中与 ETH 相应的相同值将使用分配的唯一 ID 进行处理,以便以后在 Plasma 链上处理的所有交易都可以一次性地与主网集成,而无需每次处理完交易时都支付燃气费。
在 Plasma 链之上,将部署受信任的子链(具有基于用例的特定目的设计的一串智能合约的层)与 Plasma 链连接,而不是直接与以太坊主网连接。根据这一逻辑,矿工或治理相关活动的激励和奖励,例如为社区或平台用户/验证者的某些倡议进行投票,可以立即进行处理,无需为每笔交易支付任何燃气费,因为这些交易将在与 Plasma 链的 ETH 的交换中“缓存”并处理,而 ETH 最终将与主网上同步,撤销必要的 ETH 的所有交易,然后结算总额。
对于我们未来的 token 系统中不同类型的“ 链上 ”交易,可信侧链区块链网络可以成为无摩擦区块链平台的解决方案,因为第3层子链将处理所有具有特定目的的单个机制,而所有交易都将发生并存储在第2层 Plasma 链上,以便以后撤回到以太坊主网。建立在以太坊主网之上还可以更有效地执行网络操作,因为它会在可信侧链上将处理的交易与以太坊主网的安全层分开。
对所有的现有 Plasma 实现有什么顾虑吗?
Plasma 的实现带来的一个主要问题是来自可信任的侧链的大规模退出/提取的概念(在最坏情况下发生在相对较短的时间内)。从子链中协调同时退出可能导致缺乏处理能力,无法一次性取出所有要求的资金, Plasma MVP最初设计为仅支持单个UTXO的退出。因此,平台用户在平台上同时进行大量的退出/提取操作时,可能会损失执行此类流程的资金,因为在验证之前,每个退出/提取交易都将面临平台用户的挑战,因此需要计算所需质疑交易的 merkle 证明,更不用说,在最后确定退出之前,需要对不同的子链、相关区块、组内单个utxo_id 和 uid 进行不同的检查。确定退出请求的一个示例(将所有资金从所有相关的钱包中转移出来并删除相关的 uid)如下:
考虑到对大规模的退出/提取,Plasma 社区一直在努力减轻它的影响:甚至在最初的 Plasma Paper 中,人们可能已经注意到了关于使用位域代表 UTXO 的大规模退出协议的建议。实质上,它是一个 UTXO 列表的大指针,其中每个位指向一个特定的 UTXO ,根据预先定义的共识机制,优化 UTXO 聚合,在这种机制下,将这些聚合的 UTXO 组合到另一个 merkle 树中,根名为“聚合根”,在各个块根下连接不同的相关交易。
Plasma 框架实现综述
人们普遍认为,链下 Plasma 扩容方案可以为当前的以太坊区块链系统带来全新的交易速度,而这些系统目前存在着根本的局限性。通过使用可信任的侧链结构,Plasma 可以通过附加的安全协议和一串可信任的侧链来减轻根链的压力。
用户将能够使用诸如加密钱包之类的应用程序通过可信任的侧链发送,接收和存储加密货币,同时 Plasma 链与以太坊根链相连接。这种能力和互操作性还可以进一步扩展,以支持更多的加密货币,实现完全与加密货币无关的交换,而这正是像 OmiseGo(OMG)这样的分散式交换网络一直在努力实现的目标。Plasma 已经与 OmiseGo 一起开展了 MVP,该团队目前正在与以太坊一起开展 Plasma Cash 的实施。
其他区块链网络也有脱链扩展解决方案,例如 Raiden 网络 - 以太币的比特币闪电网络版本,它还与所谓的双向支付渠道上的 ERC-20 token 传输兼容,具有即时支付,微支付,改进的交易隐私和原子 token 交换等附加功能。
尽管 Plasma 仍处于开发阶段,预计还需要一段时间才能实现完整的 POS 以及 Tesuji Plasma 主网解复,但人们已经注意到零知识区块链的实现,如 zk-snarks 和 zk-starks(今后还会编写另一个深入的深入讨论)这些形式的加密技术允许开发人员将交易聚合成批,开创以隐私为中心的加密货币如 zcash。事实上,许多初创公司已经接受了这项技术,并期待在升级和扩展太坊网络的同时,在多个块链网络之间实现互操作性,并通过上述零知识块链框架进一步减少区块链退出风险。虽然 Plasma 的概念已经被广泛宣传为以太坊最适合短期扩展解决方案的选择,但看起来 SNARKs 和 STARKs 可能会抢尽风头,并能够拯救整个密码世界,或者至少提出处理隐私限制的扩展解决方案……
原文链接:https://medium.com/@neoyiukit/plasma-blockchain-scalability-framework-an-off-chain-scaling-solution-for-ethereum-blockchain-7e4ade2fdf86
作者:Neo Yiu