启用跨链交易:一个去中心化的加密货币交换协议

原文标题

Enabling Cross-chain Transactions: A Decentralized Cryptocurrency Exchange Protocol
发表于:IEEE Transactions on Information Forensics and Security, 2021(SCI 计算机科学 1区)

摘要部分

背景与现状

不同类型的加密货币不可能直接交易。
传统方式是由一个集中的第三方平台(加密货币交易所)来进行交易。容易受到单点故障与攻击。

本文提出的方案或改进

在本文中, 我们提出了一个分布式的加密货币交易方案来解决集中式交易所的问题 ,它可以实现不同类型的加密货币之间的交易。我们的方案是用以太坊区块链上的智能合约实现的,并部署在以太坊测试网络上。

结果

不仅实现了单个用户之间的交易,而且还允许多个用户之间的交易。
实验结果证明,我们方案的成本是可以接受的。

简介

背景

交代加密货币发展状况,各种货币层出不穷。
基于可信第三方的集中式交易所带来了资金管理方面的便利,也可以充当中介,帮助用户在不同类型的加密货 币之间进行交易。
介绍前人基于第三方的集中式交易所的改进,降低交易所的安全风险。

本文提出的方案或改进

解决这个问题的最好办法是有一个分布式的加密货币交换方案。
因为以太坊平台是最大和最流行的区块链平台,支持部署智能合约而选择了以太坊平台。
提出了基于Ethereum的智能合约来实现一个去中心化的跨加密货币交换方案

主要贡献

  • 我们提出了一个基于智能合约的去中心化跨加密货币交换方案,它允许用户通过不同的账户在不同种类的加密货币之间进行交易。用户可以在短时间内发起多次转账,而提议的合约可以收集来自不同用户的多次转账,并在同一时间完成这些交易。
  • 我们采取了一种有效的方法,通过选择多个验证者并在不信任的用户群中形成一个委员会,利用以太坊智能合约验证不同类型的货币交易。分析报告表明该委员会可以为每笔交易获得正确的验证结果。
  • 我们在以太坊测试网络上实现并部署了我们的跨加密货币交易方案,并在本地机器上评估了合约的每一部分的运行成本。实验结果显示,我们方案 的本地运行成本只与参与者的数量有关,但与每个用户的交易数量无关。

相关的工作

介绍前人对去中心化加密货币交易方案的工作

系统和安全模式

系统模型

系统模型主要包含以下组成部分:付款人、受款人、中介、区块链

  • 付款人。付款人是一个想要向另一个用户转移加密货币的用户
  • 受款人。受款人是一个需要转入的用户,但他/她需要的加密货币类型在付款人那边是不可用的。
  • 中介人。一些用户作为付款人和受款人之间的中间人,实现不同类型的加密货币之间的转移。中介人需要通过智能合约连接付款人和受款人。中介人需要加入验证委员会,参与交易验证过程。
  • 区块链。我们方案的每个执行都涉及三个区块链。两个区块链是支付方和收款方分别使用的加密货币类型。第三个区块链是以太坊区块链,我们的智能合约是在其上设计和部署的。

中介人有能力验证不同种类加密货币的交易

安全模式

考虑到系统中的恶意用户可能会设立大量账户,充当付款人、受款人或中介。可能的恶意行为如下所示

  • 恶意付款人或中介机构可能向合同发送欺骗性信息,而不进行转账或进行双重消费。
  • 恶意受款人或中介机构在收到转账后可以欺骗合同,赚取额外的补偿费用。
  • 参与验证委员会的恶意节点可能会发布错误的信息来破坏共识过程。

恶意节点的哈希值总和应该小于任何时候总哈希值的1/4。否则,会滋生自私的挖矿攻击。

跨加密货币交易计划

概述

我们需要两个中间人C1 和C2 ,他们可以是网络中的任何人。他们需要分别支持通过比特币和莱特币进行交易。
首先,A向C1转移x个莱特币。收到转账后,C1向C2转移等价的以太币,然后C2向B转移y个比特币。
中介可以通过这个过程,获得交易费用。
选择一组用户作为验证委员会,提供验证结果。合约将整合委员会的判断结果并得出最终结论。
多用户交易场景下,我们的合同可以将需要转移同种加密货币的付款人,与需要不同种加密货币的受款人相结合。

