Universal Atomic Swaps:
Secure Exchange of Coins Across All Blockchains
Thyagarajan S A K, Malavolta G, Moreno-Sánchez P. Universal atomic swaps: Secure exchange of coins across all blockchains [C]//2022 IEEE Symposium on Security and Privacy (SP). IEEE, 2022: 1299-1316.

Abstract

商品交易是现代经济的支柱,最近加密货币的出现为交易去中心化(数字)资产打开了大门:加密货币的很大一部分价值来自货币之间的交换和交易,这可以说是去中心化货币最成功的应用。集中式、托管式加密货币交易所的安全问题推动了原子交换的设计,原子交换是任意两个用户之间进行硬币交换的协议。等,有些令人惊讶的是,没有原子交换协议同时满足以下简单但需要的属性:

(i) 非保管性,离开在交换过程中从用户手中持有硬币的可信第三方;

(ii) 通用性,即与所有(当前和未来)加密货币兼容;

(iii) 多资产,支持在一次原子互换中交换多个硬币。

从理论的角度来看,在这项工作中,我们展示了一个通用协议,用于安全地将任何(可能的多种)货币中的n个硬币交换为任何其他货币的n个硬币,对于任何n和n^。我们不需要任何相应区块链支持的自定义脚本语言,除了最起码的验证交易签名的能力。对于区块链使用ECDSA或Schnorr签名的特殊情况,我们基于适配器签名和时间锁谜题设计了一个实际有效的协议。作为我们方法的副产品,原子交换事务不再包含自定义脚本,而是与标准的一对一事务相同。我们还展示了我们的协议可以自然地推广到任何用户周期,例如,有两个以上参与者的原子交换。为了演示我们方法的实用性,我们对Schnorr/ECDSA签名协议的一个原型实现进行了评估,并观察到在商用机器上进行原子交换所需的时间不到1秒。即使在具有表达智能合约支持的区块链上(如以太坊),我们的方法在交易规模和gas成本方面都降低了链上成本。

SOLUTION OVERVIEW

在这个大纲中,我们主要关注我们的通用协议,它与任何区块链兼容,假设具有最小的事务签名验证能力(对于任何签名方案)。这列出了我们的方法的主要思想,它是我们对Schnorr/ECDSA签名的特殊情况的有效协议的基础。

1. 模拟事务超时: 

事务tx的超时t意味着只有在时间t过期后,该事务才被网络中的节点接受。通常,这是通过用timelock表示t并利用一个时间锁脚本来实现的,该脚本显式地包含在事务中,并检查是否已经达到了用t表示的timelock。也就是说,即使事务有有效的签名σ,但时间t还没有过期,时间锁脚本也会阻止事务被处理。我们的目标是在不使用任何链上脚本的情况下模拟这样的功能。

我们实现这一目标的主要手段是可验证的定时签名(VTS)。VTS允许用户(或提交者)对公钥pk下的消息m生成签名σ的定时承诺C,承诺C必须隐藏时间T的签名σ(提交者可以任意选择)。同时,提交者还生成一个证明π,证明承诺C包含一个有效的签名σ:这保证了σ可以由任何解决计算难题的人在时间T公开恢复。

为了直观地了解如何使用该工具模拟事务时间锁,考虑两个用户(Alice和Bob)共享一个地址pk AB(其中每一方都拥有相应密钥的份额)的情况。在将资金发送到pk AB之前,Alice和Bob共同签署了一个“退款”交易tx rfnd,将所有资金从pk AB转移回Alice的地址,这样只有Bob知道签名。然后Bob在这个退款签名上生成VTS(使用时间参数T),并向Alice提供结果承诺C和证明π。注意,如果在时间T之后pk AB中的一些资金仍然没有花完,那么Alice可以立即通过发布交易tx rfnd和她从C那里学到的有效签名来退款。

2. 一对一原子交换:

在VTS方案的基础上,我们首先提出了一个简单的单货币一对一原子交换协议。该协议包含四个阶段,我们将在下面描述。图1显示了各方在每个阶段的产出。对于约定,与(01)的密钥、交易和签名涉及从P0到P1的支付,(10)涉及从P1到P0的支付。

图1:1对1交换中各方P0和P1的不同阶段结果。在每个阶段中,接收该阶段输出的第一方被写在顶部,其次是接收该阶段输出的第二方。

  • Swap Setup Phase. 

在建立阶段,双方将他们的硬币转移到新的联合地址pk(01)和pk(10)(每个硬币一个),双方共同控制。更具体地说,我们有

每一方都拥有每个签名密钥的一份。然而,在将硬币转移到联合密钥之前,双方需要确保硬币不会永远锁定在联合地址中,以防一方离线。如上所述,这是通过生成两个refund transactions来完成的:

P1为前一个退款事务上的签名生成一个时间参数T0的VTS, P0为后一个退款事务上的签名生成一个时间参数T1的VTS。时间参数设置为T0 = T1 + ∆,其中∆是一个保守选择的延迟参数。这个缺口∆可以防止出现竞争条件,并确保敌手P0不能等到最后一刻才取回硬币v(1),希望交易交换v(0)在此期间到期,有效地从P1盗取硬币。一旦两个VTS都被验证,双方通过签署表单的freeze transactions将硬币转移到共享地址:

  • Swap Lock Phase. 

在一个成功的设置阶段之后,各方在从联合密钥中消费的交易上生成支付“锁”。具体来说,它们定义了以下swap transactions

由于联合地址的秘密密钥在各方之间秘密共享,自然的想法是使用安全的两方计算(2PC)协议计算各自的签名。

然而,这种天真的尝试导致了一个不安全的方案:2PC协议不保证任何形式的有保证的输出交付( guaranteed output delivery),所以没有什么可以防止P0在接收到tx (0)swp上的有效签名后脱机。相反,双方首先通过2PC计算,即tx (1)swp上的签名的“锁定”版本,即,

其中H是一个哈希函数(建模为随机oracle3)。

注意,⊕操作模仿了用作为加密密钥,σ(1)swp作为加密消息。注意,在这一点上,双方都不知道有效签名σ(1)swp,因为它被h的输出掩盖了。然而,我们现在知道,如果P0以某种方式发布了tx (0)swp上的签名,那么P1将立即通过重新计算4并移除掩码来学习tx (1)swp上的有效签名。只有在这个“锁定”步骤成功完成后,双方进行2PC共同计算在tx (0)swp上的签名,现在可以安全地显示了。

  • Swap Complete Phase.

成功锁定阶段之后,每一方都可以将各自的事务签名对发布到区块链。如前所述,P0可以简单地平读签名,P1通过计算恢复他的签名:


这保证了交换的原子性: P0不能在P1不传输v(0)的情况下获得v(1),反之亦然。

  • Swap Timeout Phase.

如果在设置或锁定阶段的任何一点,一方离线,那么一方Pb可以使用时间锁定签名σ(b)swp从联合地址恢复她的硬币,她最终通过打开VTS学习这一点。如图1所示,当T1 < T0时,P1可以先收回硬币。因此,如果任何参与者长时间离线,双方都保证不会损失他们的硬币。

 

 

 

 

原文地址:http://www.cnblogs.com/xixiyaovo/p/16821363.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性