玩转 plasma (1):零基础入门

erjian2022-05-01886

玩转 plasma (1):零基础入门

作者|

编译|此处

扩展以太坊是一个前所未有的挑战,是一个旨在提高交易吞吐量的扩展框架。

本系列是一个技术概述,包括:什么是?它的原理是什么,它的技术研究现状如何?

这是本文所阐述的一系列文章的第一部分。

简介

不知道大家有没有探讨过这个问题:加密货币很难拓展。

2017年8月,又发布了等离子白皮书,向世界展示了一个全新的、充满希望的方案。该方案旨在提高加密货币交易的吞吐量,解决长期困扰用户的拥塞问题。仿佛一夜之间,等离子成为以太坊生态系统中最流行的Layer2扩展框架。这些炒作造成了一系列混乱的结果,也让外界认为这些混乱的结果正是我们对这个加密领域的期待:各种大胆的展望,雄心勃勃的研究,眼花缭乱的等离子版本/提案/相反的提案/优化方案等等。最后等离子基本成了一个连续的笑话。

当然,这仍然是一件伟大而激动人心的事情。遗憾的是,等离子体的快节奏演变及其技术复杂性使得那些没有直接参与研发的人很难掌握其关键点。对于外部参与者来说,你的疑问可能多于具体答案:等离子链在现实中有什么样的能力?在见证等离子体的落地和有效运行之前,我们还面临着哪些障碍?等离子的取舍是什么?它的工作原理是什么?

最重要的是:它是什么?

如果这些问题引起了你的兴趣,那么你来对地方了!本系列旨在概述等离子技术3354是什么,它的原理是什么,技术研究的现状能给我们什么启示。本系列的第一部分将涵盖:

等离子体是Layer2技术的理论基础。

第一个混凝土等离子体规范“最小可行等离子体(MVP)”的内部工作原理解释

强制免责声明:本文不要求有严肃的技术背景,但我们会在读者对以太坊和智能合约有一定基础了解的前提下,做相应的内容策划。

背景:第2层

我们称之为“等离子体”的协议族实际上是区块链可伸缩性的第2层解决方案的子集。这里的“可伸缩性问题”指的是开放的区块链在没有访问权限的情况下面临的事务能力有限的问题。第二层试图通过使(某些特定的)交易最终化而不触及区块链本身来绕过这个瓶颈。

如果您愿意,可以将第2层交易视为支票。这种支票账户里的资金,不用实际存入你的银行账户,就可以直接验证。这种支票可以有效地作为纸币处理,直接交付给对方作为支付——前提是下一个收到支票的一方也有自我验证账户资金有效性的能力(只是打个比方,请不要问)。

Layer2系统的一般模式是:首先在区块链的基础层锁定一定的资金(假设以太坊,下同)。然后,其他参与者(不一定是存款的同一方)可以在锁定资金的帮助下,通过上层系统进行线下交易,只是偶尔与主链进行交互(如果有的话)。任何时候,任何资本的所有者都可以提取他们拥有的所有资金。

第2层(因为我们使用这个术语)与其他离线支付系统的区别在于,尽管避免了连续的基本层交互,但第2层交易仍然保留了我们期望第1层拥有的分散和不可信的安全保证。妥善保管好自己的私钥,运行必要的软件,就能保证你的个人资金永远掌握在自己手中,无论交易对手作恶与否,在主链中都是安全的。——这里的“交易对手”可以是个人、机构、共识机制或任何其他你无法控制的因素。即使在一个噩梦和奸诈的楚门秀,整个系统的所有其他用户合谋窃取你的资金,他们将失败。

这种技术为什么叫等离子?

在过去几年Layer2的研发中,逐渐出现了一种分类方法。根据这种分类,我们巧妙地将Layer2机制分为两类:等离子和通道技术(如状态通道或支付通道)。虽然不是每个人都完全按照这种方式使用这些术语——,并且最终,无论是在加密领域还是语言领域本身,都不会有官方权威机构为我们澄清这些定义。这里我们假设“等离子体”和“信道技术”的定义足够宽泛,可以涵盖所有可能的第2层系统方案。

