深入理解Plasma(3):Plasma MVP

深入理解Plasma(2):Plasma 细节剖析 这一系列文章将围绕以太坊的二层扩容框架,介绍其基本运行原理,具体操作细节,安全性讨论以及未来研究方向等。本篇文章主要对 Plasma 一些关键操作的细节进行剖析。 在上一篇文章中我们已经理解了什么是 Plasma 框架以及它是如何运行的,这一篇文章将对其运行过程中的一些关键部分,包括 Plasma 提交区块的过程,当有恶意行为发生时如何构建防伪证明以及如何退出 Plasma 子链等进行剖析。... 阅读详情

image

这一系列文章将围绕以太坊的二层扩容框架,介绍其基本运行原理,具体操作细节,安全性讨论以及未来研究方向等。本篇文章主要介绍 Plasma 的一个最小实现 Plasma MVP(Minima Viable Plasma)。

在上一篇文章中我们已经理解了 Plasma 中的一些关键操作,但是 Plasma 是一套框架,如果脱离了实际的应用,仍然很难彻底理解它。因此本篇将详细介绍 Plama 的第一个项目 Plasma MVP(Minimal Viable Plasma),即在 Plasma 框架下的最基础的实现。Plasma MVP 是 Vitalic 和他的团队在 2018 年初提出的基于 UTXO 模型实现的 Plasma 设计标准[1],它以最简单的方式实现了链下交易,但无法支持复杂的计算,例如脚本(Script)和智能合约。在阅读下面的内容之前,请确保已经理解了这个系列之前的文章。

深入理解Plasma(1):Plasma 框架

深入理解Plasma(2):Plasma 细节剖析

整个 Plasma MVP 的生命周期可以通过下面这幅图表现出来:

image

1

Plasma 合约

首先需要将 Plasma 合约部署到主链(以太坊)上作为主链和子链沟通的媒介。Plasma 合约会处理由子链提交的区块,并且将区块的哈希值存在主链上。除此之外,还会处理用户的存款(deposit)、取款(withdrawal/exit)以及争议(challenge)操作。

Plasma 合约中主要包括的数据结构有:

  • Owner:合约的拥有者(即部署合约交易的发送者)的地址,即部署合约交易的发送者;

  • Plasma 区块列表:每个 Plasma 区块中存储了(1)区块的 Merkle root(2)区块提交的时间;

  • 退出列表:即提交了退出申请的列表,每个退出申请存储了(1)申请者的地址(2)申请退出的 UTXO 的位置。

Plasma 合约中主要包括的函数有:

  • submitBlock(bytes32 root):向主链提交一个区块,仅仅提交区块中所有交易的 Merkle root;

  • deposit():生成一个只包含一个交易的区块,这个交易中包含与 msg.value 值相等的 UTXO;

  • startExit():执行给定 UTXO 的退出操作;

  • challengeExit():向某个正在执行的退出提出争议。

2

Operator

在前面的文章中我们已经知道 Plasma 子链是一个独立的区块链,那么也就有独立的共识机制。在 Plasma MVP 中采用的共识机制就是 PoA(Proof of Authority),即参与共识的只有唯一一个矿工,称为 Operator。Operator 负责处理所有子链上发生的交易,将其打包成区块存储在子链上,并且周期性地向 Plasma 合约提交区块,将子链上的状态(区块的哈希值)提交到主链共识。那么,既然 Operator 是唯一的矿工,这不就意味着 Plasma 违背了去中心化的初衷了吗?其实,这是去中心化向执行效率的妥协。在之前的文章中也提到过,Plasma 的安全基础依赖于底层的区块链,只要底层的区块链能够保证安全,那么在 Plasma 子链上发生的最差结果也只是迫使用户退出子链,而不会造成资产损失。

Operator 可以采用最简单的 REST API 方式实现,子链中的用户可以通过调用简单的 API 获取到子链中区块的数据。

