网赚论坛

 找回密码
 免费注册
查看: 659|回复: 0
打印 上一主题 下一主题

Plasma现金的拟议扩展

[复制链接]

21

主题

21

帖子

84

积分

Ⅰ级财主

Rank: 1

积分
84
跳转到指定楼层
楼主
发表于 2018-11-25 16:05:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
来源:Nervosfans



本方案为Plasma现金的拟议扩展。

机制

Plasma现金中,交易Merkle树被分成多个时隙,每个时隙存储固定面额的ETH(存入金额)并跟踪公钥。该时隙中的每笔交易都会对当前与该硬币相关联的公钥进行更新。

Plasma借记中,时隙不仅跟踪公钥,还会跟踪0到v之间的数字a,其中v是在主链上存入该帐户的ETH总量。V保持不变,但每笔交易中的a会有所变化,代表了当前硬币中所有者的比例。存入该时隙的剩余资金为运营商所拥有。与其他交易一样,变更a的交易需要当前持有人的签名。(运营商无需签署更新,原因是运营商包含交易时已表同意)

提出硬币时,硬币持有者收到a,运营商收到v-a。(需要稍微变更下退出规则,允许所有者或运营商退出硬币。)

最初创建硬币时,a等于v。运营商可使用单独的operatorTopUp函数在父链合约上将额外的ETH存入该硬币增加v的数量(进而增加运营商在硬币中持有的余额)。

如此,用户可向运营商支付任意的小额费用。

这个方案一个很有用的地方在于,Plasma现金用户可向链上其他用户支付任意金额(前提是接收者的硬币资金供应不足)。具体而言,用户可创建一笔原子交易(即,一笔更新多个硬币的交易且只有交易被包含在同一个区块的两个时隙中才视为有效),其中发送人帐户为记入该金额的借方,收件人帐户为记入该金额的贷方。

譬如,Alice有个8ETH的硬币,当前余额为4ETH;Bob有个5ETH的硬币,当前余额为3ETH。那么,Alice创建一笔让自己余额变成2.7ETH,Bob余额变成4.3ETH的交易,就实现了Alice到Bob间一笔1.3ETH的转账。运营商会认可并(分别在Alice和Bob的时隙中)包含这笔交易,因为交易并未改变运营商的总余额(总额6ETH保持不变)。

理论

以上解释将Plasma借记定义为具有部分余额的Plasma现金。

然而,还有种其他(相同的)方式可以实现这种结构。每个Plasma借记币基本上等同于当前硬币所有者和运营商之间的双向支付通道(类似闪电网络中基于多重签名的支付通道)。唯一的区别是支付通道的状态会在主链上定期公证(运营商其他通道的Merkle根中)。

这种公证赋予了Plasma借记币支付通道所不具备的两个重要功能:


  • 可转让。指Plasma借记币在不同所有者之间的转移(方式与Plasma现金币相同)。相当于允许支付通道中的一位参与者将自己对该支付通道的利益永久地指定给新的一方,这是之前的支付通道结构所不具备的。最重要的是,新的各方得以加入支付网络而无需进行链上交易(闪电网络有这个缺点)。原子性。Plasma借记币可以用同一Plasma链上的其他硬币原子更新,无需HTLCs。(围绕数据可用性存在类似边缘退出的极端情况,使得原子大法没设想中的那么厉害,不过依旧有非常大的潜能。)
局限

· 为接收此种转账,接收方持有(或接收)的硬币必须是资金供应不足的,不足量至少等于转账金额。这个类似闪电网络通道的限制,一方与对方间的净余额受初始存入通道金额的限制,且可能要求大量资金锁定(特别运营商方)。但是,通道可转让应该可以方便的绕过这些局限。

· 这种简单设计仅适用于具有单个运营商的Plasma现金链。但是,也能借助合并拆分硬币手段实现更为通用的版本(下面会做陈述),且不受制于单个运营商的制约。

扩展

· 余额更新其实不必包含在Plasma区块中,原因是更新仅需持有者和运营商双方同意即可。退出机制变更相对容易,变更后可支持运营商和当前的硬币持有者通过在状态更新上交换签名(几乎完全等同于支付通道)来立即更新各自的余额。唯一需要公证(即入Plasma区块)的交易是那些变更通道所有者或涉及多个硬币的交易。

