简洁原子互换协议(SAS):通过两笔交易来完成跨链交互

原子互换(Atomic Swaps)是一种能在不同类型数字资产之间实现去信任的点对点交易技术,它也是跨链技术的其中一种,而此前常规的原子互换,通常需要4笔交易才能完成。

而在近期,比特币开发者Ruben Somsen描述了一种仅使用2笔交易(或3笔交易)而进行的去信任币交换过程,并将其称为简洁原子互换(SAS)协议。

这种“减半”协议的优点,在于它要比现有原子互换协议需要更小的区块空间,其节省了交易费用,并且它不依赖于任何新的安全性假设或比特币共识变更。

此外,如果比特币应用了taproot,则可以更加私密且有效地进行原子互换交易。

对于SAS协议,密码学和安全顾问Lloyd Fournier在进行评审后表示,该方案是理论上的突破,对其而言,三笔交易的想法是最优雅的表达,而两笔交易的协议则是一个更优化的版本,它在某些情况下可能会是有意义的。

简洁原子互换协议(SAS):通过两笔交易来完成跨链交互

 (图:简洁原子互换设计)

以下是SAS方案的具体描述:

今天,你可以在使用单签名者ECDSA 适配器签名(Adaptor Signatures)的情况下使用SAS方案,或者是使用Schnorr签名+MuSig。

(注:除了文章,还有一个关于SAS方案的视频解释

优势:

  1. 成功完成只需要两笔链上交易,而之前的协议则需要四笔;
  2. 无脚本,并且其中一条链不需要支持时间锁(timelocks);
  3. 可用于有效的隐私交换,例如Payswap

缺点:

  1. 能否访问资金取决于记住秘密(在备份方面会带来复杂性);
  2. 2 tx 协议的情况下,timelock支持链有在线/瞭望塔要求(3 tx 协议则不需要);

 

协议步骤

 

0.)除了方括号中的签名,Alice&Bob对以下交易进行预签名:

  1. success_tx(给Bob钱):[sigSuccessAlice] + [sigSuccessBob]
  2. revoke_tx (timelock): sigRevokeAlice + sigRevokeBob,必须由以下使用:

    refund_tx(相对timelock,退款给Alice):[sigfundalice]+{sigfundbob}

    timeout_tx(更长的相对timelock,给Bob钱):sigTimeoutAlice + [sigTimeoutBob]

 

{sigRefundBob}是一个适配器签名(adaptor signature),其需要 secretAlice来完成。

1.) Alice接着使用keyAlice和keyBob作为公钥与Bob锁定1 BTC

如果协议在步骤1之后失败中止:

  1. Alice发布revoke_tx,然后发布refund_txsigRefundBob,以拿回她的BTC;
  2. 如果Alice未能及时发布refund_tx,则Bob将在超时后认领这笔BTC;

2.)Bob用secretAlice和secretBob作为公钥,与Alice一同锁定竞争币

如果协议在步骤2之后失败中止:

一旦Alice发布sigRefundBob之后,Bob知道了secretAlice,并重新获得了对竞争币的控制权。

3.)协议完成

  1. Alice将适配器签名 {sigSuccessAlice} 交给Bob,这需要secretBob来完成;
  2. Bob现在可通过success_tx认领BTC,揭示secretBob,从而让Alice控制竞争币(3tx协议的情况);
  3. 另一种情况,Bob只是将secretBob交给了Alice;
  4. 同样,Alice将keyAlice交给Bob,以放弃她对refund_tx的认领权;
  5. Bob继续监视这条链,因为一旦Alice发布了revoke_tx,他将不得不做出响应;

更优雅的协议失败:

如果协议在步骤1之后中止,Alice将被迫执行3笔交易,而Bob则没有执行任何交易。我们可以通过引入带有timelock的第二个refund_tx,将其减少到两笔,该timelock可以在revoke_tx之前发布,并直接从融资交易中支出。发布此交易还将通过适配器签名向Bob显示secretAlice。在3tx协议中,这一输出可以直接发送给Alice。在具有在线/暸望塔要求的2 tx协议中,此输出需要一个脚本:Alice + Bob立即可用,或在相对timelock之后由Alice使用。重要的是要注意,此交易一定不能在步骤3中发布。一旦Bob可以完成success_tx,则在显示secretAlice之前,需要revoke_tx来使success_tx无效。

常见问题解答(FAQ):

1、如果Alice不小心让Bob发布timeout_tx,为什么不允许她继续认领竞争币呢