3

存款(Deposit)

用户 Alice 通过存款(deposit)操作向 Plasma 合约发送带有一定数额的以太币或 ERC20 token 加入 Plasma Chain,这时 Plasma 合约会执行 deposit() 函数,生成一个只包含一个交易的区块,这个交易的 UTXO 记录了 Alice 从主链转移到子链的数额。当这个区块被主链确认后,Alice 就可以使用新生成的 UTXO 向其它用户发送交易了。

4

交易(transaction)

在 Plasma MVP 中,所有用户发送的交易都是直接发送给 Operator,当积累了一定数量的交易后,由 Operator 将交易打包成区块。这里需要注意的是,由于 Plasma MVP 采用的是 UTXO 模型,所以即使交易的收款方不存在,交易也是成立的。

在子链上 Alice 向 Bob 发送一个交易的流程如下:

  1. Alice 首先需要得到 Bob 在子链上的地址;

  2. Alice 将一个或多个 UTXO 作为输入构造交易发送到 Bob 的地址,并对交易签名;

  3. 等待该交易被打包到区块中;

  4. Alice 向 Bob 发送确认消息,并且使用相同的私钥签名。

5

生成区块

在 Plasma MVP 中,一个 Plasma 区块产生的情况只有两种:一种是 Operator 打包生成区块,另外一种是当用户执行 deposit 操作时,由 Plasma 合约直接生成一个只包含一个交易的区块。

6

监视子链

为了保证子链上资产的安全,用户需要周期性地检查子链上的数据,保证没有恶意交易产生。用户需要运行一种自动化的软件(例如钱包),每隔一段时间下载子链中的区块数据,检查每个区块中的交易,如果有恶意交易产生,立即退出子链。

7

取款/退出(withdrawal/exit)

当 Alice 想要退出子链时,需要向 Plasma 合约发送一个 exit 交易,申请中需要包含(1)所要退出的 UTXO 的位置,包括区块号(blknum)、区块内交易号(txindex)以及交易内输出号(outindex)(2)包含该 UTXO 的交易(3)该交易的 Merkle proof(4)用于生成该 UTXO 所涉及的之前一系列交易的确认签名。除此之外,exit 交易中还要包含“退出押金(exit bond)”。如果这个 exit 被 challenge 成功,那么取款的操作将被取消,而且退出押金将被发送给提出 challenge 的用户。

之后这个申请会被放入一个优先队列中,通过这个公式计算优先级:

Priority = blknum * 1000000000 + txindex * 10000 + oindex

之所以采用这种优先队列的方式处理取款顺序的原因是保证旧的 UTXO 总能优先于新的 UTXO 被取出。也就是说,当有恶意交易(例如双花等)产生时,所有在恶意交易发生之前的交易都可以被优先取出。那么如何解决在恶意交易之后被确认的交易的取款问题呢?Plasma MVP 采用了“确认签名(Confirmation Signatures)”的机制,在下一小节我们将介绍这一机制是如何工作的。

8

确认签名(Confirmation Signatures)

在 Plasma MVP 中,用户的退出顺序以所要退出的 UTXO 所在的交易的位置为准。假如 operator 作恶,在一个合法的交易之前插入一个非法的交易,那么当用户执行取款时,由于非法交易可以先被取出,因此当执行到该用户的交易时,可能 Plasma 合约中的资产已经被取空。为了解决这个问题,Plasma MVP 采用了“确认签名”机制,例如当 Alice 产生一个交易时,她首先会对交易签名。当该交易被打包入区块后,Alice 还需要对该交易进行一次签名,即“确认签名”。

引入确认签名机制后,当 Alice 发现在一个区块中自己的合法交易之前存在非法交易时,可以拒绝对自己的交易进行“确认签名”,同时申请取款。这样可以使得当前的交易失效,保证自己之前“确认签名”后的交易可以优先于非法交易之前取出。

