Plasma Cash完全解析

Exchange Server 2013 运维系列——邮箱配额设置(管理中心) 邮箱配额需要设置三个参数: 1、发出警告限制:表示在向用户发出警告之前的最大存储限制。如果邮箱大小达到或超过指定值,Exchange 将向邮箱用户发送警告消息。 2、禁止发送限制:表示邮箱的“禁止发送”限制。如果邮箱大小达到或超过指定的限制,Exchange 将阻止邮箱用户发送新邮件,并显示一条描述性错误消息。 3、禁止发送和接收限制:表示此邮箱的“禁止发送和接收”限制。如果邮箱大小 阅读详情

上一篇分析了Plasma MVP的原理和实现,这一篇介绍一下Plasma的另外一个实现版本:Plasma Cash。

1.和MVP的区别

Plasma Cash和MVP最大的不同在于使用稀疏Merkle树代替了标准Merkle树。我们都知道,Merkle树的好处在于可以利用很少的数据来证明某笔交易“存在”于某个区块中,那么稀疏Merkle树有什么好处呢?除了可以证明某笔交易“存在”于某个区块中以外,它还可以证明某笔交易“不存在”于某个区块中!

怎么做到的呢?其实也很简单:计算区块Merkle根时使用一个固定高度(257层)的Merkle树,每个uid对应一个叶子节点(忽略哈希碰撞概率)。如果该区块中包含某个uid的交易,则在对应的叶子节点处放置该交易,其他叶子节点都为0。这样一来,如果我们需要证明区块中不存在针对某个uid的交易,只需要提供0的哈希值和对应的merkle proof就可以了!
在这里插入图片描述

2.充值

Plasma Cash是用来存储和转移非同质(non-fungible)代币的。所谓非同质代币,是指这些代币不可分割、不可互相替代。这一点在游戏领域比较容易理解:某个代币可能代表一把剑,另一个代币可能代表一个盾牌,这两个装备的价值是不同的,另外你也不可能把剑或者盾牌拆成一小块一小块地卖给别人。举个具体的例子:你充值10ETH,会生成一个代币,然后你再充值100ETH,又会生成另外一个代币。这两个代币的价值显然是不相同的,无法互相替代,同时你跟别人交易时只能更改代币的所有权,不能把它们分割成一小份一小份地花掉。以Omisego的实现为例,主链上会生成两个funds对象,并为它们各自分配一个uid,最后发送Deposit事件:

uint uid = uint256(keccak256(currency, msg.sender, depositCount));
wallet[uid] = funds({
    hasValue: true,
    isConfirmed: false,
    amount: amount,
    depositor: msg.sender
});
depositCount += 1;
emit Deposit(msg.sender, amount, uid);

operator监听到这个Deposit事件,在侧链上为这个uid生成一笔deposit交易,之后就可以在侧链上自由交易这个新资产了。

3.交易

之前提到过,资产是不可分割的,交易只能转让所有权。

在Omisego的实现中,每笔交易中包含下面几个字段:

  • uid:资产唯一标识
  • amount:和uid关联的充值金额(用于验证)
  • new_owner:资产的新主人
  • sig:交易签名
  • prev_block:上一笔交易所在的区块高度
  • spent:新主人是否又把资产花出去了

重点在于后面两个参数的验证:首先在prev_block中查找该uid对应的交易,如果有并且spent为false,则说明当前这笔交易是有效的,并且把prev_block中的那笔交易的spent设置为true。
在这里插入图片描述

4.退出 & 挑战

用户想从侧链上退出时,需要提供要退出的交易和它上一笔交易的merkle proof用于验证,我们看一下startExit()的函数原型:

    function startExit(
        bytes prevTx,
        bytes prevTxProof,
        uint prevTxBlkNum,
        bytes tx,
        bytes txProof,
        uint txBlkNum
    )

也就是说,要证明有人把钱转给了你,还要证明一下他的钱是从哪里来的。