单用户交易方案

单用户交易方案的具体过程如下:(参考论文中的图1)
一切顺利的情况下:

  1. 交易双方选择合适的中介(C1和C2)并将交易的相关信息(如加密货币类型、交易金额和账户地址)发布到智能合约上。
  2. 中介C1和C2向智能合约发送一定量的押金。
  3. 付款方A向C1转x个莱特币
  4. C2向收款方B转y个比特币。
  5. 退回C2的以太坊押金。
  6. C1向C2转x个莱特币,
    有两种可能的异常情况:
    C2向收款方B转y个比特币时失败,将中介C2的押金转给B。
    付款方A向C1转x个莱特币时失败,中介C1和C2的押金都退回。

贸易验证

中间人C1 和A之间的转账以及中间人C2 和B之间的转账需要被确认。而验证结 果需要发送到合同,以便进行下一步的工作。
我们认为系统中有大量的中间人,但每笔交易的进展只需要两个中间人。因此,其余的中介节点可以在我们的方案中作为验证者来验证交易。
为了防止恶意用户注册多个中介账户来攻击验证过程,我们使用工作证明( PoW)算法来确定参加验证委员会的中介机构的集合。
在加入验证委员会之前,每一个成功解出PoW之谜的中间人都需要支付一些以太坊作为押金。如果一个中介节点始终是诚实的,它不仅可以拿回押金,还可以从不诚实节点的惩罚中获得奖励,以及从交易担保中获得交易费。
每次交易后,验证委员会的每个节点都需要验证交易,并将自己的验证结果发送给智能合约。

多用户交易

这个方案是针对有多个用户在短时间内进行交易的情况而设计的。
智能合约可以支持多个用户参与加密货币的转移。
在该方案中,每个用户可以单独选择自己的交易伙伴。
合约将组合这些交易信息,并将同一用户转移的加密货币数量聚合起来,从而提高交易效率。
在该方案中,智能合约首先收集来自付款方A1、A2、A3……An和收款方B1、B2、B3……Bn的信息,计算交易金额的总和。
然后,中间人C1和C2收到此信息后,需要选择合适的交易伙伴,并提交等量的以太币作为保证金。
随后,所有付款方都需要向C1支付足够的coin1。
验证委员会的成员需要通过上一节描述的方法对这些转移进行验证。转移信息还将记录在合约中。
付款方向中间人C1转移后,合约将计算成功交易的数量,修改C1收到的金额,然后向C2发送消息。
最后,中间人C2根据收到的消息向每个收款方B1、B2、B3……Bn转移coin2。
如果向收款方Bi转移失败,则合约将向中间人C2发送相同数量的保证金。该方案可有效地实现多个用户之间的交易。

合同执行

包括中介合同和交易合同的编写。
中介合同用于控制中介的行为,交易合同是通过中介参与跨加密货币交易的付款方和收款方的完成。

安全分析

审定委员会的安全性

假设选举委员会的节点总数为w,则假设恶意节点的总哈希率不超过总哈希率的1/4。
在这种情况下,验证委员会的正确性得到了保障。
从表3可以看出,当我们取10个验证委员会成员时,恶意节点的数量超过总数量的1/2的概率为0.99。
这意味着,如果智能合约收到超过一半的验证委员会成员的一致判断,那么有0.99的概率是正确的结果。
因此,该方案的验证委员会的安全性得到了充分的考虑和保障。

性能分析

以太坊测试网络(测试环境而非生产环境)上实施并部署了我们提出的方案,我们方案的本地运行成本只受参与者数量的影响,与每个用户的交易数量无关。(与参与者数量相关,与交易金额无关)

结论