这种确认签名机制极大地破坏了用户体验,用户每产生一个交易都要经历签名->等待确认->确认签名。而且由于确认签名也需要占据 Plasma 区块的空间,因此也降低了子链的可扩展性。为了解决这个问题,Plasma 的研究人员提出了扩展版本 More Viable Plasma 移除了确认签名的要求[2]。

9

争议(Challenge)

每个取款操作都会经历一个争议期。例如在 Alice 的某个 UTXO 退出子链的过程中,如果 Bob 在争议期内发现有恶意行为发生,他可以提出一个争议(challenge)。一个争议需要给出针对的 UTXO 的位置,以及该 UTXO 被花费的证明,即该 UTXO 已经存在于某个交易中,且这个交易已经被打包到区块。

合约通过调用 challengeExit() 函数执行一个争议,争议成功后会取消正在执行的取款操作,并将提交取款申请所冻结的押金发送给 Bob。

10

攻击场景

在 Plasma 子链中主要存在两种攻击场景:

  1. Alice 试图忽视在子链中转移给 Bob 的资产,使用最初加入 Plasma 子链时的交易证明向主链提出取款申请。

  2. Operator 生成一个恶意交易,占有其他用户的资产,并且尝试退出子链。

下面对这两个攻击场景进行分析,观察 Plasma MVP 如何保证资产的安全性:

场景1

  1. Alice 使用最初加入子链时生成的交易作为证据向主链提出取款申请;

  2. Bob(或者其他任意用户)拥有 Alice 申请退出的 UTXO 被花费的交易证明,并将此作为证据向主链提出一个争议;

  3. 争议生效,Alice 的退出申请被驳回,同时将 Alice 申请退出的押金发送给 Bob;

  4. Alice 的攻击失效。

场景2

  1. Operator 创建了一个非法交易,并且将其打包生成区块之后在主链得到确认;

  2. Operator 提交取款申请,打算将 Alice 的资产取走;

  3. 在争议期内,Alice 发现了 Operator 的恶意行为,立即提出取款申请,退出子链;

  4. 由于 Alice 的申请优先级较高,因此会在 Operator 之前退出;

  5. Operator 的攻击失效。

11

相关项目

Talk is cheap, show me your code.

目前已经有许多机构和公司已经实现了 Plasma MVP,但实现的语言和细节有所不同:

  • FourthState Lab[3]

  • Omisego[4]

  • Kyokan[5]

12

总结

本文介绍了 Plasma 的最小实现版本 Plasma MVP,虽然采用最简单的 UTXO 模型,但已经足够体现出 Plasma 的核心思想。在 Plasma MVP 中,用户资产的安全主要依赖于用户及时发现恶意行为,并退出子链。接下来的文章将会介绍另外一个稍微复杂一点的项目,Plasma Cash。

13 相关资源

相关资源

  1. https://ethresear.ch/t/minimal-viable-plasma/426

  2. https://ethresear.ch/t/more-viable-plasma/2160

  3. https://github.com/fourthstate

  4. https://github.com/omisego/plasma-mvp

  5. https://github.com/kyokan/plasma

内容首发:Github
原文作者:盖盖

扩展阅读:

深入理解Plasma(1):Plasma 框架

深入理解Plasma(2):Plasma 细节剖析

家电浪涌防护:MOV压敏电阻原理、选型与DIY安装实战 浪涌保护是电子设备可靠运行的基础技术,其核心原理在于为电路提供一条瞬态过压的泄放通道。当电网因雷击、设备启停等原因产生瞬时高压尖峰时,浪涌保护器件能迅速响应,将危险能量导向大地,从而保护后级精密的控制电路和半导体器件。这项技术的工程价值在于以极低成本显著提升设备寿命与可靠性,尤其适用于智能家电、工业设备及通信系统等场景。本文聚焦于最常用的浪涌保护元件——MOV压敏电阻,深入解析其从绝缘体到导体的纳秒级切换机制,并基于电压尖峰防护和接地系统等关键概念,提供从参数选型到安全安装的完整实践指南,帮助读者为贵重电器 阅读详情

