状态通道是一个 Layer 2 扩展方案,它允许参与者安全且免费地进行任意数量的链下交易,并只需在开启和关闭通道时支付 gas 费用。因此,状态通道可以实现以尽可能低的 gas 费用,支持更大的交易吞吐量。
什么是 Layer 2?它对区块链来说有什么作用?请参考“什么是二层网络”词条。
我们来想象这样一种情形:
Bob 每天都要向他的朋友 Alice 支付超过 10 笔、价值 0.5 美元的 ETH,并持续一个月。然而,这样不仅十分费时,且将浪费大量 gas 费。在大多数时候,每笔交易的金额甚至不能覆盖 Bob 为此需支付的 gas 费。
什么是 gas 费?它是如何产生,又是如何计算的?请参考“什么是 Gas 费”词条。
所以他们想出了一个相当巧妙的办法,他们可以在一个记账 APP 中分别开设自己的账户,并且 Bob 必须预先将一些钱(比方说 100 美元)存入一个保险箱,以获得 Alice 的信任。之后,对于每笔交易,他们只需要更新自己的账户余额,而不需要立即结算。
一个月后,当他们之间的所有交易都已结束,记账 APP 清楚地显示了 Bob 欠了 Alice 80 美元。这时,锁在保险箱里的 100 美元将在他们之间重新分配。这是一种直观理解状态通道的方式,只不过所有的存储和计算都将由智能合约来管理。
从技术上讲,要加入一个状态通道,一组参与者需要共同签署一个多签的智能合约,将他们的资金存入并锁定到其中,形成一个初始的区块链 "状态"。这个锁定的 "状态 "可以是一定数量的 ERC-20 代币,甚至是 NFT、ENS 域名等。
然后,同一通道内的参与者可以自由地进行链下交易,而不需要立即将交易返回 Layer 1 进行结算。每一笔链下交易都需要由所有参与者签名,才能被认定为是有效的 "状态更新"。
最后,当交易全部完成后,所有参与者应通过签署智能合约向 Layer 1 提交最终的、所有参与方均认可的状态。智能合约在验证所有链下交易("状态更新")均有效后,将最终关闭通道,并为每个参与者结算存款余额。参与者随后便可以取出他们剩余的存款。
状态通道的上述特点使其非常善于处理极高的交易吞吐量,同时为用户保持较低的 Gas 费用,尤其适用于长期、重复、小额支付的情形。然而,它也有其他缺点,比如只允许同一通道的参与者之间进行交易,而不允许通道在过程中增加或删除参与者,这会大大增加其应用的局限性。
采用状态通道技术最著名的例子是比特币闪电网络中的支付通道,它允许在两方之间直接进行链下支付交易而无需支付费用。另一个著名的例子是 Celer Network。它的产品 Layer.2 finance 通过状态通道技术,可以使用户以极低的费用触达所有现有的 DeFi 协议。