6 State Channel
我们知道,在以太坊进行转账交易,因为节点依照POW机制,先要争抢记账权,然后打包数据,再出块,速度是比较慢的,使用体验不太好。
State Channel 是众多Layer2扩容方案中的一个基础解决方案,这个方案的解决方法大概是这样的:
1 先在以太坊上创建一个智能合约,这里面存着交易者的ETH,这个智能合约被打包记录在区块里。
2 同时创建一个单独的交易通道,把智能合约中的ETH映射过来,交易者就可以在这个通道里进行交易了。
3 每次交易都需要双方的签名,而且他们两个人都保留着交易的全部历史数据。
4 当他们不想要交易了,那么两个人把最新的交易状态反馈给以太坊,如果两个人提交的状态是一致的,那么之前部署在以太坊上的智能合约,就会根据最新的状态将ETH分别打入两个人的账户。这里的交易状态是两个人各自的账户余额,变化的余额也就意味着交易的产生。
image.png如上图所示,两个人同时提交的是4#的Transaction状态,那么系统就可以根据状态给两个人分别打币了。但是,如果其中有一个人撒谎,两个人提交的状态不是一致的怎么办?
image.png如果出现了一方撒谎,提交的不是最新状态的情况,系统会遵循两个规则
image.png1 谁提交的状态更新,谁就是对的
2 提交之前状态的一方,就必须接受惩罚
如下图所示,系统判断Bob撒谎了,因为他提交的不是最新的状态。但系统是如何判断的,在本次的分享中,没有明确。
image.png状态通道带来的好处是什么呢?
1 Bob 和Alice可以迅速的进行交易,而且没有手续费
2 最坏的情况是,你可能需要向区块链提交证明,来解决争议,这会耗费一些时间和手续费。
3 隐私保证。对于处于状态通道外部的人来说,在链上,可以看到的就是一笔经过多方签名的交易,根本无法判断到底是不是状态通道。
状态通道的技术用于支付,就成了支付通道,同样可以随时向Layer1更新状态,灵活的退出;也可以用于交互频繁的游戏应用,比如象棋等棋类游戏,和复杂的财务合约。
状态通道的交易或者状态更新都是发生在链下,只通过多重签名和Layer1互动,完成创建通道,退出,争议的处理。只要用户遵守协议,并且Layer1没出问题,Layer2始终可以向其提交状态更新,也没有其他的风险产生。
Meta channels
Meta channels 是状态通道的扩展,翻译为元通道,我的理解,已经建立的状态通道可以作为中介通道,将两个没有建立直接状态通道的陌生人,联系起来。
如下图,Alicehe 和Bob之间互不信任,或者不认识,不想单独开创通道,但是他们两个人都认识Ingrid,信任她;可以通过签名分别和Ingrid 建立通道,这样Alice和Bob 之间也能进行交易了。
image.png上面的例子,只要双方有认识的熟人就能进行交易,即使不是直接认识的熟人也没问题。理论上,任何地方的两个陌生人都可以进行交易,如下图,A和C进行交易,就可以通过已有的多条通道进行,只不过系统的复杂程度和成本,风险会大大增加。
image.png或许下面的这个模型能把事情简化:
通过一个Hub,可以理解为可信任的中间人,通过和这个中间人的通道,任何人之间都可以进行交易,类似银行这种中心化组织。但是,毛豆爸认为,Hub和银行的区别是,任何人和这个Hub的交易状态都要双重签名或者多重签名,Layer1来监督和保证Layer2的安全,而银行这种组织是没有外部的力量来监督的。当然机制的设计也很重要,如何保证这个中间人遵守协议,不作恶。
image.png但是,签名的状态是不是都存储在Layer1,这个还不明确。如果没有把历史签名的状态都放在Layer1 ,Layer1怎么判断哪个签名是最新的? 又怎么判断签名有没有造假?
7 Plasma
侧链的问题在于,使用者必须依赖侧链自身的安全性。一旦侧链出了问题,用户的财产就会受到威胁。
我们可不可以,把侧链改造成Layer2的基础,同时保证只要出现问题,用户都可以把自己的资产撤到主链上?
这就是Plasma要做的事情。Plasma 不是单个的解决方案或者项目,而是基于以太坊的一整套架构,来搭建扩展的应用。
从下面的图看到,Plasma的主链被称为,Plasma root ,实际的游戏和交易都发生在Plasma Chain 。子链Plasma Chain 和Plasma root 之间的红色箭头,代表着相对频繁的互动。State Channel 则不同,只有在交易结束关闭通道时,才会和主链交互。
image.png那么Plasma chain通过什么方式和Plasma root 交互呢? State commitments ,状态承诺。
在Plasma root生产区块过程中,Plasma chain会将状态提交过来,状态也就被记录在区块中了。每生产一个区块,就会有一个新的状态被记录。
image.png image.png在退出的时候,用户就可以提交状态记录的凭证给Plasma root ,经确认与区块中的数据一致后,用户的资产就可以转移到Plasma root上的账户中。
当然也有可能用户会提交一个更早的区块中的记录,而这并非最终的账户余额,所以Plasma root应该有一套机制来判断这是不是一个最新的状态。究竟是什么样的机制,这个PPT里没有明确。
对于Plasma 来说,所有的交易都发生在Plasma chain 上,也就是链下;一旦出现问题,用户可以提交最新状态给Plasma root ,记录在区块中的数据可以保证用户拿回自己的资产。
完成上述设想的一个关键在于,以太坊是可编程的,这样就可以通过编程,建立应用或者子链与主链之间的链接,将主链的安全和权威传递给子链。
Plasma 架构目前有几个实现不同功能版本:
image.png
网友评论