上一篇介绍了Plasma Cash,提到它的缺点是代币无法分割,Plasma Debit就是为了解决这个问题应运而生的。
回顾一下,在Plasma Cash中,每次充值会产生一个uid作为唯一标识,并记录充值的金额amount。注意,这个amount是不可更改的,这就是代币无法分割的关键所在。Plasma Debit把这个amount扩展成了两个值v和a:
- v表示从主链上充值的ETH数量,正常情况下是不变的
- a表示在侧链上该代币的owner可用的额度,会随交易发生变化
举个例子:用户从主链上充值了5 ETH,则v=a=5。然后他在侧链上拿出其中价值2 ETH的份额转给了别人,那么此时v=5,a=3。注意,还是同一个uid,只是包含两个属性,用代码可能更容易解释:
struct Balance {
uint256 bonded; //v
uint256 withdrawable; //a
}
mapping (uint256 => Balance) public balances;
那么这个v - a的部分归谁呢?归operator。
也就是说,所有人的交易都是通过operator作为中介的,举个例子:A手里有一个代币#1(v=a=5),B手里有一个代币#2(v=5, a=3),此时operator手中