相关推荐

OOPIC Compiler IDE:掌握开源机器人编程语言

OOPIC的可定制化特性允许用户根据自己的需求进行扩展,这为特定领域的应用开发提供了无限可能。用户可以通过创建插件、模块或子程序来增加新功能,而不必对核心代码进行改动。这种方式不仅可以快速响应变化,还能保护用户在现有功能上的投资。可定制化的优势在于它允许用户在不需要完全理解整个系统的情况下,依然能对系统进行扩展和优化。用户可以将目光集中在特定的业务逻辑上,而将系统其他部分的复杂性留给OOPIC的开发者团队。这种分工合作的模式在提高开发效率的同时,也确保了系统的整体质量和一致性。

weixin_42611177的博客 501

极简 Plasma MVP 和 Plasma Cash 介绍

Vitalik 在一年多以前(2017/08)提出了 Plasma 这个概念以解决 Ethereum 交易速度及成本的问题,不过提出的内容太概念性,没什么人知道该怎么实作,在今年初 Vitalik 提出了 Plasma MVP(Minimal Viable Plasma),最小可行性的 Plasma,而目前大家也是遵循这个规范来实作。 Plasma 属于 layer 2 的 solution,就...

以太中文网 686

基于Spark Structured Streaming的新闻日志实时分析系统架构与实现

大数据实时处理是应对海量、持续生成数据的关键技术,其核心在于构建低延迟、高吞吐的数据流水线。流处理引擎通过窗口聚合、状态管理等原理,实现对数据流的连续计算,从而支撑实时监控、智能推荐等业务场景。Spark Structured Streaming作为主流引擎之一,提供了声明式API与端到端的精确一次语义保障,有效平衡了开发效率与数据准确性。在新闻浏览日志分析这类典型应用中,结合Kafka消息队列进行数据缓冲与解耦,并利用MySQL和Redis分层存储计算结果,能够构建出从数据采集、实时计算到可视化展示的完整

weixin_34248705的博客 412

电脑桌面管理软件_电脑文件一团乱?试试这 8个高效率的管理软件,批量管理!...

随着工作的时候越来越长,如山的文件挤满电脑,让人很头疼。不知道你有没有遇到这些烦恼?桌面堆满文件,想整理却又无从下手;文件数量繁多,找一份文件要好几分钟;文件版本混乱,无法分清哪个是最新版本;外地出差时,需要的文件不在身边……要想管理好它们必须要坚持、要有良好的命名习惯,总是要记得把它们们放在某个位置……每每遇到这些问题就暗下决心要好好管理文件,但总被巨大的工程量吓退。我在想,有没有一些工具能帮我...

weixin_39602571的博客 2623

xoopic-2.70.2

Plasma Physics via Computer Simulation开发的模拟软件。在linux下运行。

OOPic User Classes-开源

Savage Innovations OOPic单片机的可重用类和库。

深入理解Plasma(1):Plasma 框架

这一系列文章将围绕以太坊的二层扩容框架,介绍其基本运行原理,具体操作细节,安全性讨论以及未来研究方向等。本篇文章作为开篇,主要目的是理解 Plasma 框架。 Plasma 作为以太坊的二层扩容框架,自从 2017 年被 Joseph Poon(Lightning Network 创始人)和 Vitalik Buterin (Ethereum 创始人)提出以来[1],一直是区块链从业人员关注...

weixin_33943836的博客 694

opencv基础57-模板匹配cv2.matchTemplate()->(目标检测、图像识别、特征提取)