区分这两类的第一种方法是判断他们所需要的链条上的最小事务数:在通道技术中,通道事务的最终定案不需要与主链进行任何交互;对于等离子交易,它必须与主链交互一次(由等离子运营商而不是用户播出,后面会有描述)。Plasma被定义为Layer2可伸缩性方案(尽管需要常规的链式事务),因为在Plasma中,每个Layer1事务可以有效地一举完成多个事务。您可以想象将一组第2层事务压缩到一个事务中。尽管如此,这似乎是渠道技术的放大版。没有链上块确认意味着(几乎)即时终结,尽可能少的链上交互通常是件好事。

另一方面,通道技术要求所有通道参与者完全同意任何通道的状态更新,这意味着多个政党的单个通道在实践中很难实现。当你需要时

要与没有跟你共享同一通道的参与方进行交易时,你需要通过你的通道合作伙伴来“转发”交易。因此,你的金融活动将被局限在你可以通过通道网络图找到相应的流动性路径的人群范围内。然而,在Plasma中,只有交易的发送方需要表态是否同意。除此以外,所有相关参与方都不需要执行流动性锁定/限制来进入、退出和自由交易(事实证明,“谁需要同意状态更新”也是区分“通道技术”和“Plasma”的等效方式)。

因此,片面而言,我们可以说通道技术更适用于依赖即时敲定特性,以及拥有相对固定的会进行交互的参与者集合的应用,而Plasma更适用于涉及多方参与者、强调高交易吞吐量并且即时敲定特性重要性相对较低的场景。

在后续文章中,我们将会看到:有一些结构同时利用了通道技术和Plasma机制,并尝试尽可能地融合二者的优势。所以最终,我们所需要作出的折衷也许会更小一些。不过,这么久远的事情还是先不要想了。在我们天马行空之前,我们不妨先了解一下Plasma实际上是如何运作的。

  最小可行Plasma

尽管最初的白皮书仅介绍了Plasma的总体概念,但它的理念十分宽泛,并且雄心勃勃(老实说,还特别长)。白皮书中所提及的一些想法——比如嵌套的Plasma链树——仍旧超出了目前的Plasma研究的范围内,甚至有可能无法实现。

因此,获得实际工作代码的第一个重要的步骤——可以说,我们目前关于Plasma的思考的起点——是一种被称为最小可行Plasma(MVP)的规范。最小可行Plasma,顾名思义,其目标就是要过滤掉所有天马行空的功能,并将所有事物提炼为最简单的可行实现。这里的“可行”意味着它必须简单地满足上述定义的Layer2Plasma系统的基本要求,并且只拥有最少的功能,即从A到B的可替换资产(假定为以太币,但对于其它符合ERC20标准的代币来说也是可行的)。

暂时而言(记住只是暂时的!),我们将忽略MVP里出现的所有缺陷,即使这些缺陷实在令人难以接受。并且事实上,MVP确实有资格作为实用的Plasma解决方案!至于它的缺陷......好吧,见仁见智。

正如我们之前提到的,Plasma的关键属性是多笔交易被压缩且被最终敲定,并且只有一笔交易与主链交互。在MVP中,“压缩”是通过默克尔树完成的:交易被组合在一起并通过默克尔化得到一个根,然而这个根被放置在Layer1。交易本身遵循比特币式的UTXO模型。也就是说,交易花费的是经过发送者证明其所有权的输入,并创建受到新的所有者的公共地址影响的输出。这就是说:一条Plasma链本身就是一条区块链!通过使用必要的链下Plasma区块数据和链上默克尔根数据,用户可以验证自身的合法权利,并依靠以太坊的链上智能合约来执行规则且解决所有争议。

我们将负责执行上述过程(即默克尔化交易、广播根,并与用户共享数据)的实体——Plasma“区块创建者”——称为Plasma运营者。值得注意的是,Plasma机制本身完全不知道运营者的存在形式:它可以是一个单一的“中心化”实体,一条联盟侧链以及一个基于权益证明的区块认证系统等。Plasma结构的根本目标是,一切基金管理都无需托管。并且在Plasma的实现中,无论谁负责创建区块,这个因素都应该保持不变。更“去中心化”的机制可能会带来与分布式对等系统相关的其他好处,比如抗审查性、容错等——但无需托管的性质不会改变。因此,为了简单起见,我们不妨假设运营者只是一个单独的实体,从而更加明确地推导Plasma机制。

