Making sense of layer2 翻译解读(二)

6 State Channel

我们知道,在以太坊进行转账交易,因为节点依照POW机制,先要争抢记账权,然后打包数据,再出块,速度是比较慢的,使用体验不太好。

State Channel 是众多Layer2扩容方案中的一个基础解决方案,这个方案的解决方法大概是这样的:

1 先在以太坊上创建一个智能合约,这里面存着交易者的ETH,这个智能合约被打包记录在区块里。

2 同时创建一个单独的交易通道,把智能合约中的ETH映射过来,交易者就可以在这个通道里进行交易了。

3 每次交易都需要双方的签名,而且他们两个人都保留着交易的全部历史数据。

4 当他们不想要交易了,那么两个人把最新的交易状态反馈给以太坊,如果两个人提交的状态是一致的,那么之前部署在以太坊上的智能合约,就会根据最新的状态将ETH分别打入两个人的账户。这里的交易状态是两个人各自的账户余额,变化的余额也就意味着交易的产生。

Making sense of layer2 翻译解读(二)_第1张图片
image.png

如上图所示,两个人同时提交的是4#的Transaction状态,那么系统就可以根据状态给两个人分别打币了。但是,如果其中有一个人撒谎,两个人提交的状态不是一致的怎么办?

Making sense of layer2 翻译解读(二)_第2张图片
image.png

如果出现了一方撒谎,提交的不是最新状态的情况,系统会遵循两个规则

1 谁提交的状态更新,谁就是对的
2 提交之前状态的一方,就必须接受惩罚

Making sense of layer2 翻译解读(二)_第3张图片
image.png

如下图所示,系统判断Bob撒谎了,因为他提交的不是最新的状态。但系统是如何判断的,在本次的分享中,没有明确。

Making sense of layer2 翻译解读(二)_第4张图片
image.png

状态通道带来的好处是什么呢?

1 Bob 和Alice可以迅速的进行交易,而且没有手续费
2 最坏的情况是,你可能需要向区块链提交证明,来解决争议,这会耗费一些时间和手续费。
3 隐私保证。对于处于状态通道外部的人来说,在链上,可以看到的就是一笔经过多方签名的交易,根本无法判断到底是不是状态通道。

状态通道的技术用于支付,就成了支付通道,同样可以随时向Layer1更新状态,灵活的退出;也可以用于交互频繁的游戏应用,比如象棋等棋类游戏,和复杂的财务合约。

状态通道的交易或者状态更新都是发生在链下,只通过多重签名和Layer1互动,完成创建通道,退出,争议的处理。只要用户遵守协议,并且Layer1没出问题,Layer2始终可以向其提交状态更新,也没有其他的风险产生。

Meta channels

Meta channels 是状态通道的扩展,翻译为元通道,我的理解,已经建立的状态通道可以作为中介通道,将两个没有建立直接状态通道的陌生人,联系起来。

如下图,Alicehe 和Bob之间互不信任,或者不认识,不想单独开创通道,但是他们两个人都认识Ingrid,信任她;可以通过签名分别和Ingrid 建立通道,这样Alice和Bob 之间也能进行交易了。

Making sense of layer2 翻译解读(二)_第5张图片
image.png

上面的例子,只要双方有认识的熟人就能进行交易,即使不是直接认识的熟人也没问题。理论上,任何地方的两个陌生人都可以进行交易,如下图,A和C进行交易,就可以通过已有的多条通道进行,只不过系统的复杂程度和成本,风险会大大增加。

Making sense of layer2 翻译解读(二)_第6张图片
image.png

或许下面的这个模型能把事情简化:

通过一个Hub,可以理解为可信任的中间人,通过和这个中间人的通道,任何人之间都可以进行交易,类似银行这种中心化组织。但是,毛豆爸认为,Hub和银行的区别是,任何人和这个Hub的交易状态都要双重签名或者多重签名,Layer1来监督和保证Layer2的安全,而银行这种组织是没有外部的力量来监督的。当然机制的设计也很重要,如何保证这个中间人遵守协议,不作恶。

Making sense of layer2 翻译解读(二)_第7张图片
image.png

但是,签名的状态是不是都存储在Layer1,这个还不明确。如果没有把历史签名的状态都放在Layer1 ,Layer1怎么判断哪个签名是最新的? 又怎么判断签名有没有造假?

7 Plasma

侧链的问题在于,使用者必须依赖侧链自身的安全性。一旦侧链出了问题,用户的财产就会受到威胁。

我们可不可以,把侧链改造成Layer2的基础,同时保证只要出现问题,用户都可以把自己的资产撤到主链上?

这就是Plasma要做的事情。Plasma 不是单个的解决方案或者项目,而是基于以太坊的一整套架构,来搭建扩展的应用。

从下面的图看到,Plasma的主链被称为,Plasma root ,实际的游戏和交易都发生在Plasma Chain 。子链Plasma Chain 和Plasma root 之间的红色箭头,代表着相对频繁的互动。State Channel 则不同,只有在交易结束关闭通道时,才会和主链交互。

Making sense of layer2 翻译解读(二)_第8张图片
image.png

那么Plasma chain通过什么方式和Plasma root 交互呢? State commitments ,状态承诺。

在Plasma root生产区块过程中,Plasma chain会将状态提交过来,状态也就被记录在区块中了。每生产一个区块,就会有一个新的状态被记录。

Making sense of layer2 翻译解读(二)_第9张图片
image.png
Making sense of layer2 翻译解读(二)_第10张图片
image.png

在退出的时候,用户就可以提交状态记录的凭证给Plasma root ,经确认与区块中的数据一致后,用户的资产就可以转移到Plasma root上的账户中。

当然也有可能用户会提交一个更早的区块中的记录,而这并非最终的账户余额,所以Plasma root应该有一套机制来判断这是不是一个最新的状态。究竟是什么样的机制,这个PPT里没有明确。

对于Plasma 来说,所有的交易都发生在Plasma chain 上,也就是链下;一旦出现问题,用户可以提交最新状态给Plasma root ,记录在区块中的数据可以保证用户拿回自己的资产。

完成上述设想的一个关键在于,以太坊是可编程的,这样就可以通过编程,建立应用或者子链与主链之间的链接,将主链的安全和权威传递给子链。

Plasma 架构目前有几个实现不同功能版本:

Making sense of layer2 翻译解读(二)_第11张图片
image.png

你可能感兴趣的:(Making sense of layer2 翻译解读(二))