如果用户发现了一笔非法退出请求,则需要对其发起挑战。我们把要退出的交易称为child,它的上一笔交易称为parent,则可以分为3种情况:

1.child交易的后面有人把钱花掉了

如下图所示,说明C对uid 100进行了双花,挑战立即成功:
在这里插入图片描述

2.parent和child交易之间还有关于这笔资产的交易

如下图所示,说明parent并非child的上一笔交易,挑战立即成功(B有可能对uid 100进行了双花):
在这里插入图片描述

3.parent之前有疑似双花的交易

如下图所示,A有可能对uid 100进行了双花。此时挑战不会立即成功,但会加入挑战列表。被挑战的人必须响应该次挑战,证明在这两笔冲突的交易之间,uid 100又被重新转给了A(紫色交易),否则无法完成提现:
在这里插入图片描述

5.优点和缺点

Plasma Cash具有非常高的可扩展性,由于使用了稀疏Merkle树,用户只需要关心他们自己的代币的流向。

当然,缺点也是很明显的,它只能支持非同质代币的交易,适用范围非常局限。后面会有一个叫Plasma Debit的项目来解决这一问题。另外,有人诟病验证代币所有权时需要比较大的数据量的问题,有一个叫做Plasma XT的项目正在试图使用checkpoint的手段消除这一缺陷的影响。

参考:

https://github.com/omisego/plasma-cash

https://medium.com/@kelvinfichter/whats-a-sparse-merkle-tree-acda70aeb837

https://www.learnplasma.org/en/learn/cash.html

更多文章欢迎关注“鑫鑫点灯”专栏:https://blog.youkuaiyun.com/turkeycock
或关注飞久微信公众号:
在这里插入图片描述

【安卓逆向】python版本 sha源码 免责声明本文内容仅供学习交流使用,严禁用于商业和非法用途。抓包数据、敏感网址以及数据接口已进行脱敏处理。 注:如有引用,请标注文章地址!!!!!!! 阅读详情

相关推荐

从零开始:kohya_ss环境部署与LoRA/SDXL模型训练实战指南

本文提供了一份详细的kohya_ss环境部署与模型训练实战指南。从零开始,手把手教你使用Conda创建虚拟环境、安装依赖并启动Web GUI界面。核心内容涵盖高质量数据集的准备方法,并重点解析了如何使用kohya_ss工具进行LoRA模型和SDXL模型的微调训练,包括关键参数配置与常见报错解决方案,帮助初学者快速上手AI绘画模型定制。

weixin_29162439的博客 535

python 字典简单实现Switch Cash

""" python 字典实现Switch Cash """ def func_1(str): str = str.replace("a","") return str def func_2(str): str = str.replace("a", "aa") return str def notify_result(type, str): types = { "f1" : func_1, "f2": func_2, } ..

井底小蛙的博客 435

Delta-Sigma调制(DSM)技术

前言 数字信号处理和通信系统的性能很大程度上受到了模拟信号到数字信号转换接口——ADC的精度和分辨率的限制。而传统的线性脉冲编码调制(PCM)ADC受到了制造工艺的限制,无法达到很高的分辨率。但基于Delta-Sigma调制技术的ADC可以在现有工艺下实现高分辨率(大于16位),同时由于结构简单,所以易于实现。低成本高性能使得Delta-Sigma调制技术得到了广泛的应用。 Delta-Sigma型ADC的结构原理图如下图所示: 它最大的优势在于仅用1位ADC进行数据转换,同时其模拟电路部分结构简单不需要

阿星的博客 2万+

Plasma Cash

Plasma Cash

mutourend2010@gmail.com 448

Jmeter压测报告

账户分析压测报告 一、测试内容 本次测试是针对账户分析进行的压力测试,在账户分析查询接口中,只对用户资产查询接口进行压力测试,其中不包含用户签名校验功能。 二、测试方法 本次采用apache的开源测试工具jmeter,采用本地动态拼装请求数据并通过http协议GET方式发送每日盈亏查询请求。并采用1000个用户账号测试访问情况。...

