{"content":{"title":"比特币与Layer2资产跨链技术","body":"![1.jpg](https://img.learnblockchain.cn/attachments/2024/08/4hbWWoew66b0921f51ac1.jpg)\r\n\r\n原文标题：《Adaptor Signatures and Its Application to Cross-Chain Atomic Swaps》\r\n作者: mutourend & lynndell\r\n原文链接：https://blog.bitlayer.org/Adaptor_Signatures_and_Its_Application_to_Cross-Chain_Atomic_Swaps/\r\n\r\n# 1. 引言\r\n随着比特币Layer2扩容方案的快速发展，比特币与其Layer2对应网络之间的跨链资产转移频率显著增加。这一趋势受到Layer2技术（如Bitlayer）所提供的更高可扩展性、更低的交易费和高吞吐量的推动。这些进步促进了更高效、更经济的交易，从而促进比特币在各种应用中的更广泛采用和集成。因此，比特币与Layer2网络之间的互操作性正成为加密货币生态系统的关键组成部分，推动创新，并为用户提供更多多样化和强大的金融工具。\r\n\r\n如表1所示，比特币与Layer2之间的跨链交易有三个典型方案，分别为中心化跨链交易、BitVM跨链桥和跨链原子交换。这三个技术在信任假设、安全性、便捷性、交易额度等方面各不相同，能满足不同的应用需求。\r\n\r\n表 1. 跨链交易技术对比\r\n![biaoge.png](https://img.learnblockchain.cn/attachments/2024/08/25zQRBL166b08e3e621dc.png)\r\n\r\n**中心化跨链交易：** 用户首先将比特币支付给中心化机构（如项目方或交易所），则中心化机构在Layer2网络上将等值资产支付到用户指定的地址，从而完成跨链资产转移。这种技术的优点在于速度快，撮合过程相对容易，因为中心化机构可以迅速确认并处理交易。然而，这种方法的安全性完全依赖于中心化机构的可靠性和信誉。如果中心化机构遭遇技术故障、恶意攻击、违约，则用户的资金面临较高的风险。此外，中心化跨链交易也可能泄漏用户隐私，需要用户在选择这种方法时慎重考虑。因此，尽管其便捷性和高效性为用户提供了极大的便利，但安全性和信任是中心化跨链交易面临的主要挑战。\r\n\r\n**BitVM跨链桥：** 该技术相对复杂。首先，在Peg-in阶段，用户将比特币支付给BitVM联盟控制的多签地址，实现比特币锁定。在Layer2铸造出对应数量的通证，并用该通证实现Layer2交易与应用。当用户销毁Layer2通证时，由Operator垫付。随后，Operator到BitVM联盟控制的多签池子中报销对应数量的比特币。为防止Operator作恶，报销过程采用乐观挑战机制，即任意第三方均可对恶意报销行为发起挑战，挫败作恶行为。该技术引入了乐观挑战机制，所以技术相对复杂。此外，乐观挑战机制涉及大量的挑战与响应交易，交易费较高。因此，BitVM跨链桥仅适用于超大额交易，类似于U的增发，从而使用频率较低。\r\n\r\n**跨链原子交换：** 原子交换是一种实现去中心化加密货币交易的合约。在这种情况下，“原子”意味着一种资产所有权的变更实际上意味着另一种资产所有权的变更。该概念于2013年由TierNolan在Bitcointalk论坛上首次提出。4年来，原子交换一直停留在理论领域。直到2017年，Decred和Litecoin成为第一个成功完成原子交换的区块链系统。\r\n原子交换必须涉及两方，而任何第三方不能中断或干扰交换过程。这意味着该技术是去中心化的、不受审查、具有较好的隐私保护、能实现高频跨链交易，从而在去中心化交易所中广泛应用。\r\n当前，跨链原子交换需要4笔交易，[一些方案](https://gist.github.com/RubenSomsen/8853a66a64825716f51b409be528355f)尝试将交易笔数压缩为2笔，但会增加对交换双方的实时在线要求等。\r\n最后，跨链原子交换技术主要包括哈希时间锁和适配器签名。\r\n\r\n**基于哈希时间锁（HTLC）的跨链原子交换：** 第一个成功实现跨链原子交换的项目是Decred，利用“哈希锁”和“时间锁”，借助链上脚本（或智能合约）实现了TierNolan提出的的原子交换。HTLC允许两个用户进行有时间限制的加密货币交易，即接收者必须在规定时间内（以区块数量或区块高度确定）向合约提交加密证明（“秘密”），否则资金将退还给发送者。如果接收者确认付款，则交易成功。因此，要求参与的两个区块链都具有“哈希锁”和“时间锁”功能。\r\n\r\n虽然HTLC原子交换是去中心化交换技术领域的重大突破，但是存在以下问题。这些原子交换交易以及与它们相关的数据都是在链上进行的，导致用户隐私泄漏。换言之，每次交换时，两个区块链上都会出现相同的哈希值，且仅相隔只有几个区块。这意味着，观察者可以将参与交换的货币联系起来，即在彼此靠近的区块中找到相同的哈希值（TimeStamp-wise）。当跨链追踪货币时，很容易确定来源。尽管这种分析不会揭示任何相关的身份数据，但第三方可以轻而易举地推断出所涉及的参与者的身份。\r\n\r\n**基于适配器签名的跨链原子交换：** BasicSwap提供的第二种交换被称为“适配器签名”原子交换，基于Monero开发人员Joël Gugger在2020年发表的一篇题为\"[Bitcoin–Monero Cross-chain Atomic Swap](https://eprint.iacr.org/2020/1126.pdf)\"论文。该论文可以说是Lloyd Fournier 2019年论文[One-Time Verifiably Encrypted Signatures, A.K.A. Adaptor Signatures](https://github.com/LLFourn/one-time-VES/blob/master/main.pdf)的一种实现。适配器签名是一种附加签名，其与初始签名相结合以显示秘密数据，使双方能够同时向对方透露两部分数据，并且是使Monero原子交换对成为可能的scriptless协议的关键组成部分。\r\n\r\n与HTLC原子交换相比，基于适配器签名的原子交换有3个优势：首先，适配器签名交换方案取代了“秘密哈希”交换所依赖的链上脚本，包括时间锁和哈希锁。换言之，HTLC交换中的秘密和秘密哈希在适配器签名交换中无直接对应关系。因此，在比特币研究界被称为“scriptless scripts 隐形脚本”。此外，由于不涉及这样的脚本，链上占用空间减少，使得基于适配器签名的原子交换更轻量，费用更低。最后，HTLC要求每条链使用相同的哈希值，而适配器签名的原子交换中涉及的交易无法链接，实现隐私保护。\r\n\r\n本文首先介绍Schnorr/ECDSA适配器签名与跨链原子交换原理。然后，分析适配器签名中存在的随机数安全问题和跨链场景中的系统异构和算法异构问题，并给出解决方案。最后，对适配器签名进行扩展应用，实现非交互式数字资产托管。\r\n\r\n# 2. 适配器签名与跨链原子交换\r\n## 2.1 Schnorr适配器签名与原子交换\r\n**初始化：** 群$\\mathbb{G}$生成元为$G$，阶为$p$。抗碰撞哈希函数$\\mathsf{hash}$将任意长数据$\\{0,1\\}^*$映射为随机整数$\\mathbb{Z}_p$。\r\n\t\r\n**密钥生成：** *[Bitcoin交易单1]* 在比特币系统中，Alice有1BTC。该资产的私钥为$x\\in \\mathbb{Z}_p$，公钥为$X=x\\cdot G$。\r\n*[Bitlayer交易单1]* 在Bitlayer系统中，Bob有7wU。该资产的私钥为$y\\in \\mathbb{Z}_p$，公钥为$Y=y\\cdot G$。\r\n\t\r\n**预签名：** Alice选择随机数$r \\leftarrow \\mathbb{Z}_p$，输入生成元$G$和两方的公钥$(X,Y)$，如下计算\r\n\t$$\r\n\t\t \\hat{R}:=r\\cdot G, \\\\ \r\n\t\t R:=\\hat{R}+Y, \\\\ \r\n\t\t c:=\\mathsf{hash}(R||X||m), \\\\ \r\n\t\t \\hat{s}:=r+cx, \\\\ \r\n        $$\r\n\r\n则预签名为$(\\hat{R},\\hat{s})$。该预签名表明Alice将支付1BTC到Bob的接收地址。\r\n\t\r\n**预签校验：**  Bob接收该预签名$(\\hat{R},\\hat{s})$，如下计算\r\n\t$$\\begin{aligned}\r\n\t\t& R:=\\hat{R}+Y, \\\\ \r\n\t\t& c:=\\mathsf{hash}(R||X||m). \\\\ \r\n\t\\end{aligned}$$\r\n\tBob使用Alice的公钥$X$校验以下等式\r\n\t$$\\hat{R}=\\hat{s}\\cdot G-c\\cdot X.$$\r\n\t一致性原理如下：\r\n\t$$\\hat{R}=r\\cdot G=(r+cx)\\cdot G-c\\cdot X=\\hat{s}\\cdot G-c\\cdot X$$\r\n\t\r\n**适配签名：** Bob基于预签名$(\\hat{R},\\hat{s})$，输入其私钥和公钥$(y,Y)$，如下计算\r\n\t$$\\begin{aligned}\r\n\t\t& R:=\\hat{R}+Y, \\\\ \r\n\t\t& s:=\\hat{s}+y, \\\\ \r\n\t\\end{aligned}$$\r\n\t则签名为$(R,s)$。Bob将该签名广播到比特币系统中。\r\n\t\r\n**签名校验：** 比特币矿工接收签名$(R,s)$，使用Alice的公钥$X$，校验以下等式\r\n\t$$R=s\\cdot G-c\\cdot X.$$\r\n\t一致性原理如下：\r\n\t$$\\begin{aligned}\r\n\t\tR&=\\hat{R}+Y, \\\\ \r\n\t\t&=(r+y)\\cdot G, \\\\ \r\n\t\t&=(r+cx+y)\\cdot G-c\\cdot X, \\\\ \r\n\t\t&=(\\hat{s}+y)\\cdot G-c\\cdot X, \\\\ \r\n\t\t&=s\\cdot G-c\\cdot X \\\\ \r\n\t\\end{aligned}$$\r\n\t因此，Bob在比特币系统中接收到Alice支付的1BTC *[Bitcoin交易单2]*。\r\n\t\r\n**秘密提取：** Alice根据预签名$(\\hat{R},\\hat{s})$和签名$(R,s)$，计算秘密$y$\r\n\t$$y:=s-\\hat{s}.$$\r\n\tAlice使用该秘密$y$生成签名并广播到Bitlayer系统中，提取地址$Y$中的7wU *[Bitlayer交易单2]*。\r\n\t\r\n## 2.2 ECDSA适配器签名与原子交换\r\n初始化和密钥生成省略。\r\n\t\r\n**预签名：** Alice选择随机数$r \\leftarrow \\mathbb{Z}_p$，输入生成元$G$及其公钥$Y$，如下计算\r\n\t$$\\begin{aligned}\r\n\t\t& \\hat{R}:=r\\cdot G, \\\\ \r\n\t\t& R:=r\\cdot Y, \\\\ \r\n\t\t& \\pi :=\\mathsf{zk}\\{r|\\hat{R}=r\\cdot G,R=r\\cdot Y\\}, \\\\ \r\n\t\t& R_x:=f(R) \\\\ \r\n\t\t& \\hat{s}:=r^{-1}(\\mathsf{hash}(m)+R_x x) \\\\ \r\n\t\\end{aligned}$$\r\n则预签名为$(R,\\hat{R},\\hat{s},\\pi)$。其中，$f(R)$是指取$R$的横坐标$R_x$。预签名表明Alice支付1BTC给Bob。\r\n\t\r\n**预签校验：** Bob接收该预签名$(R,\\hat{R},\\hat{s},\\pi )$，校验零知识证明。计算$R_x=f(R)$，并使用Alice的公钥$X$校验预签名\r\n\t$$\\begin{aligned}\r\n\t\t& \\mathsf{Verify}\\left( \\pi ,(G,\\hat{R})(R,Y) \\right)=1, \\\\ \r\n\t\t& \\hat{s}\\cdot \\hat{R}=\\mathsf{hash}(m)\\cdot G+R_x\\cdot X. \\\\ \r\n\t\\end{aligned}$$\r\n一致性原理如下：\r\n\t$$\\hat{s}\\cdot \\hat{R}=r^{-1}(\\mathsf{hash}(m)+R_xx)\\cdot \\hat{R}=\\mathsf{hash}(m)\\cdot G+R_x\\cdot X$$\r\n\t\r\n**适配签名：** Bob基于预签名$(R,\\hat{R},\\hat{s},\\pi )$，输入其私钥$y$，如下计算\r\n\t$$s:=\\hat{s}y^{-1},$$\r\n\t则签名为$(R_x,s)$。Bob将该签名广播到比特币系统中。\r\n\t\r\n**签名校验：** 比特币矿工接收签名$(R_x,s)$，使用Alice的公钥$X$，校验以下等式\r\n\t$$R_x=f\\left( s^{-1}(\\mathsf{hash}(m)\\cdot G+R_x\\cdot X) \\right).$$\r\n\t一致性原理如下：\r\n\t$$\\begin{aligned}\r\n\t\t& R_x=f(R) \\\\ \r\n\t\t& =f(r\\cdot Y) \\\\ \r\n\t\t& =f(ry\\cdot G) \\\\ \r\n\t\t& =f(r(\\mathsf{hash}(m)+R_x x)^{-1}y(\\mathsf{hash}(m)+R_xx)\\cdot G) \\\\ \r\n\t\t& =f\\left( {s^{-1}}(\\mathsf{hash}(m)\\cdot G+R_x\\cdot X) \\right) \\\\ \r\n\t\\end{aligned}$$\r\n因此，Bob在比特币系统中接收到Alice支付的1BTC *[Bitcoin交易单2]*。\r\n\t\r\n**秘密提取：** Alice根据预签名$(R,\\hat{R},\\hat{s},\\pi )$和签名$(R_x,s)$，如下计算\r\n\t$$y':=s^{-1}\\hat{s}.$$\r\n\t如果$y'\\cdot G=Y$，则令$y=y'$；如果$-y'\\cdot G=Y$，则令$y=-y'$。\r\n\tAlice使用秘密$y$生成签名并广播到Bitlayer系统中，提取地址$Y$中的7wU *[Bitlayer交易单2]*。\r\n\t\r\n### 2.2.1 零知识证明$\\mathsf{zk}\\{r|\\hat{R}=r\\cdot G,R=r\\cdot Y\\}$\r\n**承诺：**  证明方选择随机数$v\\leftarrow \\mathbb{Z}_p$，计算承诺\r\n\t$$\r\n        \\hat{V}:=v\\cdot G,V:=v\\cdot Y.\r\n        $$\r\n        \r\n**挑战：** 证明方计算挑战\r\n\t$$\r\n        c:=\\mathsf{hash}(\\hat{R},G,R,Y,\\hat{V},V).\r\n        $$\r\n\t\r\n**响应：** 证明方计算响应\r\n\t$$\r\n        z:=v+cr.\r\n        $$  \r\n\t发送证明$\\pi = (\\hat{R},G,R,Y,\\hat{V},V,z)$。\r\n\t\r\n**验证：** 验证方计算挑战$c:=\\mathsf{hash}(\\hat{R},G,R,Y,\\hat{V},V)$，然后校验以下2个等式\r\n\t$$\r\n\t\t z\\cdot G=\\hat{V}+c\\cdot \\hat{R}, \\\\ \r\n\t\t z\\cdot Y=V+c\\cdot R.\\\\ \r\n        $$\r\n\t一致性过程如下：\r\n\t$$\r\n\t\tz\\cdot G=(v+cr)\\cdot G=\\hat{V}+c\\cdot \\hat{R} \\\\ \r\n\t\tz\\cdot Y=(v+cr)\\cdot Y=V+c\\cdot R \\\\ \r\n        $$\r\n\r\n# 3. 问题与解决方案\r\n## 3.1 随机数问题与解决方案\r\n### 3.1.1 随机数泄漏问题\r\nSchnorr/ECDSA适配器签名的预签名均对随机数$r$进行承诺$\\hat{R}=r\\cdot G$。此外，零知识证明中对随机数$v$进行承诺$\\hat{V}=v\\cdot G,V=v\\cdot Y$。如果随机数泄漏，则会导致私钥泄漏。\r\n\r\n具体而言，在Schnorr协议中，如果随机数$r$泄漏，则能够根据等式\r\n$$\r\n\\hat{s}=r+cx\r\n$$\r\n计算出私钥$x$。\r\n同理，在ECDSA协议中，如果随机数$r$泄漏，则能够根据等式\r\n$$\r\n\\hat{s}=r^{-1}(\\mathsf{hash}(m)+R_x x)\r\n$$\r\n计算出私钥$x$。\r\n最后，在零知识证明协议中，如果随机数$v$泄漏，则能够根据等式\r\n$$\r\nz:=v+cr\r\n$$\r\n计算出随机数$r$，从而进一步根据随机数$r$计算出私钥$x$。因此，随机数使用完后需立刻删除。\r\n\r\n### 3.1.2 随机数重用问题\r\n对任意两个跨链交易，如果适配器签名协议使用相同的随机数，则会导致私钥泄漏。\r\n具体而言，在Schnorr协议中，如果使用了相同的随机数$r$，则以下方程组中仅$r$和$x$是未知的\r\n$$\r\n \\hat{s}_1=r+c_1x, \\\\\r\n\\hat{s}_2=r+c_2x. \r\n$$\r\n因此，可以求解方程组，获得私钥$x$。\r\n\r\n同理，在ECDSA适配器签名协议中，如果使用相同的随机数$r$，则以下方程组中仅$r$和$x$是未知的\r\n$$\r\n  \\hat{s}_1=r^{-1}(\\mathsf{hash}(m_1)+R_x x), \\\\ \r\n \\hat{s}_2=r^{-1}(\\mathsf{hash}(m_2)+R_x x). \\\\ \r\n$$\r\n\r\n因此，可以求解方程组，获得私钥$x$。\r\n\r\n最后，在零知识证明协议中，如果使用相同的随机数$v$，则以下方程组中仅$v$和$r$是未知的\r\n$$\r\n  z_1=v+c_1r, \\\\ \r\n z_2=v+c_2r. \\\\ \r\n$$\r\n因此，可以求解方程组，获得随机数$r$，从而进一步解方程组获得私钥$x$。\r\n\r\n以此类推，不同用户使用相同的随机数，也会泄漏私钥。换言之，使用相同随机数的两个用户，能够求解方程组，获得对方的私钥。因此，应使用RFC 6979解决随机数重用问题。\r\n\r\n### 3.1.3 解决方案：RFC 6979\r\nRFC 6979指定了一种使用DSA和ECDSA生成确定性数字签名的方法，解决了与生成随机值$k$相关的安全问题。\r\n传统的DSA和ECDSA签名依赖于每次签名操作随机生成的随机数$k$。如果此随机数被重用或生成不当，会危及私钥的安全性。RFC 6979通过从私钥和待签名消息中确定性地导出$k$，消除了生成随机数的需求。\r\n这确保了使用相同私钥签署相同消息时，签名总是相同的，从而增强了可重现性和可预测性。\r\n具体而言，确定性的$k$是由HMAC生成的。该过程涉及哈希函数（例如$\\mathsf{SHA256}$）对私钥、消息和计数器计算哈希值，\r\n\r\n$$k=\\mathsf{SHA256}(sk, msg, counter).$$\r\n\r\n上述等式中，为表达简洁，仅对私钥$sk$，消息$msg$和计数器$counter$计算哈希值，实际RFC 6979中计算过程涉及更多的哈希计算。该等式确保$k$对每条消息都是唯一的，同时对于相同的输入具有可重现性，并且减少了与弱或受损的随机数生成器相关的私钥暴露风险。因此，RFC 6979为使用DSA和ECDSA的确定性数字签名提供了一个强大的框架，解决了与随机数生成相关的重大安全问题，并增强了数字签名的可靠性和可预测性。这使其成为需要高安全性和符合严格操作要求的应用程序的宝贵标准。\r\n\r\nSchnorr/ECDSA签名存在随机数缺陷，需要使用RFC 6979进行防范。因此，基于Schnorr/ECDSA的适配器签名也存在这些问题，也需要使用RFC 6979规范以解决这些问题。\r\n\r\n\r\n## 3.2 跨链场景问题与解决方案\r\n### 3.2.1 UTXO与账户模型系统异构问题与解决方案\r\n如图1所示，比特币采用UTXO模型，基于Secp256k1曲线实现原生的ECDSA签名。Bitlayer为EVM兼容Bitcoin L2链，采用Secp256k1曲线，支持原生的ECDSA签名。适配器签名实现了BTC交换所需的逻辑，而Bitlayer交换对应方则由以太坊智能合约的强大功能支撑。\r\n\r\n基于适配器签名的跨链原子交换，或至少是设计用于 ECDSA 曲线的semi-scriptless适配器签名方案，与以太坊不兼容。原因在于以太坊是账户模型的，而不是UTXO模型。具体而言，基于适配器签名的原子交换中要求退款交易必须预先签名。但是，在以太坊系统中，如果不知道 nonce，则无法预先签名交易。因此，一方可以在预先签名完成和交易执行之间发送交易 —— 这将使预先签名的交易无效（因为nonce已被使用，不能重复使用）。\r\n\r\n此外，从隐私角度来看，这意味着Bitlayer swap的匿名性比HTLC更优（swap的双方都可找到合约）。但是，由于需要一方有公开合约，使得Bitlayer swap的匿名性低于适配器签名的匿名性。在没有合约的一方，swap交易看起来与任何其他交易都一样。但是，在有EVM合约的一方，交易明显是为了资产swap。虽然一方有公开合约，但是即使使用复杂的链分析工具，也不可能将其追溯到另一条链。\r\n\r\n\r\n![2.jpg](https://img.learnblockchain.cn/attachments/2024/08/RbZwhSf666b0925b5be68.jpg)\r\n图 1. UTXO与账户模型异构系统跨链原子交换\r\n\r\nBitlayer目前支持原生ECDSA签名，也可通过智能合约实现Schnorr签名验证。如果使用原生的Bitlayer交易，则无法预签原子交换中的退款交易；需要使用Bitlayer智能合约交易，才能够实现原子交换。但是，该过程会牺牲隐私性，即Bitlayer系统中参与原子交换的交易是可追溯的，但无法追溯到BTC系统中的交易。在Bitlayer端可设计类似Tornado Cash之类的Dapp应用，为BTC与Bitlayer原子交换中Bitlayer端的交易提供隐私服务。\r\n\r\n### 3.2.2 相同曲线，不同算法，适配器签名安全\r\n如图2所示，假设Bitcoin和Bitlayer均使用Secp256k1曲线，但是Bitcoin使用Schnorr签名，而Bitlayer使用ECDSA。该情况下，基于Schnorr和ECDSA的适配器签名，是可证明安全的。假设给定ECDSA和Schnorr签名预言机，能够构造模拟器S攻破ECDSA，则仅给定ECDSA签名预言机，能够构造模拟器S攻破ECDSA。但是，ECDSA是安全的。同理，假设给定ECDSA和Schnorr签名预言机，能够构造模拟器S攻破Schnorr签名，则仅给定ECDSA签名预言机，能够构造模拟器S攻破Schnorr签名。但是，Schnorr签名是安全的。因此，在跨链场景下，适配器签名使用了相同曲线，但是签名算法不同，则是安全的。换言之，适配器签名允许一端使用ECDSA，而另一端使用Schnorr签名。\r\n\r\n\r\n![3.jpg](https://img.learnblockchain.cn/attachments/2024/08/IaaLUkvn66b092645588a.jpg)\r\n图 2. 相同曲线，不同算法，适配器签名\r\n\r\n\r\n### 3.2.3 曲线不同，适配器签名不安全\r\n假设Bitcoin使用Secp256k1曲线和ECDSA签名，而Bitlayer使用ed25519曲线和Schnorr签名。该情况下，不能使用适配器签名。由于曲线不同，导致椭圆曲线群的阶不同，即模系数不同。Bob在Bitcoin系统中将$y$适配到ECDSA签名中时，即计算$s:=\\hat{s}+y$。此时，$y$的取值空间为Secp256k1椭圆曲线群的标量空间。随后，Alice需要使用$y$在ed25519椭圆曲线群上进行Schnorr签名。但是，ed25519曲线余因子为8，且模系数不等于Secp256k1椭圆曲线群的模系数。因此，使用$y$在ed25519曲线上进行Schnorr签名是不安全的。\r\n\r\n\r\n# 4. 数字资产托管应用\r\n数字资产托管有三个参与方，分别为：买方Alice、卖方Bob和托管方。使用适配器签名能够实现非交互式门限数字资产托管，且在无需交互的情况下实例化门限支出策略的子集。该子集由2种参与者组成：参与初始化的参与者、不参与初始化的参与者，后者称为托管方。托管方不能签署任意交易，而只向支持的其中一方发送秘密。\r\n\r\n一方面，托管人只能在几个固定的结算交易中进行选择，而无法与其他参与方之一签署新的交易。因此，这种秘密释放机制使得非交互式门限托管的灵活性不如门限Schnorr签名。另一方面，可以使用门限Schnorr签名设置2-of-3花费策略。但是，门限Schnorr签名协议需要三方运行进行去中心化密钥生成协议。因此，基于适配器签名的资产托管协议具有非交互优势。\r\n\r\n## 4.1 基于适配器签名的非交互式资产托管\r\n\r\n\r\n![4.jpg](https://img.learnblockchain.cn/attachments/2024/08/yR4phbYD66b0926b3d793.jpg)\r\n图 3. 基于适配器签名的非交互式资产托管\r\n\r\n如图4所示，Alice和Bob想要创建一个具有隐形策略的2-of-3交易输出，其中包含一个托管方。取决于条件$c$，Alice或Bob可花费该交易输出。如果Alice和Bob之间存在争议，则托管方（公钥为$E$，私钥为$e$）决定由Alice或Bob获得该资产。\r\n1. 创建一个未签名funding交易，将BTC发送给Alice和Bob之间的某2-of-2 MuSig output。\r\n2. Alice选择一个随机值$t_A$，将某交易的adapator为$t_A\\cdot G$的Schnorr预签名$(\\hat{R}_A,\\hat{s}_A)$发送给Bob，该交易为将funding output发送给Bob。Alice同时给Bob发送一个密文，该密文包含对秘密$t_A$并将托管公钥$E$调整为$E_c = E + hash(E, c)G$的\\textbf{可验证加密}$C = Enc(E_c, t_A)$。该过程中，Bob收到Alice的预签名后，加上自己的签名，不满足2-of-2 MuSig，从而无法花费funding output。仅当Bob知道$t_A$（由托管方可提供），或Alice另外签署完整签名发送给Bob，才能花费funding output。\r\n3. 与之相对应，Bob基于其adaptor secret $t_B$，重复步骤（2）。此时Bob所签的交易为将funding output发送给Alice。\r\n4. Alice和Bob均验证接收密文的有效性，确认密文是对$E_c$对秘密的加密，从而对funding交易签署并广播。可验证加密使得在setup阶段无需托管方参与，且不需要公开合约$c$。\r\n5. 当有争议时，Alice和Bob可将密文以及条件c发送给托管方，则托管方可实际情况判决，从而使用调整私钥$e+hash(E, c)$进行解密发送$t_A/t_B$给Bob/Alice。\r\n\r\n如果无争议，则Alice和Bob可按其所想来花费2-of-2 MuSig output。如果存在争议，则任何一方均可联系托管方，并请求其adaptor secret $t_A$或$t_B$。因此，其中一方在托管方的帮助下，可完成该适配器签名，并广播该结算交易。\r\n\r\n\r\n## 4.2 可验证加密\r\n基于离散对数的经典可验证加密方案（[Practical Verifiable Encryption and Decryption of Discrete Logarithms](https://link.springer.com/content/pdf/10.1007/978-3-540-45146-4_8.pdf)）不能用于Secp256k1 adaptors，因其仅支持验证特殊结构化的groups。\r\n目前，有2种有前景的方式来基于Secp256k1离散对数做可验证加密，分别为[Purify](https://dl.acm.org/doi/abs/10.1145/3372297.3417236)和[Juggling](https://arxiv.org/abs/2007.14423)。\r\n\r\n[Purify](https://dl.acm.org/doi/abs/10.1145/3372297.3417236) 最初是为了创建具有确定性nonce（DN）的MuSig协议而提出的，要求每个签名者使用零知识证明其nonce是将伪随机函数（PRF）正确应用于公钥和消息的结果。Purify PRF可在Bulletproofs零知识协议的算术电路中高效实现，用于在Secp256k1上的离散对数创建可验证加密方案。换言之，使用zkSnark实现可验证加密。\r\n\r\n[Juggling](https://arxiv.org/abs/2007.14423) 加密包括四个步骤：\r\n（1）将离散对数$x$切分为多个长为$l$的片段$x_k$，使得$x = \\sum _k 2^{(k-1)l} x_k$；\r\n（2）使用公钥$Y$对片段$x_k\\cdot G$进行ElGamal加密$\\{ D_k, E_k\\} = \\{ x_k\\cdot G + r_k\\cdot Y, r_k\\cdot G \\}$；\r\n（3）对每个$x_k\\cdot G$创建范围证明，证明$D_k$为一个Pedersen承诺$x_k\\cdot G + r_k\\cdot Y$，且其值小于$2^l$；\r\n（4）使用sigma协议，证明$\\{sum D_k, sum E_k\\}$是对$x_k\\cdot G$的正确加密。\r\n在解密过程中，对$\\{D_k, E_k\\}$解密出每个$x_k\\cdot G$，然后穷举搜索出$x_k$（取值范围为$[0, 2^l)$）。\r\n\r\nPurify需在Bulletproofs内执行一个PRF，相对复杂，而Juggling理论上更简单。此外，二者在proof size、证明时长和验证时长的差距很小。\r\n\r\n\r\n# 5. 总结\r\n本文对Schnorr/ECDSA适配器签名与跨链原子交换的原理进行了详细描述。深入分析了适配器签名存在随机数泄漏问题、重复问题，并提出使用RFC 6979以解决这些问题。此外，详细分析了跨链应用场景下，不但应考虑区块链的UTXO模型与账户模型之间的区别，还应考虑适配器签名是否支持不同算法、不同曲线等问题。最后，对适配器签名进行扩展应用，实现非交互式数字资产托管，并简单介绍了涉及的密码学原语--可验证加密。\r\n\r\n**参考文献**\r\n\r\n1. Gugger J. Bitcoin-monero cross-chain atomic swap[J]. Cryptology ePrint Archive, 2020.\r\n2. Fournier L. One-time verifiably encrypted signatures aka adaptor signatures[J]. 2019, 2019.\r\n3. https://crypto-in-action.github.io/ecdsa-blockchain-dangers/190816-secp256k1-ecdsa-dangers.pdf\r\n4. Pornin T. Deterministic usage of the digital signature algorithm (DSA) and elliptic curve digital signature algorithm (ECDSA)[R]. 2013.\r\n5. Komlo C, Goldberg I. FROST: flexible round-optimized Schnorr threshold signatures[C]//Selected Areas in Cryptography: 27th International Conference, Halifax, NS, Canada (Virtual Event), October 21-23, 2020, Revised Selected Papers 27. Springer International Publishing, 2021: 34-65.\r\n6. https://github.com/BlockstreamResearch/scriptless-scripts/blob/master/md/NITE.md\r\n7. https://particl.news/the-dex-revolution-basicswap-and-private-ethereum-swaps/\r\n8. Camenisch J, Shoup V. Practical verifiable encryption and decryption of discrete logarithms[C]//Annual International Cryptology Conference. Berlin, Heidelberg: Springer Berlin Heidelberg, 2003: 126-144.\r\n9. Nick J, Ruffing T, Seurin Y, et al. MuSig-DN: Schnorr multi-signatures with verifiably deterministic nonces[C]//Proceedings of the 2020 ACM SIGSAC Conference on Computer and Communications Security. 2020: 1717-1731.\r\n10. Shlomovits O, Leiba O. Jugglingswap: scriptless atomic cross-chain swaps[J]. arXiv preprint arXiv:2007.14423, 2020."},"author":{"user":"https://learnblockchain.cn/people/19509","address":null},"history":"bafkreicihrefkn6pz3wjnwtjdpdi7jgdh4n4dv7w3flbflqzvjdn2ogl3i","timestamp":1722849400,"version":1}