重新思考闪电网络

专栏: 比特币生态 · btcstudy · 2024年01月11日 · 67 次阅读

过去几个月来,我感觉比特币社区对闪电网络越来越感到厌倦。说实在的,这完全说得过去。在 2017 年,我们得到的承诺是,这会是一个去中心化的支付网络、永远能提供便宜的支付、而且每个人都能运行自己的节点。今天,闪电网络的普通用户实际上并不使用闪电网络,他们只使用一款托管钱包;而其中少数运行闪电节点的用户常常发现这是一个繁重的任务。我们 Mutiny Wallet 的同仁,一直在通过尝试开发轻量的自主保管钱包来改变这一切,而且,我认为,我们已经很好地实现了这个梦想。在本文中,我将分析这些问题,并提出一种新的理解闪电网络的视角,然后论辩这对比特币的未来意味着什么。

闪电网络的用户体验挑战中的第一个也是最艰巨的一个,就是通道流动性。(译者注:这意味着,用户不仅有余额即支付额度,还有收款额度。)今天,除了闪电网络,没有其它支付系统存在这样的问题,所以这常常会让许多用户感到困惑。更糟糕的是,我们没有任何实用的诀窍可以解决这个问题。Muun Wallet 使用“一个链上钱包 + 潜水艇互换”的模式绕过了这个通道流动性问题,这个解决方案在平时工作得非常好,直到手续费涨起来的那天,每个用户都会意识到它并不是一个真正的闪电钱包。(译者注:在这种模式下,用户并不跟任何人创建通道,只通过链上资金与链下资金的互换来实现闪电支付;每当用户需要发起闪电支付时,都要做一笔链上交易。所以用户的支付成本是跟网络手续费率挂钩的,在费率上涨的时候就会暴露出来。)更好的解决方案是 JIT 流动性,就像我们在 Mutiny 的做法,或者是通道拼接技术(Phoenix 已经实现了)。(译者注:“JIT”是“Just in time”的缩写,意为“随时获取”,大致做法是,当超出收款额度的支付到达时,会导致新通道的建立,从而使用户获得足够的收款额度。)这些解决方案部分地抽象掉了流动性问题,但还不够,我们常常会遇到用户在客户支持频道中提问,为什么某一些支付有手续费,而另一些没有。事实就是,通道流动性对于绝大部分终端用户来说不是一种可用的用户体验。

闪电网络的另一个主要痛点是离线收款问题。根本上,你必须在线,使用你的私钥来签名并申领一笔支付。技术上来说,有一个持续进展的规范提议可以解决这个问题(本质上是创建一个通知系统,告知用户何时应该上线收款),但也并不能解决根本的问题,也依然有局限性。也有一些解决这个问题的尝试,最著名的当属 Zeus Pay 的闪电地址。本质上,它只是创建一笔卡住的支付,然后等待收款方上线来接收支付,这给人们带来了不计其数的问题,甚至迫使我们 Mutiny 禁止用户向他们支付,因为它导致了许许多多的强制关闭通道事件。这是一个难题,因为其余所有的 比特币/密码货币 生态的工作模式都是你只需 复制 - 粘贴 一个地址,然后就可以随时给这个地址支付,不会有任何警告要求你提醒自己的朋友记得打开钱包。闪电地址这样的东西甚至让它进一步恶化,因为它从一开始就需要一个网络服务器来使你能够获得发票。

我认为,通道流动性问题和离线收款问题,是自主保管的闪电钱包没法流行起来的两个最显著的理由。绝大部分用户听到这两个问题中的任何一个,都会想“算了”,然后转去使用一款托管钱包,因为那实在是容易太多了。如果我们只有这两个问题,我认为自主保管的闪电钱包还是好的,也许不会成为人们使用闪电网络的主流方式,但我们可以让用户体验足够好,好到能让大一部分人群以自我主权的方式使用闪电网络。然而,表象之下还有更多的问题。

通道流动性是一个问题,但它也有欺骗性。在你拥有 10 万聪的收款额度时,你会认为自己最多可以收到 10 万聪的支付,但不是这样的,你常常收不到任何支付。这是因为链上手续费。在闪电通道中,每当你发生一笔支付时,你都需要创建一笔新的预先签名交易,而这笔交易需要为每一笔正在处理(还未完成)的支付安排一个输出,这些输出会影响交易的体积,因此需要为之提供手续费;网络手续费率越高,你的流动性就越少(被分配给了手续费)。在我们解决了 Mutiny 的大部分导致强制关闭通道的问题时,这个问题就成了数量最多的客服请求。即使你做对了一切事情、理解了流动性并你的支付准备了足够多的流动性,支付依然可能不成功,因为链上手续费太高了。这总是让人失望,因为,闪电网络的全部意义不就在于你不必非得支付链上手续费吗?基本上,当前所有的闪电通道,都可以因为链上手续费率变得足够高而沦为无用之物,因为一次支付需要太多准备金。显然这只是一种夸张,但我希望我表达清楚了:链上手续费不仅影响开启和关闭通道的代价,即时你是一个勤奋的节点运营者,仅在手续费率低的时候开启通道,那也不够,你的通道需要足够大,大到足以在未来的任何时候、链上手续费率的任何水平、为你的每一个 HTLC 支付链上手续费。随着链上手续费不断上涨,这个问题只会变得更加严重。