· 若硬币可拆分成任意面额且能重新合并(提案在此),就可以实现Plasma借记的通用版,其中硬币的“剩余”金额可由任何一方拥有,而非仅运营商所有,且任何一方都能作为路由支付的流动性提供者(前提是同意以原子方式重新合并和重新拆分硬币)。这种通用版本更为复杂但也更为强大,且当Plasma现金链有多位运营商时,可能还是必要的操纵。

· 通过将“脚本语言”的表现力从单一公钥的基础上进行扩增,还能使得Plasma借记支持硬币充当更为复杂的状态通道。譬如,引入支持哈希锁定和超时的功能时,Plasma借记帐户可以实现HTLCs,进而实现与闪电网络通道相同的功能。这也意味着Plasma现金链上的运营商不仅闪电枢纽技能上身,能与闪电网络的参与者(包括其他加密货币的参与者)互操作的同时,还兼具Plasma现金的部分优势(比如用户间的状态通道转让技能)。

· 还有可能实现跨多重Plasma链的原子交易。若跨Plasma链原子交易可行,那么使用Plasma借记做无HTLCs的跨Plasma链支付也是可行的(前提是有人在两个链上都有账户且愿意路由付款)。


注:

Plasma现金

基本上,我们可以设计个Plasma的修订版:

1. 每单笔存款都对应唯一的硬币ID;通证不可分割、不可合并。

2. 不按照txindex的顺序将交易存储于二元Merkle树中,而是规定将其存储于稀疏的简单Merkle树或patricia树中,索引就是花掉的硬币ID。

注意,这样用户就有了个证明自己硬币或紧凑的证明:自硬币存入时的全部交易也代表了硬币历史,外加‘所有未包含花费该硬币交易的区块’的未包含证明(a proof ofnon-inclusion)共同验证硬币未被重复花费。证明包含n个硬币、t个区块,则大小为t∗log(n)。用户将硬币转账给其他用户时,同时将整个证明一齐转移即可。

因此,Plasma运营商仅维护与用户间的链接即可,且每创建区块时,仅向用户发布证明即可,而非与用户没有的硬币相关的任何数据。很明显,不属于这些证明的数据无法用于欺诈退出或双重花费用户硬币,因此用户是安全的。由于硬币不可替代,即便成欺骗其他用户也不能会Plasma合约变成部分储备金,但是这在最小可行Plasma中是却可能的。

可对Plasma链运营商进行分片,抛开类Plasma系统(和通道系统)处理非常高的交易负荷时可能出现用户无法退出等情形,与链运营商与用户,系统的扩展性几乎没有限制。这种设置似乎很合适高吞吐低中状态的应用,比方说小额支付和交易所。

此外,也可以不再需要确认。通过以下退出程序来完成此操作:

1. 想退出硬币,需要提供硬币所有权历史中的最后两笔交易记录(即退出的硬币C及其父币P(C))

2. 质疑退出有三种形式:(i)提供交易花费C的证明,(ii)提供交易花费C之前出现的P(C)的证明,(iii)提供硬币历史中P(C)之前的交易C *

3. (i)和(ii)类型的质疑立即阻止退出。可以通过提供C*的直接子项来响应(iii)类型的挑战,但必须等于P(C)或在P(C)之前

以上以诚实用户在完全验证整个硬币历史前不会花掉硬币为重要前提。否则,Plasma链在交易飞行时开始包括不可用或无效的数据的情形不无可能,那么在这种情况下,P(C)和C之间就有可能出现重复花费或无效花费;因此需要稍微复杂的退出机制将此考虑在内。



https://ethresear.ch/t/plasma-debit-arbitrary-denomination-payments-in-plasma-cash/2198

https://ethresear.ch/t/plasma-ca ... -data-checking/1298
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

广告合作|Archiver|手机版|小黑屋|财富吧

GMT+8, 2024-4-30 12:44 , Processed in 1.326002 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.1

© 2014-2021 财富吧

快速回复 返回顶部 返回列表