欢迎光临散文网 会员登陆 & 注册

状态通道和闪电网络

2023-08-26 17:43 作者:DoraHacks  | 我要投稿

状态通道和闪电网络

一、支付通道 Payment Channel

1.开启通道(Funding Txn & Initial Commitment)

2.开始交易(Commitment Txns)

双向支付通道建立后,当 Alice 和 Bob 间产生交易时需要更新通道双方的余额,双方就需要手动交换签过名的欠条(Commitment Txn)。这些交易本身都是有效的,随时可以发送到比特币网络中,但双方都会暂时保存起来,不会广播出来,除非已准备关闭通道。如此一来,通道内双方的余额状态,一秒内变动几千次也没问题,更新的速度仅受限于双方创建、签名和向对方发送承诺事务的速度。每次双方交换了一笔新的承诺事务,他们也就把通道的前一个状态作废掉;因此,只有最新的一笔承诺事务可以 “执行”。这样设计的目的是防止某一方欺诈对方,把一个过时的但对自己有利的状态发送的链上来关闭通道。

2.1 如何防止对方广播错误交易

在一次 commitment txn 中,交易双方需要各自构建一个交易,这两个交易互为镜像。当 Alice 需要给 Bob 转一个币时,双方构建的交易如图所示。Alice 构建的交易(右)是给自己 4 个币,给 Bob 6个币,该交易只能由 Bob 签名和广播;同样,Bob 构建的交易(左)是给自己6个币,给 Alice 4个币,该交易只能由 Alice 签名和广播。

因此,对方构建的交易,广播权是在于自己的,也就避免了交易双方恶意广播交易。

2.2 如何防止对方广播历史交易

现在假设 Alice 和 Bob 又完成了第一笔交易,现在 Alice 有 2 个币,Bob 有 8 个币;这个时候如何避免 Alice 作恶把之前 4-6 的交易在链上广播。

这就需要用到哈希时间锁和哈希密文锁。当 Alice 和 Bob 之间构建下一次 Commitment Txn 时,同时需要双方交换上一个 Commitment Txn 交易中的密文,用于作为上一笔交易的欠条。

3.关闭通道(Settlement Txn)

最后,通道既可以双方一致同意关闭,就是把一笔关闭事务的交易(Settlement Txn)发送到比特币网络中;也可以单方决定关闭,就是把最后一笔 Commitment Txn 发送到网络中。这是为了防止某一方离线导致另一方在通道中的余额一直 “锁定” 的情形。

在通道存在的整个生命周期里,只有两笔事务被发到了比特币网络中并记录到了比特币区块链上(就是充值事务和结算事务)。在这两笔事务之间,双方可以交换无数次承诺事务,这些事务都不需要提交到区块链上。

二、支付网络 Network

其他人也想接入闪电网络该怎么办?如果支付的双方间没有构建直接的通道还能实现支付吗?有什么办法可以把所有人都接入网络并保证可以向网络中的任一节点发起支付?

为了解决这一问题,我们需要将双向支付通道扩展成闪电网络。假如 Bob 和 Carol 之间已经建立了支付通道,Alice 和 Bob 之间也有支付通道,那么 Alice 可以先把钱转给 Bob ,再由 Bob 转给Carol,这样看起来就实现了从 Alice 到 Carol 间的支付通道,其中 Bob 充当网络中的路由节点。当许多节点之间建立起通道,最后就形成一个支付网络。

2.1 如何防止路由节点作恶

在建立闪电网络的时候,我们同样会遇到信任问题:Alice想转给 Carol 转 1个币,需要经过 Bob,但Bob 会担心自己给 Carol 转了 1个币后,Alice耍赖;同样,Alice 会担心如果先给 Bob 转了1个币,Bob 也耍赖不转给 Carol 。在传统的金融系统中,是由大型知名金融中介机构的信用提供保证的。但闪电网络中,并没有这样一个独立于交易者的第三方去提供信用担保。

闪电网络采用了哈希密文锁和时间锁合约完美解决了这个问题。

过程

第一,Carol 会选择一个随机密文并运算得到其哈希值,再将此哈希值交给Alice。

第二,Alice拿到哈希值后,会构建一笔转账给 Bob 的交易。这笔交易需要 Bob 拿到 Carol 的密文才能解锁,如果 Bob 在限定的时间内没有解锁成功,这笔钱则退回给 Alice。

第三,Bob 从 Alice 处拿到哈希值,他也构建一笔转账给 Carol 的交易,Carol 必须拿密文来解锁。第四,Bob 和 Carol 交换密文;当 Carol 提供密文从 Bob 处获得 1个币,Bob 立马会拿密文从 Alice 处获得 1个币,这就实现了从 Alice 给 Carol 支付。

