作者:Tobi Ojuolape

来源:https://tobiojuolape.hashnode.dev/a-comprehensive-guide-to-lightnings-atomic-multipath-payments-amp

介绍

闪电网络能够在比特币上实现即时小额付款(微付款),因为传统比特币交易通常需要较长的确认时间,其交易费对于小额付款来说也并不划算。专注于微付款是人们采用闪电网络的关键因素,因为它解锁了很多以往实现不了的应用场景。

有了闪电网络,我们就可以用比特币买咖啡、买礼品、付话费,甚至捐款。数百万人可以即时完成链下闪电网络付款,无需与链上比特币交互。

虽然闪电网络之前的应用场景都聚焦于微付款,但现如今新的改进措施都是为了增强闪电网络在大额比特币付款方面的可靠性和适用性。在本文中,我们将探索原子化多路径支付(Atomic Multipath Payment, AMP)的概念,以及如何使用它们在闪电网络上实现快捷可靠的大额比特币付款。

何为原子化多路径支付?

原子化多路径支付(AMP)是由 Ind 0.13.0 beta 版实现的新型闪电网络付款,可以将单笔付款拆分成多笔较小的付款,然后同时经由不同的支付通道发送。

在 AMP 的帮助下,一笔付款可以被拆分成一系列较小的付款部分。每个付款部分都会被分配唯一的付款哈希,就像是由付款方生成的单个原像的一个碎片。接着,这些付款部分会经由不同的支付通道发送出去,每个都有对应的哈希时间锁合约(HTLC)。如此一来,收款方只需证明自己知道每个 HTLC 的原像,即可将各个付款部分重组成一笔付款。

在闪电网络中,多路径付款(MPP)并非新概念。但是,原子化多路径付款有别于 MPP,因为它遵循原子化性原则,即,“要么所有付款都成功结算,要么所有付款都结算失败”。MPP 对所有付款部分都使用同一个付款哈希,这使得关联单个路由变得非常容易,而且可能会出现只有部分付款结算成功的情况。相比之下,AMP 只有全部结算和全不结算之分。

由于原子化多路径付款是端到端升级,只有付款方和收款方需要了解此付款类型,因此在此新功能能够广泛使用之前无需升级闪电网络。

我们为何需要多路径付款?

路由一笔闪电网络付款时,路由节点能否协助付款方将闪电网络付款转移至收款方取决于以下因素:

  1. 通道容量:指通过用来创建闪电网络通道的充值交易存入 2/2 多签的 satoshi 总量,代表通道内持有的最大价值。gossip 协议会公布通道容量让节点知道。路由节点的支付通道必须拥有足够的容量来传递付款额。如果一笔付款的额度超过所在通道的容量,则路由节点无法路由付款。(即使你将 1 BTC 充值到你的闪电网络节点,开通了 10 条容量为 0.1 BTC 的支付通道,你也无法路由超过 0.1 BTC 的付款,除非借助于 AMP 的力量。)
  2. 余额:指通道一方持有的可以发送给另一方的 satoshi 数量。节点 A 的余额的子集能够沿 A→B 方向发送至节点 B。节点 B 的余额的子集能够沿相反方向 A←B 发送至节点 A。
  3. 流动性:指能够经由通道沿一个方向发送的可用(子集)余额。节点 A 的流动性等于节点 A 的余额减去通道储备金和节点 A 承诺的所有未决 HTLC。路由节点的支付通道内必须有充足的资金才能实现付款。如果节点的资金不足,则无法传递付款。
  4. 费用政策:路由节点能够制定自己的费用政策,并基于费用选择要路由的付款。如果付款方提供的费用太低,或路由节点的收费太高,路由节点可能会选择不提供路由服务。
  5. 网络拓扑结构:闪电网络的拓扑结构会影响路由节点传递付款的能力。如果付款方和收款方之间的最短路径包含连接不良或流动性不足的节点,付款就会失败。
  6. 正常运行时间与可靠性:路由节点必须在线,且能够用来传递付款。如果节点掉线或出现连接问题,可能无法传递付款。

在上述 6 大因素中,闪电网络通道的流动性和容量对于大额付款路由来说仍是最主要的阻碍。这是因为闪电网络中支付通道的容量是有限的,取决于通道内锁定的比特币数量。如果一笔付款超出了支付通道的容量,则无法得到处理。在原子化多路径付款的帮助下,此付款能够被拆分成多笔较小的付款,分别由不同的支付通道路由。这样一来,付款不再受单条支付通道容量的限制,从而提高闪了电网络的总体效率。

原子化多路径付款是如何运作的

AMP 支持将付款拆分后经由闪电网络中的不同路径发送。

以下例子反映了 AMP 运作原理:

  1. Alice 想要通过闪电网络发送 1 BTC 给 Bob。
  2. 鉴于找到一条容量高达 1 BTC 的支付通道难度较大,Alice 的钱包可以将此付款拆分成 10 笔 0.1 BTC 的付款。每个付款部分都有唯一的付款哈希,就像是 1 BTC 付款的原像的一个碎片。
  3. 每个付款部分连同各自的付款哈希都由通往 Bob 的钱包的不同路径传递。
  4. 如果有一条路径无法完成付款,则所有付款都不会成功。(译者注:怀疑是将多个付款部分的原像相互捆绑,使得任一部分支付未送达都不可能揭晓其它部分的原像。在 AMP 中,付款哈希值及其原像都是由支付方生成的;从这个角度上来说,它其实跟 Keysend 更像。)
  5. 收到付款的所有部分后,Bob 会将付款哈希进行匹配,并重组成单个付款哈希,认领 Alice 的 1 BTC 付款。

