状态通道

State Channels

状态通道是什么?

状态通道这一简单且广泛的扩容方案,将发生在区块链上的交互转为链下进行,并且不会增加任意参与者的风险。该策略最著名的应用范例就是比特币的支付通道(payment channels),它允许交易双方之间直接发送即时的、免手续费的支付交易。

状态通道与比特币闪电网络(Lightning Network)中的支付通道概念非常相似,但状态通道不仅支持发送支付,还支持一般的“状态更新“(state updates)。例如,用户可以在合约中存入资金,然后对状态更新进行签名,这一行为就像国际象棋中的走法。之后,只有游戏结束后,游戏的最终结果才会被广播到以太坊网络上。这允许以太坊应用程序将交易“转移”到链下,增加了整个网络的有用性。

状态通道的工作原理是什么?

状态通道的工作原理是将区块链状态的某些部分 "锁定 "到一个多签名合约中,由一组确定的参与者控制。而被 "锁定 "的状态被称为“状态存款”(state deposit)。例如,这可能是一笔ETH或ERC20代币,但也可能是NFT或ENS域名。

锁定状态存款之后,通道参与者在链下进行交换以及对有效的以太坊交易进行签名,而不将其部署到链上。虽然这些交易随时可以放到链上,但状态通道将其放到链下处理。

图示为状态通道的基本演示:

  1. 区块链的部分状态是通过多重签名或某种智能合约锁定的,因此特定的一组参与者必须完全同意对方才能更新状态。

  2. 参与者通过创建交易和对交易进行签名来更新状态,这些交易可以直接提交到区块链上,但到这步为止先保留在链下。每一次新的更新都会 "胜过"之前的更新(即覆盖了之前的更新)。

  3. 最后,参与者将状态提交回区块链,然后区块链会关闭状态通道并再次解锁状态(通常与开始时的配置不同)。

由于就区块链而言,所有已交换的事务都是同等有效的,所以状态通道需要一种机制来确保最新的链下状态(即象棋游戏中的最新一步)是最终在主链上确定的状态。因此,如果一方企图单方面关闭一个通道,该通道的其他各方有一段“争议期”,在这段时间内他们有机会提交较新的状态,从而证明有人企图欺诈。一旦证实违规,合约就会处理解决过程,这通常包括通过罚没违规参与者的存款来进行惩罚(尽管也可以简单更新到有效状态并继续进行)。

如果参与者之间更新的“状态”是数字货币余额,那么我们将拥有一个支付通道。 打开和关闭通道的步骤1和步骤3,涉及区块链上的操作。但在步骤2中一个无限数量的更新可以迅速而不需要涉及到区块链——这就是状态通道发挥作用的地方,因为只有步骤1和3需要被发布到网络、支付费用,或等待确认。事实上,经过精心的规划和设计,状态通道可以几乎无限期地保持开放,并被用作更广泛的用途,为整个经济或生态系统提供动力。

状态通道和侧链的对比

状态通道的优点

  • 状态通道的隐私性很强:这是因为所有交易都是在参与者双方的通道内发生的,而不需要广播以及在链上记录。只有起始和最终交易必须公开。而在侧链中,每笔交易都必须发布到侧链上,并且侧链上的每位参与者都会接受到这些交易,尽管用户并没有与侧链上的所有参与者进行交互。

  • 状态通道可以即时敲定状态,这意味着一旦双方对某一状态更新进行了签名,它就可以被认为是最终状态。如果有必要,通道双方都可以保证“强制”在链上处理状态。

状态通道的缺点

  • 状态通道里,要求其参与者提供100%的可用性:正如上文所讨论的那样,如果任意参与者无法提供可用性,那么使用状态通道对他来说代价很高。当然,如果参与者无法提供可用性,参与者可以委托第三方服务代表(例如,参见http://hackingdistributedcom/2018/05/22/pisa/),但是代表可能受到攻击或贿赂,这对状态通道来说是个问题。而使用侧链,则不需要一直提供可用性。

  • 状态通道最适合于那些拥有一组确定的参与者的应用程序:这是因为状态存款合约(即用于锁定状态的合约)必须始终知道属于某个特定通道的参与者/实体的地址。我们可以增减参与者,但是每次都需要对合约进行更改。而在侧链中,对参与者的改变则没有这样的限制。

  • 当参与者在未来很长一段时间内需要交换多次的状态更新时,状态通道尤其有用:这是因为在部署状态存款合约时,创建通道会有初始成本。但是一旦部署了通道,在通道内发生的每一次状态更新的成本是非常低的。

侧链的优点

  • 侧链是永久性的。如果已有一个侧链存在,用户不必为特定目的创建自己的侧链:侧链一经创建,就已经存在且被维护。我们不会关闭侧链,而是将侧链上的资产锁定后再移回主链。这样做很有好处,因为任何人在链下处理特定的任务(如通过狗狗币交易)时,将会到同一条侧链上。因此,不必为每个新参与者创建单独的链。而在状态通道中,需要通过链上操作将参与者添加到现有通道中。但是像Raiden network这样的项目,以及更普遍的元通道技术,提供了这个问题的部分解决方案。它们创建了一个参与者网络,因此用户不必为每个与其交互的新参与者创建一个新通道。也就是说,用户可以与参与者间接交互,通过其他参与者(这些参与者与用户自身以及接收者都有联系)在用户自身和接收者之间创建一个通道。

  • 侧链允许加密货币之间相互交互:增加了灵活性,允许开发者在将加密货币或软件更新推送到主链之前对测试版进行试验。发行以及跟踪股份所有权等传统银行功能也可以先在侧链上进行测试,再部署到主链上。

侧链的缺点

  • 侧链不能从主链的安全性中获益。在侧链上进行交互的用户只能依靠该侧链的安全性,因为如果侧链遭到恶意破坏,则无法保证用户可以安全地退出到主链。相反,状态通道中的参与者只要遵守协议,他们可以随时退出到主链上。

  • 侧链需要大量的初始投资:为了创建侧链,我们需要有足够的矿工,这样才能保证网络的安全。 同时,我们必须确保它们能够正常运行。而状态通道中不涉及区块链上的操作,所以,不需要这样的要求。

  • 侧链需要一个联盟(Federation):这在主链和侧链之间增加了另一层。攻击者可以通过攻击或者贿赂联盟来攻击侧链。而在状态通道中,我们只需要一个智能合同来做这些。

状态通道的团队有哪些?

目前状态通道的团队有:CelerX Connext NetworkState Channels Perun

参考资料