qq_31108731的博客 6627

FPGA&ASIC笔面试题(四):编写Verilog代码描述跨时钟域信号传输,快时钟域到慢时钟域(补充)

      跨时钟域处理从快时钟域到慢时钟域,如果是下面第一个图,cklb则可以采样到signal_a_in,但是如果只有单脉冲,如第二个图,则不能确保采样掉signal_a_in。这个时候用两级触发器同步是没有用的。 代码如下: //Synchronous module Sync_Pulse( input clka, input clkb, input rst_n, input pulse_ina, output pulse_outb, ou

千歌叹尽执夏的博客 2511

UTXO 与账户余额模型

UTXO 与账户余额模型 从写上一篇介绍区块链共识算法的文章 分布式一致性与共识算法 到现在已经过去了三个多月的时间;虽然整个行业内有非常多的变化,但是区块链技术,尤其是底层技术却没有太多的改变。这篇文章将要介绍的就是 Bitcoin 以及众多的加密货币,比如 Ethereum、NEO 和 Qtum 的底层结构究竟是什么样的。 目前的绝大多数区块链项目不是使用 UTXO 模型作为底层的数据结构...

周红伟讲AI 2588

CCF编程培训师资认证(PTA)标准(教学能力T)

随着计算机科学的不断发展,计算机相关技术应用到社会各个行业,越来越多的青少年参加到了计算机程序设计的学习中,这对编程培训教师提出了更高的专业要求和职业要求。CCF开展编程培训师资认证项目(Programming Trainer Accreditation,PTA),旨在建立一个规范的、科学的、权威且有公信力的三方认证。认证考试分编程专业能力(P)和教学能力(T)两部分。本标准根据《CCF编程培训师资认证条例》第十条制定,旨在明确教学能力(T)的测试标准。

lan_in的博客 1709

Zcash:工作原理

工作原理 Zcash 建立在严格科学之上、保护隐私的数字货币。交易可以高效、安全且低手续费地进行,同时还能保证交易的隐私性。您还可以选择性地公开地址和交易信息,以满足审计或监管的要求。 不同的交易类型 保护隐私 查看例子 解蔽 查看例子 入蔽 查看例子 公开 查看例子 Zcash 地址分为隐蔽地址 (z-addresses) 和透明地址 (t-addr...

跨链技术践行者 1万+

杰理SDK入门教程(一):SDK的四种编译方式的使用

杰理SDK提供了四种主要编译方式:1) JL Studio官方IDE,适合初学者;2) VS Code轻量级编辑器,需在SDK根目录打开;3) 命令行/脚本编译,灵活支持自动化;4) Code::Blocks开源IDE。每种方式都有详细操作指南,开发者可根据需求选择,初学者推荐从JL Studio开始熟悉编译流程。环境配置注意事项和编译成功标识均有明确说明,确保开发效率。

qq_42014563的博客 1149

Spring AI从入门到精通:构建智能Spring应用的全面指南

随着人工智能技术的快速发展,将大语言模型(LLM)与企业应用集成已成为趋势。Spring AI作为Spring官方推出的AI集成框架,为开发者提供了便捷、标准化的方式来构建智能应用。本文将从基础概念到高级应用,全面介绍Spring AI的核心功能与实践技巧。Spring AI 是 VMware 于 2023 年推出的开源框架,旨在简化大语言模型(LLM)与 Spring 应用的集成。它提供了统一的 API 抽象,支持多种 LLM 供应商,包括 OpenAI、Azure OpenAI、Hugging Face

qq_36929638的博客 1068

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

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

weixin_33963189的博客 854

数据分析案例-对某宝用户评论做情感分析