接下来,我会将原子化多路径付款与其它已有的和即将广泛实现的闪电网络功能进行详细的对比分析。

原子化多路径付款 vs 发票

Bolt 11 闪电网络发票是闪电网络上最简单的收付款方式。发票是付款请求,包含应付款额、收款方的公钥和付款哈希等信息。然后,付款方可以使用上述信息创建一条支付通道,将付款发送给收款方。如果你想了解更多关于闪电网络发票的内容,请阅读这篇文章

AMP 的功能比起发票更加强大,因为它们支持在闪电网络上处理更大额的付款,从而增强闪电网络的可扩展性,带来更多应用场景。AMP 也能增强隐私性和安全性,因为付款经由多条支付通道传递,能够降低第三方跟踪和不完全结算的风险。相较之下,闪电网络发票无法被用来执行大额付款,因为它们经常为路由节点的流动性和容量所限。此外,AMP 发票可以重复使用,而且支持订阅和捐款场景,而闪电网络发票只能使用一次。

特征原子化多路径付款(AMP)BOLT 11 发票
用途将单笔大额付款拆分成多笔较小的付款要求付款方付款
路由付款被拆分后经由多条支付通道路由付款经由单条支付通道路由
要求收款方必须支持 AMP 才能接收付款收款方必须为付款方生成发票
付款额可用于超出单条支付通道容量和流动性的大额付款通常只能用于一次性小额付款
安全性提供更高的隐私性和安全性,降低非完全结算和第三方追踪的风险简单安全的付款请求方式
复杂性可能会增加路由付款的复杂性,提高出现错误和延迟的可能性生成发票很简单
应用场景适于大额付款和经常性付款,可增强隐私性和安全性适合想要在闪电网络上接收付款的商家和个人
原像由付款方生成,但是只有当所有付款部分完成结算后,收款方才知晓由收款方生成

原子化多路径付款 vs Keysend

Keysend 是 bLIP(比特币与闪电网络改进协议)功能,无需发票即可通过闪电网络发送一次性小额付款。这赋予了 Keysend 简单性和易用性,因为 Keysend 能够让付款方不再依赖收款方提供发票。但是,Keysend 需要收款方与付款方共享一次密钥,之后付款方就可以随时向收款方支付任意金额。付款方选择付款哈希的哈希原像,并使用收款方的公钥加密,确保只有收款方能够解密付款哈希并拿到付款。

AMP 专为超出单条通道容量的大额付款设计。通过将付款拆分成多个部分,AMP 可以让用户通过多条支付通道路由付款,让原本不可能完成的大额交易成为可能。另外,为每个付款部分生成单独的付款哈希提高了安全性和隐私性,降低非完全结算和第三方追踪的风险。

相比之下,Keysend专为一次性小额付款设计,无需发票即可将付款直接发送至收款方节点。由于简单易用,Keysend非常适用于给小费、捐款等微付款场景,因为为这类场景生成发票既无必要,也不切实际。

特征原子化多路径付款(AMP)Keysend
用途将单笔大额付款拆分成多笔较小的付款无需发票即可发送一次性小额付款
路由付款被拆分后经由多条支付通道路由付款经由洋葱路由直接发送给收款方
付款额可用于超出单条支付通道容量和流动性的大额付款通常用于小额付款
发票/收据支持使用静态发票作为付款收据完全无需使用发票
应用场景用于大额付款和经常性付款,可增强隐私性和安全性用于微付款和不适用发票的场景
原像由付款方生成,但是只有当所有付款部分完成结算后,收款方才知晓由付款方生成并知晓

原子化多路径付款 vs Offer

Offer 是相对较新的闪电网络功能,支持用户创建可反复使用的发票,让订阅之类的经常性付款变得更容易执行。通过让用户创建可多次使用的发票,Offer 可简化发票开具流程,减少出错和漏付的风险。

Offer 和原子化多路径付款都是非常强大的功能,能够以独特的方式增强闪电网络的能力。Offer 与 AMP 之间的主要区别在于 AMP 更适用于大额付款,因为它支持多路径付款。

特征原子化多路径付款(AMP)Offers
用途适用于需要通过多条支付通道路由的大额付款适用于单个发票可以多次使用的经常性交易
复杂性AMP 路由会更加复杂一些,而且会带来额外的延迟和潜在的路由错误Offers 相对更简单易用
应用场景适用于需要多通道路由的高额低频交易适用于订阅、经常性付款和小额交易
缺点路由会变得更加复杂,可能会带来额外的延迟,不适用于小额交易不适用于超过通道容量的大额交易,隐私性较弱,经常性付款出错风险较高
原像由付款方生成,但是只有当所有付款部分完成结算后,收款方才知晓可用于接收付款和请求付款,可由收款方或付款方生成

在你的闪电网络节点上创建 AMP

如果你想要接收 AMP,将你的 lnd 软件升级到最新版本之后,在启动节点之前,需要先在你的 lnd.conf 文件里设置

accept-amp=1

接下来,你就可以调用下方命令向其它启用了 AMP 的节点付款:

lncli sendpayment --amt <amount in satoshis> --dest <recipient’s public key> --amp

结论

随着越来越多人开始使用闪电网络完成日常付款,人们对闪电网络的某些局限性愈发重视,其中之一就是它不适用于大额付款。有了 AMP,我们就可以打破这一限制,帮助闪电网络解锁更多强大的新型应用场景,使之应用于原本被认为只适合链上比特币交易的大额付款。

推荐阅读

(完)