为这个保证金问题而提议的解决方案是“锚点通道”、“交易包转发”、“一次性锚点”,等等。这些想法都有价值,也不错,但一定程度上只是掩盖了问题。它们确实能够让手续费保证金变得非常低,甚至可以是零,然而,其取舍在于,你需要可以使用的链上资金来为你强制关闭通道的操作追加手续费,这样交易才能得到区块确认。(译者注:这里解决方案的核心是“CPFP”,使用高费率的子交易提高父交易的吸引力;因此,父交易,在这里是通道的承诺交易,可以不准备任何手续费,也就没有资金占用问题。但取舍如作者所述。)这又一次打破了自主保管钱包用户的使用体验,因为他们 必须 在闪电网络资金之外持有链上资金,这样他们才可以追加手续费。而需要准备的链上资金的规模依然动态地取决于链上手续费率。解决这个问题的方法包括让其他人来帮你追加手续费,但这会引入一个受信任的第三方,所以并不理想。

当我们列出一个闪电节点需要做的所有权衡、尤其是高手续费环境对它的影响时,我不禁思考,我们到底在干什么?我们走的路是错的吗?闪电网络依然从头到尾是一个极为强大的支付协议,但它的局限性在于它需要 扩大规模。基本上我列举的每一个问题,在你拥有一个大闪电节点时都会消失不见 —— 你有大量的流动性和高运行时间。我们应该优化这一切。市场一直在教育我们,这么多年了,90% 以上的闪电用户都在使用托管式钱包,因为它在扩大规模上就是做得更好。那么,我们如何能够不使用托管钱包而用上大规模的闪电节点?

遗憾的是,结合现有的大体量的闪电网络基础设施以及自主保管解决方案,依然力有不逮。到目前为止,做到这点的唯一真实的方法是我们前面提到的 Muun Wallet,但它并不真的解决了问题,因为所有一切都只是链上交易。但是,Muun 做对了一些事情。设计一个通向闪电网络的更简单的协议接口的架构,是一种天才的想法,而且给了我们两个世界里最好的东西。我们可以发起快速而便宜的支付,并让那个大男孩通过运行闪电节点来收取手续费。刚刚启动的 Aqua Wallet 本质上也是一个 Muun Wallet,只不过是在 Liquid 上,这是一个很好的权宜之计,但并不能从根本上解决问题。

在我们继续前进之前,我们应该后退一步,分析一下我们要尝试解决什么问题。比特币有一个根本上的扩容限制:其区块大小。如果我们可以拥有无限的区块大小,那我们就不需要任何 layer 2 解决方案了,因为我们只需要链上支付。然而,我们生活在真实世界中,而且有 1 MB 的区块体积限制,它限制了我们可以在链上确认的交易数量。闪电网络是对比特币的巨大提升,因为我们不需要将 每一笔 交易都发布到链上,我们只需要开启一条通道,然后就可以发起几乎无限笔支付。那么,闪电网络怎么没有一剑封喉?因为闪电网络让我们可以将支付转移到链下,但没有做到能让我们将所有权转移到链下。根本上,闪电网络依然依赖于,最终的最终,一个 UTXO 会归属于某一个用户。所以,即使链上的每一笔交易都属于某一条闪电通道,我们依然会撞上一个限制 —— 能够拥有自己的通道的人的数量终究是有限的。我们需要的是另一种 layer 2,可以扩展 utxo 的所有权,并且可以跟闪电网络交互,这样我们就有办法在扩大支付容量的同时扩大所有权的容量。

那么,我们如何扩大所有权的容量呢?见来说,今天的答案是托管(custody),无论是纯粹的托管商(比如 Wallet of Satoshi)或者处于灰色地带的(比如 fedimint 和 Liquid),今天我们能用的唯一办法就是托管或者联盟桥。在比特币上,唯一能够将一个 UTXO 的所有权委托给多方的办法就是多签名,然而,它要求任何一个用户希望交互时,每一个用户都在线,而且,当你沿着这条路走得足够远,最终你只会重新发明闪电网络。

那么我们注定要失败吗?没有能够以自我主权的方式扩展比特币的方法吗?幸运的是,答案是否定的,但我们需要一些软分叉。限制条款(covenant)就是扩大所有权容量的办法。有许许多多的限制条款提议,但归根到底,它们所提议的都是添加一种办法,让你可以拥有一种比特币地址,可以限制其中的资金被花到哪里去、怎么花。这看起来似乎很奇怪,但我们今天的比特币上已经有这种东西了,OP_CTLV(CheckLockTimeVeiry),是在 2016 年的软分叉中激活的,它仅允许你使用具有给定 locktime 数值的交易来花费一个比特币地址中的资金,所以它让你可以把关可以花费一个 UTXO 的 时间。当前的限制条款提议所做的是让你可以把关可以花费一个 UTXO 去哪里。有这个简单的元件,我们就可以开发出许多不同的协议,允许扩大所有权的容量。

不过,未来并不灰暗,即使没有限制条款,我们依然可以扩容比特币,只不过不是以理想的方式。在 Mutiny,我们正在权力推进在钱包中实现 fedimint,我个人(以及我们团队中的其他人也)认为,这是比特币当前最好的扩容解决方案。Fedimint 给了我们可以动态地跟一群人分享所有权的能力,而且可以通过网关跟闪电网络交互。这是当前技术下比特币扩容梦想的顶峰,我们将不遗余力帮助它成为现实。

比特币生态

比特币生态

探讨比特币生态协议和应用,为 Web3 领域带来新视角,投资新机遇。