目录 原始数据 绘制词云图 情感分析 原始数据 原始数据为某宝一商品的用户评论数据 绘制词云图 # coding=utf-8 import jieba import re import wordcloud import imageio # 打开需要分析词频的文本 with open('淘宝评论3.0.txt', encoding='utf-8') as f: data = f.read() # 文本预处理 :去除一些无用的字符只提取出中文出来 new_data

m0_64336780的博客 1万+

深入理解 Plasma(四)Plasma Cash

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

跨链技术践行者 7866

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Ethereum Plasma MVP and Plasma Cash

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

跨链技术践行者 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Plasma技术详解

Plasma的设计模型有两个主要的分支:Plasma MVP(Minimal Viable Plasma,最小可行的Plasma)和Plasma Cash。Plasma MVP的目标是为最基本的可用的Plasma提供设计规范。Plasma cash是做了部分修改的一个Plasma版本,使用户进行资产证明或验证时所需提供的数据更少。 回顾: Qtum量子链研究院:Plasma技术详解(上篇) ...

跨链技术践行者 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

深入理解 Plasma(二)Plasma 细节

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

跨链技术践行者 1万+

深入理解Plasma(四)Plasma Cash

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

深入浅出区块链 1553

Plasma Debit原理分析

回顾一下,在Plasma Cash中,每次充值会产生一个uid作为唯一标识,并记录充值的金额amount。注意,这个amount是不可更改的,这就是代币无法分割的关键所在。Plasma Debit把这个​​amount扩充套件成了两个值v和a: v表示从主链上充值的ETH数量,正常情况下是不变的 a表示在侧链上该代币的owner可用的额度,会随交易发生变化 举个例子:使用者从主链上充值了5 E...

跨链技术践行者 8198

Plasma Cash 合约解读

作者介绍 虫洞社区·签约作者 steven bai Plasma Cash 合约解读 Plasma Cash 合约解读 1. 合约代码 2. 合约文件简单介绍 3. Plasma Cash 的基础数据结构 3.1 Plasma Cash 中的资产 3.2 Plasma Cash中的交易 3.3 Plasma Cash 中的 Block 3.4 Plasma Cash 中资产的回归主链以太坊 ...

虫洞社区·中美区块链技术学习社区 680

区块链研究实验室 | Plasma cash智能合约与退出游戏

当然,对于保管链的证明是没有用的,除非它也可以传递给主链以保证资金的安全。链上接受证明的机制是Plasma安全模型的核心,被称为“退出博弈”。 当用户想把他们的钱从Plasma链上转移出去时,这会打开一个争议期。在争议期结束时,如果没有未解决的争议,款项将从主链上的Plasma合同发送给退出者。在争议期间,用户可以提交“挑战”,声称退出的资金不属于退出的人。上面描述的证据保证对这些挑战的“反应”...

willam1的专栏 376

区块链研究实验室 | Plasma Cash区块结构的规范

Plasma Cash推出的最重要的改进之一是“light proofs”。Plasma 结构要求用户下载整个Plasma 链,以确保他们的资金安全。使用Plasma Cash,他们只需下载与自己资金相关的Merkle树枝。 这是通过引入一个新的事务有效性条件来实现的:特定CoinID的事务只在Merkle树的CoinIdth叶中有效。因此,只下载该分支就足够确信该硬币不存在有效的交易。这...

willam1的专栏 244

极简 Plasma MVP 和 Plasma Cash 介绍

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

以太中文网 686

区块链扩容系列之Plasma Cash

    Plasma Cash另外一种Plasma技术,大部分逻辑和Plasma MVP差不多,因此本文主要介绍plash cash不一样的地方,Plasma MVP的相关信息请看这篇文章【区块链扩容系列之Plasma MVP】。Plasma Cash的整体架构如下:        用户调用deposit将主链的ETH, ERC20, ERC721代币生成coin,coin类似房产,只能整...

区块链斜杠青年(爱踢门) 2974
上一篇: Plasma MVP完全解析
下一篇: Plasma Debit原理分析
TurkeyCock
博客等级 码龄21年 406粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值