当然,在实际操作过程中,Alice 给 Bob 转账金额需要大于 1 个币,支付必要的路由费以激励 Bob 充当路由节点。其次,要注意两笔交易之间的哈希时间长度设置,Alice 和 Bob 交易的时间必须长于Bob 和 Carol 的时间。如果 Bob 在 Alice 关闭交易之后拿到 Carol 的钥匙,他将无法找 Alice 拿回1个币。

2.2 洋葱路由Tor(The Onion Router)

如果闪电网络使用跟互联网一样的协议,每一个中间人都会知道谁是支付的发送者、谁是接收者、整条路径上的其他中间人是谁。洋葱路由是一个好的选择,因为其特性保证了中间节点:

  • 只知道自己的上一个节点(谁给自己发来了消息)和下一个节点(要把消息转发到哪里去)。
  • 不知道整条路径的长度;
  • 不知道自己在路径中的位置。

三、闪电网络的应用

3.1 潜水艇互换

一种特殊的原子化互换,是将比特币链上的资金换成闪电网络中的通道余额(反之亦成立)。发起互换的一方在自己的环境中给出哈希值和 HTLC,接受互换的另一方在自己的环境中制作使用相同哈希值的 HTLC。

这种互换功能对闪电网络用户来说非常重要,因为闪电支付通道是一对一的(它是一个 2-of-2 的多签名合约),用户发起支付和接收支付的能力分别受限于自己的 “本地余额”(在该用户参与的各个通道中属于 TA 自己的资金)和 “远端余额”(分别属于各通道对手的余额),某一些用户可能经常支付或收取支付,从而用尽余额(因此无法支付)或让通道中的资金全部归属于自己(因此无法接收支付)。潜水艇互换可以让用户置换出闪电通道中的资金,或向通道内注入资金,而无需 关闭/重新开启 通道。

已有的应用:Loop ,Boltz 。

3.2 LND

LND(Lightning Network Daemon)是一个开源的比特币闪电网络实现,是构建在比特币和其他一些加密货币之上的第二层支付协议。它是由Lightning Labs开发的,旨在提供快速、低成本和可扩展的支付解决方案。

LND 的主要特点和功能包括:

  • 支持多种加密货币:LND 最初是为比特币设计的,但现在也支持其他一些加密货币,例如比特币测试网、Litecoin、Groestlcoin等。这意味着可以在不同的区块链上使用 LND 构建闪电网络。
  • 快速支付:LND 实现了闪电网络协议,允许参与者在支付通道内进行快速的点对点支付。由于交易不需要被写入主链,支付可以几乎即时完成,从而提供了比传统链上交易更快的支付体验。
  • 低成本支付:闪电网络的交易费用相对较低,因为支付在通道内进行,只有在通道关闭时才需要将最终结算结果写入区块链。这样可以节省交易费用,并为小额支付提供了低成本的解决方案。
  • 支持多种操作系统和接口:LND 支持在不同的操作系统上运行,包括Linux、macOS和Windows。它提供了易于使用的命令行接口(CLI),以及适用于开发者的API和软件开发工具包(SDK),使开发人员可以集成闪电支付功能到自己的应用程序中。
  • 安全性和隐私保护:LND 借助比特币的安全性作为底层网络,同时利用闪电网络的隐私保护特性,提供了更高的安全性和隐私保护。闪电网络使用基于哈希锁定和解锁的交易机制,保护参与者的资金安全和交易隐私。

LND 是一个活跃的开源项目,得到了社区的广泛关注和贡献。它的目标是通过构建闪电网络生态系统,为比特币和其他加密货币提供可扩展、高效和私密的支付解决方案。

3.3 其他场景

  • 社交平台支付打赏:近期火热的Damus支持了闪电网络支付及打赏功能,用户可选择使用Strike、Cash App、Blue Wallet等数十个钱包。
  • 跨境汇款:数字支付平台Strike于2023年1月宣布与Send Globally合作,使得美国和菲律宾的用户之间可以通过闪电网络进行快速、安全、低成本的汇款。通过Send Globally,美元可以转换成比特币,通过闪电网络发送至收款人所在国家的第三方合作伙伴,再转换成当地货币并直接发送到收款人的账户。
  • 商户支付:Strike和 Shopify、Blackhawk Network、NCR 合作建立了比特币支付系统,该系统允许商家在客户使用加密货币付款后快速接收美元。目前支持该支付系统的商家包括麦当劳、CVS、Walgreens、Whole Foods 和沃尔玛等。
  • 转账交易:Jack Dorsey领导的支付公司Block旗下的支付平台Cash APP可支持通过闪电网络发送和接受比特币。








状态通道和闪电网络的评论 (共 条)

分享到微博请遵守国家法律