答:Alice 可以同时发送revoke_tx,泄露两个秘密,并可能造成损失。这可以通过添加另一笔交易来完成,但这样做效率不高,也不会激励Alice。

2、是否可以在只支持绝对时间锁(absolute timelocks)的链上实现此协议

答:是的,但是Bob必须在timelock到期之前花掉他交换的币(或者使用3 tx协议)。请注意,revoke_tx必须在timeout_tx生效之前进行确认,如果费用突然上涨,这可能会成为问题。refund_tx也不允许CPFP超时发送,因为它们必须独立确认才能首先使success_tx失效。

3、协议完成后,Alicee没法只发布revoke_tx吗

答:是的,她首先必须移动竞争币(以使secretAlice无效),然后可尝试通过发布revoke_tx来认领BTC,迫使Bob在refund_tx生效之前在链上做出反应。eltoo费用支付法(需要sighash_anyprevout)或第二个CPFP可用输出可能是一种改进选择(并且还减轻了费用增加的问题),但是请注意,如果协议未能成功完成,这也会增加所需的tx数据量。

4、这可以和哈希锁(hash lock)一起使用吗

答:是的,通过sigalise+preimageBob或sigBob+preimageAlice 就可以让竞争币可使用,并确保BTC端的合约显示了任何一个原像。请注意,这不是无脚本的,因此会增加交易的大小。

开放性问题

也许仅需执行一次链上交易就可以进行闪电网络的原子互换交易,这将需要某种二级HTLC,允许发送者在一定时间后通过泄露秘密来取消闪电网络支付。

作者:Ruben Somsen

感谢Lloyd Fournier的反馈和审查。

相关资料:

1、Tier Nolan提出的初版原子互换方案 :https://bitcointalk.org/index.php?topic=193281.msg2224949#msg2224949

2、门罗的原子互换:https://github.com/h4sh3d/xmr-btc-atomic-swap/blob/master/README.md

3、Private Key Turnover:https://github.com/AdamISZ/CoinSwapCS/issues/53

本文链接:https://www.8btc.com/article/600812
转载请注明文章出处

转载声明:本文 由CoinON抓取收录,观点仅代表作者本人,不代表CoinON资讯立场,CoinON不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。若以此作为投资依据,请自行承担全部责任。

声明:图文来源于网络,如有侵权请联系删除

风险提示:投资有风险,入市需谨慎。本资讯不作为投资理财建议。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2020年5月25日 下午9:31
下一篇 2020年5月26日 上午12:31

相关推荐

简洁原子互换协议(SAS):通过两笔交易来完成跨链交互

星期一 2020-05-25 22:53:04

原子互换(Atomic Swaps)是一种能在不同类型数字资产之间实现去信任的点对点交易技术,它也是跨链技术的其中一种,而此前常规的原子互换,通常需要4笔交易才能完成。

而在近期,比特币开发者Ruben Somsen描述了一种仅使用2笔交易(或3笔交易)而进行的去信任币交换过程,并将其称为简洁原子互换(SAS)协议。

这种“减半”协议的优点,在于它要比现有原子互换协议需要更小的区块空间,其节省了交易费用,并且它不依赖于任何新的安全性假设或比特币共识变更。

此外,如果比特币应用了taproot,则可以更加私密且有效地进行原子互换交易。

对于SAS协议,密码学和安全顾问Lloyd Fournier在进行评审后表示,该方案是理论上的突破,对其而言,三笔交易的想法是最优雅的表达,而两笔交易的协议则是一个更优化的版本,它在某些情况下可能会是有意义的。

简洁原子互换协议(SAS):通过两笔交易来完成跨链交互

 (图:简洁原子互换设计)

以下是SAS方案的具体描述:

今天,你可以在使用单签名者ECDSA 适配器签名(Adaptor Signatures)的情况下使用SAS方案,或者是使用Schnorr签名+MuSig。

(注:除了文章,还有一个关于SAS方案的视频解释

优势:

  1. 成功完成只需要两笔链上交易,而之前的协议则需要四笔;
  2. 无脚本,并且其中一条链不需要支持时间锁(timelocks);
  3. 可用于有效的隐私交换,例如Payswap

缺点:

  1. 能否访问资金取决于记住秘密(在备份方面会带来复杂性);
  2. 2 tx 协议的情况下,timelock支持链有在线/瞭望塔要求(3 tx 协议则不需要);

 

协议步骤

 

0.)除了方括号中的签名,Alice&Bob对以下交易进行预签名:

  1. success_tx(给Bob钱):[sigSuccessAlice] + [sigSuccessBob]
  2. revoke_tx (timelock): sigRevokeAlice + sigRevokeBob,必须由以下使用:

    refund_tx(相对timelock,退款给Alice):[sigfundalice]+{sigfundbob}

    timeout_tx(更长的相对timelock,给Bob钱):sigTimeoutAlice + [sigTimeoutBob]

 