如此一来,我们就可以开始阐述典型的Plasma交易的生命周期,并检查在不同的场景中,不同的事情会得到怎样的处理。

首先,Alice通过向合约发送一笔链上以太币交易,将以太币存入Plasma链中,运营者将该笔交易包含在Plasma区块中。这些以太币最初(显然)以UTXO的形式归属于Alice。像往常一样,Alice想要给Bob付款,(需要注意的是,Bob不一定需要进行链上存款,或许他永远都不需要在链上存款)为此,她创建了一笔花费她的UTXO并为Bob创建一个新的UTXO的交易,并将此交易发送给Plasma运营者。运营者将这笔交易与其它(可能不相关的)交易组合成一个Plasma区块,并对它们“默克尔化”得到一个默克尔根,然后(并且只)将这个根发送到主链。

接着,运营者将此Plasma区块发送给所有用户(包括Alice和Bob)。在收到最新的区块后,Alice和Bob各自对其进行验证。这一验证过程旨在确保交易本身有效,并且区块与区块链上默克尔根相对应。如果一切顺利,那么Alice,Bob和其他用户就可以继续幸福快乐地生活了。

然而,如果这时Alice感觉她自己已经受够了这个疯狂的Plasma业务——她想把资金撤回到以太坊链上——她可以通过发送一笔链上交易来启动“提现请求”(请注意:这一提现请求不需要运营者的许可)。在这笔交易中,她需要包括她想要提现的Plasma链的UTXO,以及该UTXO所属的Plasma区块编号和证明包含过程的默克尔路径。现在,在她获得资金之前,她必须等待一个“争议期”(假设它时一周)才能通过。在此期间,如果其他用户检测到请求犯规,那么这些用户可以对Alice的退出行为提出质疑。

  这可能会导致两种情况:

(1)皆大欢喜:每个参与者都是诚实的。

在Alice开始退出时,其他用户会浏览各自的Plasma链副本以检查并确认Alice试图退出的UTXO实际上仍然属于她。他们还会以其它方式验证所有区块的有效性(尽管他们可能已经这么做了)。Plasma的用户现在可以放心:Alice只能带着属于她自己的钱离开,其他用户的资金是安全的。生活可以愉快地继续。

  (2)令人发指:Alice是坏人

玩转 plasma (1):零基础入门

现在,我们不妨替换前一个场景的结局:Alice的退出意图“足够正确”,以致于一开始被智能合约接受了。也就是说,它是一笔有效的交易,默克尔证明确实与旧的默克尔根相对应——但它实际上是双重花费。这意味着,Alice试图用她早先发送给Bob的相同UTXO来进行退出。唉,Alice呀。

但这都不要紧!Bob(或者任何其他用户,但我们还是说Bob吧)有一周的时间采取行动。他会对照自己的Plasma链副本来检查Alice的UTXO,并注意到这是一笔双重花费。为了证明Alice的罪行,他提交了一个“欺诈证明”。这个证明包含了Alice以前花费相关的UTXO的旧交易,以及这笔花费交易被包含在Plasma区块中的默克尔证明。由于Bob给出了Alice已经花费这笔资金的加密证明,因此Alice被逮个正着,她提现这笔资金的请求被取消了。

  关于“惩罚”的说明

在这时,我们可能想要通过某种方式来进一步惩罚Alice的犯罪未遂:为她创造一个可信的威胁,给她带来更大的损失,从而理想地将这类行为扼杀在摇篮里。这些惩罚机制在通道结构中十分典型。比如,在Poon-Dryja支付通道(目前在比特币的闪电网络中使用的支付通道结构)中,试图兑现过期交易并被抓获将会导致你所有的通道资金都被转移给交易对手。虽然这种惩罚在Plasma或通道技术中都不是绝对必要的,但可以说,Plasma对这种惩罚措施有更强的需求。如果缺乏惩罚的概念,那么Alice可能会反复尝试不正当的提现,从而迫使Bob(或其他参与者)每次都要花费gas费用来进行响应。然而,讽刺的是,如何在Plasma中实施这种惩罚并非如此容易。为了削减Alice在Plasma链中的资金,我们需要确定哪些资金属于Alice,这需要一个声明/争议窗口机制——我们不妨深入这个充满挑战的兔子洞。

