跨区块链原子互换(Atomic swap)

2019-02-23 13:47 栏目:经验之谈 来源: 查看()
原子交换:安全可靠的跨区块链交易,无需第三方

由于加密货币交易不时被黑客攻击,冻结甚至关闭,人们开始意识到将资金投入交易所的大资金是不安全的,而且还有一些分散的交易所。提议建议在确保用户资产安全的前提下进行交易。

然而,这些基于以太坊智能合约的分散交易所具有最大的局限性之一。与传统交易所相比,他们只能交易以太网本身和以太坊主链中的代币,后者可以处理比特币,以太坊。 Monero,Zcash ......和分散交易所之间的各种货币/硬币交易似乎相当多。

由于区块链创建的安全交易机制,行动范围仅限于同一链条。目前,交叉链交易只能交给第三方进行存储,然后在交换完成后返回给业主。所以我们想尝试找到一种方法来实现

只要双方达成一致,就可以安全地实现跨链资产交易
乍一看,它似乎很简单。这是一个单手交付的钱。但事实上,我们能够在日常生活中实现所谓的支付和提货的原因取决于许多事情,例如信任,例如法律,例如监视器和安检门。一旦场景变为在线世界,事情变得不那么简单。

例如,当孩子玩网络游戏时,有些人会使用卡号来改变与其他玩家的游戏货币,但总有一个问题没有解决方案:先给点或第一个硬币?如果我先把它交给另一方,我怎么知道是否会放弃它?

加密货币交易存在同样的问题。当您的对手在互联网上是一个未命名的人时,您如何相信对方可以在不被另一方欺骗的情况下完成交易?或者,你如何保证只要对方拿走我的钱,我一定会把它给我?

交易的原子性

所谓的原子性(Atomic)是指一个单元,其中一个交易应该被认为是最小的,并且不能被分割(尽管原子似乎是可能的)。换句话说,我会给你钱。你必须给我两件事。它必须同时发生,否则不会同时发生。

为了创建这样一个特征,我们将使用区块链的一些神奇的黑魔法,这是比特币的哈希函数和时间锁定;至于以太坊,这是一个聪明的合同。

交易过程大致是这样的。假设我已与一位匿名网友达成协议,将他的100 ETH与我持有的10 BTC交换。首先,我们需要了解彼此的付款和收款地址。为方便后续解释,我们假设它们是:

BTC_in 
BTC_out 
ETH_in 
ETH_out

同样,为了完成交易,我需要为交易创建一个秘密,特别是我只知道自己的字符串,并计算秘密的哈希值。

我在这里选择的秘诀是:早上好,我的朋友

跨区块链原子互换(Atomic swap)

接下来,我发送了一笔交易,将我的10 BTC从BTC_out转移到一个特殊的临时存储地点(P2SH),并规定可以通过两种方式转移资金:一种是如果出现,可以进行哈希处理。当它成为46f34 ... 8f4的秘密时,它会把钱捐给BTC_in;另一个是,如果这笔钱没有被带走两个小时,那么BTC_out可以拿回钱。

另一方必须做类似的事情,将100 ETH从ETH_out转移到临时智能合约,规定只要ETH_in可以显示46f34 ... 8f4的正确秘密,ETH_in可以拿钱,否则ETH_out可能需要一小时后。钱被收回。

完成这些设置后,我可以在合同中说“早安我的朋友”,然后拿另一方的100 ETH,并且由于区块链信息是公开的,另一方可以看到我以前收钱。当然,秘密将带走我的10 BTC,交易将顺利完成。

这里有两个值得注意的小细节。第一个是收钱规则。这不是任何知道这个秘密的人。如果指定的对手方说出这个秘密,那就可以了。这是因为区块链上的信息对每个人都是可见的,所以当我播放时,每个人都会看到我的好朋友,甚至可能在我的交易确认之前先抢先使用相同的秘密。偷钱,所以你不能只是偷偷地认识到这个秘密。

第二个是两个人的退出时间不同,因为即使双方使用同一组哈希,只有我在开始时单方面知道秘密,所以当前设置完成时,主动执行的时间何时我所持有的交易。如果双方的时间限制相同,我可以在到期前不久获得ETH命令,并在另一方做出反应之前取走原始BTC。所以通常对方会将时间限制设定为比有秘密的人设定的时间限制早一点,以确保即使你被压垮了,仍然有足够的时间来获得你应得的钱。

因此,换手的整个过程是我选择了加密密钥并构造了一个可以通过此密钥解锁的锁。基于神奇的数学魔法,锁无法推回钥匙的形状。因此,我安全地锁定了我的钱并给了另一个人一个相同的锁。另一个人也用这把锁安全地锁了他的钱,因为他知道只要我拿出钥匙拿走他的钱,我就可以用同样的钥匙拿走我的钱。

使用相同哈希锁的不同区块链上的两个事务产生了一个关联

因此,保证了交叉链交易的原子性。只有双方才能互相给钱。否则,双方都会收回原来的钱。 (理论上)永远不会出现一方接受它的情况。更重要的是,在整个过程中没有第三方参与。虽然有必要暂时锁定资金,但它与交易所上的大型金库有根本的不同。利用区块链本身的锁定机制,对货币的控制仍然掌握在所有者手中,不会在没有任何问题的情况下被盗。

拒绝支付攻击

原子交换保证两个相关事务将同时发生或不同时发生,但不能保证事务将发生,因此仍有一些问题需要解决。这类似于第三方托管的场外交易,因为交易从设置到完成都不及时,因此我们必须为彼此保留缓冲时间,以便完成支付过程,但可以利用这个时间差。 。

因为集合交易不一定执行,对于那些关心的人来说,这是一个很好的套利机会。我可以找人提议交易。在对手锁定资产后,他并不急于按下按钮同意付款。相反,他渴望跟随市场。一旦发现市场上的汇率波动,交易立即完成,同时以市场价格交易,取中间价差。如果时间尚未出现套利机会,拒绝支付,则找人启动交易,重复攻击。

以BTC: ETH=1: 10,锁定时间2小时/1小时为例,攻击者有1小时的机会故意拖延。如果双方都被锁定,那么在此期间汇率变为1:,原始BTC方面可以获得10%的利润且风险为零。

我们假设交易的含义意味着它对当前的汇率感到满意,也就是说,受到攻击的人心胸宽广,不关心中间的汇率差异,这仍然会造成一些损失。首先是机会成本。虽然该党给了缓冲期,但他没想到会被锁定到最后一刻。如果在此期间有更好的交易机会,这笔钱将无法参与。潜在的利润是亏损。

然后是使用区块链的成本。虽然在交易前设置阶段之后没有真正的转账,对于处理它的矿工来说,这仍然是交易,并且还收取一定的手续费,所以如果对方从根本上说我不是真诚的与你达成协议。事实上,这笔费用是一记耳光。

面对这些潜在的道德危机,完全分散的原子交换技术是无法克服的。在每个人都有自己的危险的情况下,很少有人愿意与陌生人一起使用这种交易方式。虽然有一些解决方法,例如缩短锁定时间,但却伴随着不便和盗窃的风险。至于其他解决方案,例如建立外部评估系统,或使用第二层架构(如支付渠道),将会有一定程度的集中化。这也可能是易用性,安全性和分散化的三难问题。

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发