在本文中,我们提出了一个基于智能合约的多个用户之间的去中心化跨加密货币 交换方案。在我们的方案中,我们使用乙醚作为中转,将不同种类的两种加密货 币之间的交易联系起来。我们还实现了合约,并评估了它在我们本地机器上的 执行开销。结果显示,我们方案的时间成本只与参与交易的用户总数有关,而 用户的交易数量对我们合约的运行时间没有明显影响。在未来,我们将从实验 部分的两个方面来改进我们的方案。首先,我们将尝试在更多用户参与的情况 下完成该方案的实施。其次,我们将在以太坊主网上部署我们的方案,以测试 我们方案在实际网络下的成本。

个人想法

用DEEPL翻译的论文,总是会有些瑕疵。随着ChatGPT之类的工具发展,我们可以向ChatGPT提出改进意见,来辅助翻译。
比如DEEPL会将ether翻译成“乙醚”,在人工检查发现后,可以告诉ChatGPT该如何翻译,来改进翻译质量。

提问与回答

押金交给谁,是否会需要交双倍押金,能避免交付押金吗?

押金交给智能合约,只有两个中介被要求先交付押金。
C2确实需要交双倍的押金,准确说是一部分以太坊,和与以太坊等价值的加密货币。
押金确保中介有足够多的以太坊参与客户的交易。

跟传统的交易所中介相比,本文同样需要中介,这不也需要依赖三方吗?

根据论文中的说法:
集中式交易所为用户提供了管理资金和进行交易的便利。
但是作为一个中央机构,总会有一个单点故障。
采用分布式加密货币交换方案,这也符合加密货币去中心化的理念。
我个人认为本文其实也需要依赖以太坊、参与计划的用户作为中间商进行交易,并没有很好的去除中心化,但相比与传统的交易所而言,权力更加分散,整个体系更难被某一实体操控。

为什么要使用两个中介,一个中介或者不需要中介不行吗?

文章中提到想找到一个支持两种加密货币的中介机构,并不容易。就算是找到这样的中介,也可以把它当作方案中提到的两个中介。

为什么选用了以太坊,作为中间货币,而不直接进行交换?

因为以太坊是最大和最流行的支持部署智能合约的区块链平台。

有什么手段来避免网络故障带来的损失,交易不一致性?

文中提到会在智能合约中设置一个时间限制,如果在规定时间内没有完成交易,就会自动撤销交易。

如何保证参与计划的节点不作恶?

交易过程中,除了交易双方和两位中介外,还引入了验证委员会。验证委员会成员是通过选举产生的,并且假设恶意节点的哈希值总和应该小于任何时候总哈希值的1/4。(与比特币类似,解决不了50%以上的算力攻击)

为什么在验证委员会中要加入押金这一奖惩机制?

如果我们在这里只用工作证明来做判断,那么就没有动力让普通用户加入验证委员会并正确报告验证结果。
验证委员会中的每个用户都需要提供 押金,作为对报告正确验证结果的诚实用户的激励和对报 告错误验证结果的恶意用户的惩罚。

启发

  1. 相关工作中有前人所作的 其他旨在解决集中式交易所单点故障问题 的解决方案,可供后续阅读与学习。
  2. 本人对于一些有关以太坊知识的欠缺,多篇论文中对于性能分析的部分,都提到了gas的概念。
  3. 本文巧妙结合了智能合约——哈希时间锁等概念,与借用类似于比特币的PoW,和其他区块链所用的PoS的交易委员会,提出并实现一种中转加密货币的方案。(巧用前人经验)

文章中有待改进的地方

  1. 没有详细的智能合约相关的代码提供,带来了代码复现困难。本文中作者说明代码是跑在以太坊测试网络上的,并且对代码gas的消耗进行了一定的测试。
  2. 基于的是公有链——以太坊,而非联盟链——fabric,BCOS。与我们所研究的联盟链有一定的出入,公有链对用户的信任和协作提出了更高的要求,往往要比联盟链要求更高。
  3. 对于收款人B而言,有可能最终拿不到他想要的货币。需要再次进行货币转换。
  4. 文章中多次用到的押金,有没有办法能够避免呢?