因此,Plasma结构通常要求Alice在尝试提现时进行“退出抵押”。从本质上讲,Alice的抵押表示“我想要取出5个以太币。如果你发现我的退出证明带有欺诈性的话,那么你可以从我这里拿走1个以太币作为罚款。”我们可以自由设定合约条款,即所需的抵押规模,以及对特定违规行为的响应情形(比如将押金交给质疑成功的参与者作为赏金,或者将其削减为零,或者仅仅涵盖质疑者的gas成本等),并根据个人喜好来调整其宽松/严酷程度。

  悲惨情况:邪恶的运营者

到目前为止,事情的发展相对顺利。这很大程度上是因为我们做出了极其简化的假设,即运营者将所有人的最佳利益都放在心上。现在是时候来考虑一下我们不愿想象的情形了:如果运营者是一个彻头彻尾的骗子和小偷,那么我们该怎么办?

比方说,Alice和Bob正在开展他们的业务。有一天,他们发现运营者向他们发送了一个区块。这个区块的默克尔根已经在链上进行过认证,其中包括一个赤裸裸的无效交易,比如花费Plasma链上90%的以太币。回想一下,运营者全权负责创建区块,因此其理论上可以随意包含任意他想要的东西。更糟糕的是,接下来,运营者要求使用这笔无效交易来进行链上提现。

与Alice在上述案例中的欺诈行为不同,因为那只是Alice试图进行双重花费,而这笔交易花费的是一个甚至都不存在的“UTXO”。因此,我们无法使用先前的质疑和取消提现的方案。

可能大家很容易就认为我们可以构建一种不同类型的欺诈证明来处理这种不同的作恶行为,即“如果我们要求运营者证明该输入UTXO的存在行不行?并且,额......如果这个UTXO是“凭空产生”的,那么我们可以要求证明这个UTXO的合法性吗?然后,额......”

我必须要打断你。在这种情况下,欺诈证明会很复杂,甚至有可能是不可实现的。但即使探索这条路线也毫无意义,并且徒劳无功,因为它最终会遇到更大的问题。由于我们假定存在一个邪恶的运营者,我们不妨全力以赴——运营者不仅创建了一笔无效的交易并尝试提现,与此同时,他甚至从未与他的用户共享无效的Plasma区块。Alice,Bob和其他参与者现在看到的是一个包含天量资金且极度可疑的退出请求,但他们对于其中的细节一无所知。

那么现在怎么办?我们如何确保我们的运营者不会带着不属于他的资金逃之夭夭?在这种可怕的情况下,我们转向MVP的核按钮:鉴于我们不能直接阻止运营者退出,我们可以允许其他参与者先退出:由智能合约负责强制执行一个退出队列,并确保先前的UTXO优先退出。因此,只要每个人——没错,确实是每个人——使用Plasma链在运营者的大规模提现完成之前撤回各自的资金,那么运营者想要偷走的以太币将被排空,由此他的恶意企图最终只能无功而返。

从理论上讲,这种方案有效的。无论其他参与方是否作恶,用户始终保管着自己的资金——这就是我们的目标。但坦率地说:恶意运营者(或者更可能是被黑客入侵/被攻陷的运营者)使用不超过一笔交易来迫使所有用户在一定时间内撤回主链的状况远非理想。事实上,在真正最糟糕的情况下,如果主链区块拥堵的时间足够长,那么用户可能无法及时退出,因此实际上可能会失去他们

相关阅读

  • 讲真学堂推出《0基础全家健康养生计划》助力大众科学养黑客零基础入门生
  • 干货|最细致网络安全入门教程
  • 玩转 plasma (1):零基础入门
  • 本文链接:http://www.slxf119.com/17825.html 转载需授权!

    上一篇:干货|最细致网络安全入门教程

    下一篇:零基础当黑客 要掌握的技术有哪些呢

    相关文章

    网友评论