OpenCV 提供了模板匹配(Template Matching)的功能,它允许你在图像中寻找特定模板(小图像)在目标图像中的匹配位置。模板匹配在计算机视觉中用于目标检测、图像识别、特征提取等领域。: 首先,加载目标图像和要匹配的模板图像。: 选择适当的匹配方法,例如 cv2.TM_CCOEFF、cv2.TM_CCOEFF_NORMED、cv2.TM_CCORR、cv2.TM_CCORR_NORMED、cv2.TM_SQDIFF 或 cv2.TM_SQDIFF_NORMED。每种方法对应不同的匹配计算方式。

小海聊智造 1万+

深入理解 Plasma(三)Plasma MVP(验证实现)

这一系列文章将围绕以太坊的二层扩容框架 Plasma,介绍其基本运行原理,具体操作细节,安全性讨论以及未来研究方向等。本篇文章主要介绍 Plasma 的一个最小实现 Plasma MVP(Minima Viable Plasma)。 在上一篇文章中我们已经理解了 Plasma 中的一些关键操作,但是 Plasma 是一套框架,如果脱离了实际的应用,仍然很难彻底理解它。因此本篇将详细介绍 Pl...

跨链技术践行者 7974

如何安装PyFluent

PyFluent 是PyAnsys生态系统的一部分, 允许您在所选的 Python 环境中结合使用 Fluent 与其他 PyAnsys 库和外部 Python 库一起使用。PyFluent 实现了客户端-服务器体系结构。它使用谷歌遥控器 过程调用或 gRPC 接口,用于启动或连接正在运行的 Fluent 进程作为服务器。但是,您只需要与 Python 交互接口。可以使用 PyFluent 以编程方式创建、交互和控制 Fluent 会话,用于创建您自己的自定义工作区。

B_etter_Man的博客 2927

Vivado ILA调试全攻略:从HDL实例化到Block Design的5个实战技巧

本文全面解析了Vivado集成逻辑分析仪(ILA)的五种核心调试方法,涵盖从HDL代码实例化到Block Design集成的实战技巧。详细对比了不同方法的优缺点与适用场景,并重点介绍了如何利用Debug Hub高效管理多时钟域复杂调试,旨在帮助FPGA开发者精准定位问题,显著提升板级调试效率。

weixin_29214199的博客 377

深入理解 Plasma(二)Plasma 细节

这一系列文章将围绕以太坊的二层扩容框架,介绍其基本运行原理,具体操作细节,安全性讨论以及未来研究方向等。本篇文章主要对 Plasma 一些关键操作的细节进行剖析。 在上一篇文章中我们已经理解了什么是 Plasma 框架以及它是如何运行的,这一篇文章将对其运行过程中的一些关键部分,包括 Plasma 提交区块的过程,当有恶意行为发生时如何构建防伪证明以及如何退出 Plasma 子链等进行剖析。...

跨链技术践行者 1万+

SAP FI模块实操:用F-28和F-32搞定客户回款与手动清账,别再让未清项报表一团糟

本文详细解析了SAP FI模块中F-28和F-32事务代码在客户回款与手动清账中的实操应用,帮助财务人员高效管理未清项报表。通过标准清账六步法和手动清账实战技巧,解决因操作不规范导致的账务混乱问题,提升应收账款管理效率。

weixin_30292843的博客 455

深入理解Plasma(三)Plasma MVP

这一系列文章将围绕以太坊的二层扩容框架 Plasma,介绍其基本运行原理,具体操作细节,安全性讨论以及未来研究方向等。本篇文章主要介绍 Plasma 的一个最小实现 Plasma MVP(Minima Viable Plasma)。 在上一篇文章中我们已经理解了 Plasma 中的一些关键操作,但是 Plasma 是一套框架,如果脱离了实际的应用,仍然很难彻底理解它。因此本篇将详细介绍 Plama...

深入浅出区块链 3830

使用Simulink设计并实现一个可调谐的二阶IIR陷波滤波器,实时去除音频中的工频噪声

