本文介绍了在闪电网络中使用Schnorr适配签名的方法,以解决当前闪电网络中使用的常见秘密导致的隐私问题和中间节点串通窃取费用的问题。文章详细说明了Alice向Bob支付的过程,以及通过中间节点支付的具体步骤。
适配器签名系列: 1.适配器签名 - Schnorr 签名和 ECDSA- 2.Schnorr 签名上的适配器签名 - 跨链原子交换- 3.Schnorr 签名上的适配器签名 - 闪电网络- 4.ECDSA 上的适配器签名 5.ECDSA 上的隐秘对数合约中的适配器签名
作为适配器签名系列的一部分,前一章解释了 Schnorr 适配器签名在跨链原子交换中的工作原理。在本章中,我们将讨论 Schnorr 适配器签名如何在闪电网络中使用。
在上面的例子中,Alice 通过 Bob 和 Carol 向 Daniel 支付 1.0 BTC。Alice 首先从 Daniel 那里接收到一个秘密值的哈希,并将支付金额 + 手续费(在这个例子中是 1.2 BTC)锁定到相邻的节点(在这个例子中是 Bob)。从 Daniel 接收到的哈希用于锁定,以便 Bob 只能通过揭示 Daniel 用于生成哈希的秘密值来获得 1.2BTC。中间的节点以类似的方式锁定每个支付。一旦 Carol 使用哈希锁定了 1BTC,Daniel 可以揭示秘密值并接收 1BTC。Carol 可以与 Bob 完成相同的过程,而 Bob 则可以与 Alice 完成相同的过程。
这种方法的缺点是,如果通道被单方面关闭,秘密可能会出现在区块链上,在这种情况下,第三方将能够链接 Alice 和 Daniel 之间的支付。
2.使用秘密哈希的蠕虫攻击 使用秘密哈希值的闪电网络支付的另一个潜在问题是所谓的“蠕虫攻击”。考虑 Alice 通过 Bob、Carol 和 Denise 向 Ellen 支付,但 Bob 和 Daniel 通过“带外”交换秘密来合谋窃取 Carol 的手续费:
Ellen 在所有资金被锁定后通过向 Daniel 揭示秘密接收 1.0 BTC
这使得 Bob 和 Daniel 能够接收原本应支付给 Carol 的手续费。请注意,Alice 和 Ellen 都不会意识到这次攻击,因为两笔支付都成功了。
3.使用适配器签名的闪电网络
我们了解到,当前闪电网络上使用公共秘密的支付可能导致隐私问题,并且中间节点可能通过合谋窃取手续费。这些问题可以通过使用 Schnorr 适配器签名来解决。
对于这个应用,我们将使用“公钥调整”构建的 Schnorr 适配器签名,如第一章所述。(更多信息请参阅适配器签名 - Schnorr 签名和 ECDSA-)
我们将首先讨论 Alice 和 Bob 之间没有中间节点的简单支付,然后讨论通过中间节点从 Alice 向 Carol 支付的情况。
3-1.使用适配器签名的 Alice 和 Bob 之间的支付(无中间节点) Alice 和 Bob 交换他们知道秘密值的公钥点,并创建一个共同的公钥(使用 MuSig 协议)。Alice 将 1BTC 锁定在可以使用该共同公钥的私钥解锁的交易中。然后,Alice 为交易输入创建了一个适配器签名,该签名对于共同公钥部分有效。Bob 验证后,使用他的部分创建类似的适配器签名,并将两个适配器签名相加,然后将结果发送给 Alice。Alice 验证后,将她的秘密值提供给 Bob,Bob 现在可以解密签名并解锁 1BTC。当然,由于我们在闪电网络中,实际上双方只是同意创建一个新的承诺交易并撤销之前构建的交易。之后,Bob 可以向 Alice 提供他的秘密作为支付证明。以下是此协议涉及的步骤的详细描述:
3.Alice 创建一个适配器 Schnorr 签名 SA’ 并将其传递给 Bob
4.Bob 验证 Alice 的适配器 Schnorr 签名,使用他的私钥创建另一个适配器签名,并将两个适配器签名的和返回给 Alice。
5.Alice 验证加和的适配器 Schnorr 签名,并将 tA 交给 Bob
6.Bob 解密加和的适配器 Schnorr 签名并解锁 Alice 的支付
7.Alice 可以从 sAB 和 sAB’ 中获得 tB,作为支付证明。
3-2.通过中间节点的支付 从 Alice 通过中间节点向 Carol 的支付协议与上述描述类似。Alice、Bob 和 Carol 各自持有一个秘密值,他们共同创建并相加各自的适配器签名。适配器签名通过添加各自持有的秘密值来解密。
当 Carol 发布秘密值并从 Bob 那里获得支付时,Bob 获得秘密值并从 Alice 那里获得支付。
1.(A⇔B⇔C) Alice 从 Carol 接收到 TC(包含在她的发票中),各方生成并共享秘密值如下。
2-1.(A⇔B) Alice 使用 P, R 参数(P 是使用 Mu-sig 与 Bob 一起创建的),并使用 PAB 将她的 1.1BTC 锁定在 P2WPKH 输出中
2-2.(B⇔C) Bob 使用 P, R 参数(P 是使用 Mu-sig 与 Carol 一起创建的),并使用 PBC 将他的 1BTC 锁定在 P2WPKH 输出中
3-1.(A⇔B) Alice 创建一个适配器 Schnorr 签名并将其传递给 Bob
3-2.(A⇔B) Bob 验证 Alice 的适配器 Schnorr 签名,使用他的私钥创建另一个适配器签名,并将两个适配器签名的和返回给 Alice。
4-1.(B⇔C) Bob 创建一个适配器 Schnorr 签名并将其传递给 Carol
4-2.(B⇔C) Carol 验证 Bob 的适配器 Schnorr 签名,使用她的私钥创建另一个适配器签名,并将两个适配器签名的和返回给 Bob
5-1.(A⇔B) Alice 验证 Bob 的适配器 Schnorr 签名并向 Bob 发送 ACK
5-2.(B⇔C) Bob 验证 Carol 的适配器 Schnorr 多重签名并向 Carol 发送 ACK
6.(A⇔C) Carol 向 Alice 发送 ACK,然后 Alice 将 tA+tB 发送给 Carol
7-1.(B⇔C) Carol 解密适配器 Schnorr 签名并解锁 Bob 的支付
7-2.(A⇔B) Bob 从 sBC 和 sBC’ 中获得 tA+tC,解密适配器 Schnorr 签名 sBC’(从而解锁 Alice 的支付)
9.Alice 从 sAB 和 sAB’ 中获得 tC,作为支付证明。
通过这种方式,Schnorr 签名上的闪电网络使用基于椭圆曲线点的适配器签名而不是秘密哈希来启用无法在节点之间链接的支付。它还可以防止蠕虫攻击。
本章关于使用 Schnorr 适配器签名的闪电网络到此结束。下次,我们将讨论 ECDSA 上的适配器签名。
- 原文链接: medium.com/crypto-garage...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!