原文标题:基于Statechain的闪电网络通道
原文作者:SHINOBI??
去年我写过Commerceblock团队开发的MercuryWallet?功能,这是一种statechain?和CoinSwap?的双料实现。它既引入一种新的混币工具,又是第一种实现了statechain这种新的二层扩展方案的钱包。他们团队在RubenSomsen的原始statechain提议基础上作了一些变更,使得没有ANYPREVOUT/Eltoosighashflag?也能正常实现statechain,还整合一种新的CoinSwap设计,让用户可以多次混币而无需在链上交互。
背景
给尚未读过我前一篇文章的读者简单总结一下:statechain是一种离链机制,用于在完全离链的任何人之间免费地转账。资金的原始所有者跟一个statechain运营者合作,构造一个ECDSA-MPC地址,该地址的私钥是分成两半的,一半在用户手里,另一半在运营者手里,然后双方要一起构造一个带有时间锁的取款交易并签好名,再然后用户再把钱打到这个地址里去。
没有任何一方完整控制这个私钥,而且用户拿着一个预先签好名的交易,因此可以在时间锁解锁后单方面拿回这些资金。当用户希望转移这笔资产时,他们就通知运营者,后者跟支付的接收方合作,一起创建新的一组私钥碎片,然后生成另一笔带有时间锁的交易并签名;最后,运营者删除上一份私钥的碎片。
如此一来,现在运营者手上的私钥碎片,将仅能与资金的新主人手上的私钥碎片结合,所以只要他们删除了旧的私钥碎片,他们就无法与资金的旧主人一起花费资金。此外,越新的取款交易,其时间锁越短,因此资金的新主人总是能比旧主人更快取走资金。这种机制限制了statechain资金可以转移的次数,到点了就必须取出。
基于statechain的闪电通道
Commerceblock现在正在撰写一个新的BLIP,以实现一种在Somsen的最初提议中便提出的东西:在一笔statechain资金上建立一条闪电通道。
statechain自身的一个缺点在于,每次转移时,都是整个UTXO一起转移的。但是,假如statechain的取款交易不是把资金转移到一个普通用户的地址中,而是转到一条闪电通道中呢?那么statechain资金的一部分就可以通过通道的初始余额分布来传输,而这条通道随后便可按常规发起闪电支付。
整个流程也从一名用户创建一笔statechain资金起步。创建者和这个Statechain的运营者走一遍常规流程:创建共有私钥,并签名带有时间锁的区块交易;然后创建者找到一个愿意接受statechain资金的通道对手方。Alice和Bob一起,如法炮制Alice与运营者一起分割私钥的流程,创建出他们自己的共有公钥。然后,俩人都把他们的共有公钥和个人公钥碎片分享给这个Statechain的运营者。这使得运营者可以质询他们,让他们各自签名并证明自己同意按最新的余额合作关闭statechain,而不必等候statechain的取款时间锁过期。
从这里开始,有了Bob的授权,Alice和这个Statechain的运营者就可以签名一笔交易,将statechain中的资金直接花费到一个多签名的闪电通道中,并处理闪电网络通道的创建流程。
这时候,这个Statechain地址依然控制在Alice和运营者手中,但开启闪电通道的交易现在到了Bob手上,而且其时间锁比最初那笔取款交易更短,保证了这笔交易可以在Alice单方面关闭这个Statechain之前就生效。然后,Alice和Bob跟运营者完成最后一次更新,使用他们的共有公钥跟运营者创建一笔将statechain资金花费到Alice-Bob通道的取款交易,并且这笔取款交易的时间锁更短。现在,Alice和Bob可以向外公布自己有一条闪电通道了。
,因为跟Alice匹配的私钥碎片已被运营者销毁;取而代之的是Alice-Bob的通道。
全部转给Carol,因为这需要把Alice和Bob在通道内发生的所有交互的记录都转移给Carol,否则Alice和Bob可以串谋欺诈Carol;但这里没有设计保证Alice转移了所有资料的机制,这需要Alice/Bob在每次发起闪电支付之后,都提交一个承诺。不过,基于上文所述的原理,也可以考虑将它实现为多方参与的coinpool,而不是两方参与的闪电通道。)
提升statechain的效用
这一提议将大大提升statechain的效用,因为它放宽了statechain原本严格的流动性要求。不论什么时候某人想接受一笔statechain资金但发现面额跟支付额不匹配,发送者都可以通过跟TA开启一条闪电通道来解决这个问题,直到某一方花完自己剩下的资金,再完成一笔转移全部statechain资金的转账。这样的可能性不仅提升了statechain的用途,也提高了闪电网络的效用。
通道内余额的再平衡,对闪电网络中的节点是必要的功能,不论你是路由节点还是仅仅收发交易的边缘节点。当通道内的资金全部移动到了通道的一端,这条通道就失去了向某个方向传递支付的作用。所以,你需要把一条通道中的资金移动到另一条通道中,通过引起别的通道的失衡来重新平衡你自己的通道。最终,这样的动态会以某处的通道必须在闪电网络和链上交换资金收尾。
Statechain则允许流动性像在链上移动那样,但又不需要创建链上的足迹,也不必为此支付手续费。假设你有一条枯竭的通道,所有的余额都在你的对手那边,你已经没有可以花费的容量了,同时你又有一个Statechain资金。那么,你可以把这笔Statechain资金转移给任何愿意接受的人,假如你不能花费全部的Statechain资金,那么你可以在它之上建立一条闪电通道,而且这条通道也可以用来再平衡你的普通闪电通道。
从再平衡你的通道需要经过的通道数量上看,这将允许提升效率,最优的情况下,你可以直接将资金发送给同一个对手,从而再平衡你的通道。如果你希望关闭某一条通道,跟另一个人开启另一条通道,你甚至可以将此通道中的所有余额都再平衡掉、全部转移到你跟新对手基于statechain建立的新通道中。
Statechain和闪电网络的未来
在讨论他们未来的计划是,Commerceblock的NicolasGregory说:「我们的计划是建立一套结合statechain和闪电网络技术的标准方法,从而协助闪电网络通过使用statechannel在链下完成再平衡。当前的这套规范将成为实现这一目标的基石。」
在一开始,statechain就被提议跟闪电网络结合,以解决它自身的一个问题:在支付时必须转移整个UTXO的价值。这也为闪电网络提供了一定程度的灵活性,因为闪电网络没有自身的流动性管理方法。
现在,闪电网络已经处在早期增长的健康阶段,而一份可靠的statechain实现也已经存在超过一年了,所以,是时候考虑结合两者了。闪电网络,作为一个网络,是一个可在任意没有直接联系的两方之间自动化处理转账的系统。至于网络图谱中的各通道的内部是如何工作的,严格来说,对于发送者和接收者,都是无关紧要的;只要建立通道的两方自己过得去就行。
Statechain和闪电通道都给对方提供了许多好处,我们需要做的,就是开发出让两者交互的标准化方法。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。