《基于Simulink的音频陷波滤波器设计与实现》摘要:本文详细介绍了使用Simulink设计陷波滤波器去除音频工频噪声(如50Hz)的方法。核心内容包括:1)二阶IIR陷波滤波器的原理与传递函数;2)Simulink实现步骤(音频系统搭建、滤波器设计、频率跟踪);3)性能分析(频谱对比、时域波形、听觉测试)。通过精准消除特定频率干扰,同时保留语音信号(200Hz-4kHz),有效提升信噪比(>20dB)。文章还探讨了多陷波级联、自适应算法等高级技巧,为音频处理、语音通信等应用提供实用解决方案。

amy_mhd的博客 157

总结个人关于雷达样式的见解(脉内脉间调制)

概述 雷达有各种各样的脉内脉间调制样式,对于雷达的设计者来说,不外乎三个目的: 1、增加雷达性能,如提高测距精度,增大侦察距离等; 2、雷达的工作机制决定雷达必须采用此种样式的调制,如有些SAR雷达为保证径向测距精度,需要使用脉内宽带调制信号; 3、降低雷达被电子战装备截获的概率,也就是LPI设计。 对于雷达对抗方,则只会观察到信号存在脉内及脉间的调制。对于一般的雷达信号,通常只采用脉内调制,脉间频率调制,脉间PRI调制。 脉间调制类型 1、PD雷达的脉间特征 雷达进行脉间调制的主要是PRI..

年糕的博客 3万+

深入理解 Plasma(四)Plasma Cash

这一系列文章将围绕以太坊的二层扩容框架 Plasma,介绍其基本运行原理,具体操作细节,安全性讨论以及未来研究方向等。本篇文章主要介绍在 Plasma 框架下的项目 Plasma Cash。 在上一篇: Plasma MVP文章中我们已经理解了 Plasma 的最小实现 Plasma MVP 如何使用 UTXO 模型实现 Plasma 链下扩容的核心思想。但由于 Plasma MVP 本身...

跨链技术践行者 7866

Apollo Control——超详细入门教程(六):MPC二次规划问题转化

专栏文章列表 Apollo Control——超详细入门教程(一):基于道路误差的车辆动力学模型 Apollo Control——超详细入门教程(二):连续状态空间方程离散化与离散LQR公式推导 Apollo Control——超详细入门教程(三):基于Frenet坐标系及XY坐标系的多项式轨迹生成 Apollo Control——超详细入门教程(四):控制模块轨迹误差计算 Apollo Control——超详细入门教程(五):油门刹车标定表之双线性插值算法 ...

凉了鸭的博客 2233

深入理解Plasma(二)Plasma 细节

这一系列文章将围绕以太坊的二层扩容框架,介绍其基本运行原理,具体操作细节,安全性讨论以及未来研究方向等。本篇文章主要对 Plasma 一些关键操作的细节进行剖析。 在上一篇文章中我们已经理解了什么是 Plasma 框架以及它是如何运行的,这一篇文章将对其运行过程中的一些关键部分,包括 Plasma 提交区块的过程,当有恶意行为发生时如何构建防伪证明以及如何退出 Plasma 子链等进行剖析。需要注...

深入浅出区块链 4475

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

深入理解Plasma(四)Plasma Cash

这一系列文章将围绕以太坊的二层扩容框架 Plasma,介绍其基本运行原理,具体操作细节,安全性讨论以及未来研究方向等。本篇文章主要介绍在 Plasma 框架下的项目 Plasma Cash。 在上一篇文章中我们已经理解了 Plasma 的最小实现 Plasma MVP 如何使用 UTXO 模型实现 Plasma 链下扩容的核心思想。但由于 Plasma MVP 本身过于简单,并不能用于实际的生产环...

深入浅出区块链 1553

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

上一篇: 以太坊第2层扩容方案:状态通道(State Channels)、Plasma 和 Truebit
下一篇: 深入理解Plasma(3):Plasma MVP
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值