{sigRefundBob}是一个适配器签名(adaptor signature),其需要 secretAlice来完成。

1.) Alice接着使用keyAlice和keyBob作为公钥与Bob锁定1 BTC

如果协议在步骤1之后失败中止:

  1. Alice发布revoke_tx,然后发布refund_txsigRefundBob,以拿回她的BTC;
  2. 如果Alice未能及时发布refund_tx,则Bob将在超时后认领这笔BTC;

2.)Bob用secretAlice和secretBob作为公钥,与Alice一同锁定竞争币

如果协议在步骤2之后失败中止:

一旦Alice发布sigRefundBob之后,Bob知道了secretAlice,并重新获得了对竞争币的控制权。

3.)协议完成

  1. Alice将适配器签名 {sigSuccessAlice} 交给Bob,这需要secretBob来完成;
  2. Bob现在可通过success_tx认领BTC,揭示secretBob,从而让Alice控制竞争币(3tx协议的情况);
  3. 另一种情况,Bob只是将secretBob交给了Alice;
  4. 同样,Alice将keyAlice交给Bob,以放弃她对refund_tx的认领权;
  5. Bob继续监视这条链,因为一旦Alice发布了revoke_tx,他将不得不做出响应;

更优雅的协议失败:

如果协议在步骤1之后中止,Alice将被迫执行3笔交易,而Bob则没有执行任何交易。我们可以通过引入带有timelock的第二个refund_tx,将其减少到两笔,该timelock可以在revoke_tx之前发布,并直接从融资交易中支出。发布此交易还将通过适配器签名向Bob显示secretAlice。在3tx协议中,这一输出可以直接发送给Alice。在具有在线/暸望塔要求的2 tx协议中,此输出需要一个脚本:Alice + Bob立即可用,或在相对timelock之后由Alice使用。重要的是要注意,此交易一定不能在步骤3中发布。一旦Bob可以完成success_tx,则在显示secretAlice之前,需要revoke_tx来使success_tx无效。

常见问题解答(FAQ):

1、如果Alice不小心让Bob发布timeout_tx,为什么不允许她继续认领竞争币呢

答:Alice 可以同时发送revoke_tx,泄露两个秘密,并可能造成损失。这可以通过添加另一笔交易来完成,但这样做效率不高,也不会激励Alice。

2、是否可以在只支持绝对时间锁(absolute timelocks)的链上实现此协议

答:是的,但是Bob必须在timelock到期之前花掉他交换的币(或者使用3 tx协议)。请注意,revoke_tx必须在timeout_tx生效之前进行确认,如果费用突然上涨,这可能会成为问题。refund_tx也不允许CPFP超时发送,因为它们必须独立确认才能首先使success_tx失效。

3、协议完成后,Alicee没法只发布revoke_tx吗

答:是的,她首先必须移动竞争币(以使secretAlice无效),然后可尝试通过发布revoke_tx来认领BTC,迫使Bob在refund_tx生效之前在链上做出反应。eltoo费用支付法(需要sighash_anyprevout)或第二个CPFP可用输出可能是一种改进选择(并且还减轻了费用增加的问题),但是请注意,如果协议未能成功完成,这也会增加所需的tx数据量。

4、这可以和哈希锁(hash lock)一起使用吗

答:是的,通过sigalise+preimageBob或sigBob+preimageAlice 就可以让竞争币可使用,并确保BTC端的合约显示了任何一个原像。请注意,这不是无脚本的,因此会增加交易的大小。

开放性问题

也许仅需执行一次链上交易就可以进行闪电网络的原子互换交易,这将需要某种二级HTLC,允许发送者在一定时间后通过泄露秘密来取消闪电网络支付。

作者:Ruben Somsen

感谢Lloyd Fournier的反馈和审查。

相关资料:

1、Tier Nolan提出的初版原子互换方案 :https://bitcointalk.org/index.php?topic=193281.msg2224949#msg2224949

2、门罗的原子互换:https://github.com/h4sh3d/xmr-btc-atomic-swap/blob/master/README.md

3、Private Key Turnover:https://github.com/AdamISZ/CoinSwapCS/issues/53

本文链接:https://www.8btc.com/article/600812
转载请注明文章出处