经过多年的概念开发,比特币的闪电网络现已处于测试阶段。因此,每天都有越来越多的节点出现在闪电网络上,越来越多的用户正互相开放闪电网络通道,有些商家甚至开始接受闪电支付。
当然,现在仍处于闪电网络的早期阶段。虽然其主要实现、钱包及其他相关应用程序都可用,但其覆盖支付网络预计将在未来几年内从网络架构、安全性和可用性等方面进行改进。
以下是目前正处于开发阶段的一些主要的闪电网络相关项目。
双出资通道(Dual-Funded Channels)
闪电网络由一系列的支付通道组成。支付通道存在于两两用户之间,允许资金在他们之间被来回发送。
但是在现在这样的早期发展阶段,支付通道只能由双方中的一方提供资金。出资方必须先向另一方发起交易(打开通道);只有这样另一方才能在同一支付通道(已打开的通道)中返回款项。
闪电网络白皮书提出了“双出资通道”(Dual-Funded Channels),Eclair母公司ACINQ现也提出了相关规范提案。顾名思义,双出资通道可以让用户双方各自发送比特币到闪电网络通道上抵押、合资开通通道。这将使得闪电网络的应用变得更加灵活,用户随后可以在已开启的通道上实现即时支付。
潜交换(Submarine Swaps)
为了实现闪电支付,用户必须预先将资金存入闪电网络通道中。一旦资金存入通道,这些资金就不能被发送到常规(链上)比特币地址上(除非该频道一开始就被关闭了)。这意味着闪电网络通道中的比特币与普通钱包中的比特币是不同的,就像支票账户中的资金与储蓄账户中的资金也是不同的。
现在有一些解决方案使得用户可以在闪电网络与链上间无缝切换交易。
一种解决方案是“潜交换”(Submarine Swaps)。这是由Alex Bosworth开发的(由Lightning Labs首席技术官Olaoluwa Osuntokun所构思的),潜交换允许用户向闪电网络中的中间商发送通道中的比特币;而该中间商会将相应数量的比特币发送到常规(链上)比特币地址上。反过来也可以:用户可以定期在链上支付给中间商比特币;然后该中间人将相应数量的比特币发送到闪电网络上的接收节点上。
重要的是,这在潜交换中是“自动完成的”。使用已经嵌入在闪电网络中的方法,闪电支付和链上支付可以被有效地相互关联起来。这使得中间商无法通过不付款来窃取资金。(而通过与用户达成协议,反而可以收取少量服务费。)
拼接(Splicing)
另一种更无缝的闪电网络交易解决方案称为“拼接”(Splicing)。实质上,拼接可以让用户在现有的闪电通道中“充值”资金,或者从通道中“取出”资金,同时保持通道畅通。
这个想法很简单。任何闪电通道都始于开放交易,这就确保了用户双方都同意在通道中转移资金。闪电网络通道其余部分由用户间的一系列后续交易组成,这些交易通常不会被传播到比特币主网上。在通道关闭之前,通道中的交易资金是不会被转移的。
当使用“拼接”(splicing in)时,用户可以采用开放交易(opening transaction),代替将资金发到新的包含更多比特币的替换开放交易上。一旦该新交易在区块链被上确认,通道就会被充满。在确认新的开放交易之前,用户双方都可以同时更新旧通道和新通道,以避免出现“通道故障”。
而当使用“剪切”(splicing out)时,用户可以使用开放交易将资金发送到常规(链上)地址上,并可以使用相同的方法将其中的一部分保留在通道中。通过这种方式,用户可以在闪电网络通道上进行链上交易。
Eltoo
每次进行新的付款时,用户之间的闪电通道都会更新以反映它们的总余额。目前用来实现这一目标的方法包括惩罚试图广播旧余额的用户(可能是因为旧的余额会使他们拥有更多的钱)。欺诈用户可能会失去他们通道中所有的资金。
问题在于广播旧余额并不总是因为人们想尝试作弊。很多情况下(例如,由于软件错误或备份出错),用户可能会意外地广播旧的余额。在这种情况下,通道资金的彻底丢失对他们来说是一项相当重的惩罚。
eltoo是在2018年4月30日首次发布的,由Blockstream的c-lightning开发团队Christian Decker和Rusty Russell以及Lightning Labs的Osuntokun共同开发,eltoo通过构建时间锁定交易链( a chain of time-locked transactions)来更新通道,每笔交易花费都会更新前一笔交易的资金以反映最新的通道余额。
如果用户广播了较旧的交易(代表较旧的通道余额),则她的交易对手就有一些时间来广播最新的交易(代表最新的通道余额)。
像这样的解决方案目前可能奏效,但在故障的情况下则是不实际的。这需要将整个交易链广播并记录在比特币区块链中,或多或少地地使闪电网络的目的变得不明确。因此,Decker提出了对比特币协议进行软分叉,以在这些类型的交易中引入一种层次结构:任何较新的交易都可以覆盖任何较旧的交易,而不要求广播整条链中的所有交易。
如果这个软叉在比特币网络上被采用激活,闪电网络用户就可以根据他们的喜好创建闪电通道。(像现在这样或者使用eltoo,取决于他们喜欢用什么)
紧凑型客户端区块过滤(Compact Client-Side Block Filtering)
虽然闪电网络是第二层协议,但在安全性上,比特币区块链本身也与闪电网络相关。具体来说,闪电网络用户必须密切关注区块链,看看特定交易是否被打包。这可能是要消耗大量资源的,特别是对于手机用户。
有一种解决方案称作简化支付验证(SPV),这在比特币白皮书中有所描述。当前的SPV钱包使用称为“Bloom过滤器”(bloom filters)的方法来确定是否有相关交易产生。
不幸的是,bloom过滤器在隐私保护上有所欠缺,因为钱包本质上把用户所有的地址都展示给了比特币网络上的节点。它也有一些扩容问题和可用性问题,因为每个单独的SPV钱包都会占用至少一个比特币全节点的资源。
为了解决这些问题,Lightning Labs的Osuntokun和Alex Akselrod以及Coinbase开发者Jim Posen设计出一种名为“紧凑型客户端区块过滤”(Compact Client-Side Block Filtering)的新解决方案,他们正在Neutrino钱包中应用该解决方案。
紧凑型客户端区块过滤技术基本上颠覆了当前SPV钱包使用的方法。通过创建Bloom过滤器并将其发送到众多全节点,接着全节点为所有的Neutrino钱包创建过滤器,从而替代通过钱包请求相关交易。然后Neutrino钱包使用这个过滤器来确定相关交易没有发生。这确实是所有用户需要知道的,以确保他们没有被骗。 (如果过滤器产生匹配,Neutrino会提取相关的区块,以查看匹配是否确实涉及确切的交易而不是误报)
有趣的是,虽然这个方法的灵感来自闪电网络,但它也可以用于普通的轻钱包。
瞭望塔(Watchtowers)
为避免被欺骗,闪电网络用户必须跟踪可能与其相关的潜在链上交易。
虽然紧凑型客户端区块过滤会让这件事变得更简单,但用户确实需要偶尔“检查”一下,以确保他们没有被骗。如果他们忘记检查,则会产生安全风险。
“瞭望塔”(Watchtowers)是一种可能的解决方案,这可以追溯到闪电网络的白皮书,它由闪电网络白皮书合著者和lit开发者Tadge Dryja等人开发。顾名思义,瞭望塔技术可以让用户将监控区块链这一任务外包给第三方。
目前的瞭望塔技术在设计上并非一成不变,但大致是这样工作的。无论用户何时更新通道,都会发送一个小数据包到瞭望塔。这个数据包的第一部分是用户应注意的交易“提示”(hint),这个提示本身并没有透露任何交易内容;用户也因此不会泄露隐私。
但是,如果相关交易出现在比特币区块链中,瞭望塔可以使用该提示来识别它。然后通过区块链本身的交易数据,瞭望塔可以使用他们收到的数据包的第二部分重新构建交易惩罚。该交易惩罚会将通道中的所有资金发送给被骗的用户(或以eltoo为例,它只广播正确的通道余额)。交易惩罚也可以设计为让瞭望塔宣布将部分资金作为激励其工作的奖励。
用户可以将通道监控的任务外包给多个瞭望塔。这样即使一个瞭望塔出故障了,另一个也没事,从而将闪电网络的使用风险限制在可以忽略不计的程度。
原子多路径支付(Atomic Multi-Path Payments)
使闪电网络成为一个网络的原因是用户之间的支付通道是相互关联的。用户可以通过闪电网络中的中间商进行跨通道支付。
但是,现在单次支付的路由也只能是单向的。如果一个用户想要支付5mBTC给另一个用户,那么他不仅必须在单通道上有5mBTC,而且该路由上的所有中间商还必须在通道中准备好5mBTC才能转发。支付额越大,出现这种情况的可能性就越小。
原子多路径支付(Atomic Multi-Path Payments))可以很好地解决这一问题。这一技术最初由Lightning Labs的Osuntokun和Conner Fromknecht提出,想法也很简单:大额付款可以被“分割”成小部分,这些小部分再通过不同的中间商从付款人转移到收款人手里。
这一解决方案面临的挑战是,闪电支付可能会失败,在这种情况下意味着只完成了部分支付。然而,部分支付很容易引起一个比不支付更大的问题:商家对部分支付不满意,而客户也不乐意花钱购买任何东西。
解决这个问题的方法是原子多路径支付,它使用了哈希时间锁定合约(hash time-locked contracts)进行扩展,这些合约已经被闪电网络路由所使用,且通过网络传输加密数据。使用的是类似于HD钱包(deterministic wallets)所使用的方法(从单一种子生成多个比特币地址),部分支付只能由收款人进行兑换,但如果某些加密数据不通过整个路由,那么就会支付失败。
原子交换(Atomic Swaps)
闪电网络被设计为比特币的扩容层。但是由于许多竞争币是比特币的分叉,因此为这些竞争币创建类似的扩容层并不困难。小型的莱特币闪电网络已经出现了,未来可能还会出现更多的闪电网络。
有趣的是,在未来这些闪电网络之间并没有被隔离。
使用被称为“原子交换”(Atomic Swaps)的闪电网络基本构件(首先由Tier Nolan提出,由Lightning Labs的Fromknecht在闪电网络上实现),闪电网络的支付通道就可以跨区块链而相连。换句话说,用户可以用比特币进行跨币种支付,只要网络上有一个节点愿意进行交换,交换后另一个用户就可以收到等值的莱特币。
当然,这也意味着用户可以自己进行这样的交换:他们可以给节点发出比特币而收到莱特币。实际上,闪电网络可以建立一个无需信任的加密货币交换网络。
通道工厂(Channel Factories)
闪电网络的主要好处是,它可以大大增加比特币交易的容量上限,而不会增加对比特币网络的负担。只要用户双方在他们的通道中都存有资金,他们就可以相互进行无数次转账,而只需要进行两次链上交易:一次是打开支付通道,一次是关闭支付通道。
尽管如此,如果随着时间推移比特币和闪电网络被广泛采用,这样的链上交易次数无疑也会增多。
苏黎世联邦理工学院的研究人员Christian Block(同时也是Blockstream的员工)和Roger Wattenhofer、Conrad Burchert提出的“通道工厂”(Channel Factories)也许能进一步降低每个支付通道所需的链上交易平均次数。
根据Decker和Wattenhofer在2015年提出的类闪电网络协议,通道工厂是一种可以供多用户使用的支付通道,同时,像其它支付通道一样,通道工厂也需要进行两次链上交易。 (如果Schnorr签名是在比特币上实现的,那么会涉及到很多用户,这些交易结构就可能会变得相当紧凑。)
反过来,通道工厂可以充当闪电网络的“子通道”。通道工厂内的使用者们可以互相打开和关闭几乎无限量的闪电通道,而无需进行额外的链上交易。通过这样做,理论上他们可以将闪电网络所需的链上交易数量降低一个数量级。