Decentralized Exchange (DEX)

Related Work: 

  • Tesseract: Real-Time Cryptocurrency Exchange Using Trusted Hardware
  • https://collaborate.thebkp.com/project/TL/document/9/version/10/

Context: 在区块链中,人们往往需要进行不同链的token交易,例如Bitcoin和Ether,或者Bitcoin和美元,比较trivial的想法是一个中心化的交易所。例如Alice想要用Bitcoin换Ether,就先发布transaction将Bitcoin发到这个交易所的地址,然后这个交易所再发布一个transaction将对应的Ether发到Alice的地址,复杂一点这个交易所可以创建一个order book,用户可以将钱deposit在这个交易所,然后互相之间匹配买卖,有些机构为了减少on-chain的transaction,还会让user和中心化服务器建立off-chain payment channel而中心化服务器则负责传递。一个显而易见的问题是这个中心化的交易所可以把deposit的钱卷走。Decentralized Exchange顾名思义就是不借助中心化平台P2P的进行换钱。但是DEX也存在着一些难点和局限性:

  1. 必须原子化或者有refund的机制,例如Alice把钱给了Bob,Bob没有给钱就终止交易则有可能Alice没法把钱取回来
  2. 难以实时,由于confirmation time的存在,在进行换钱的途中,链上的transaction需要等待很长时间来confirm,而市场的价格却会实时的变化,导致用户没法以最优价格进行交易

Atomic intra-chain or cross-chain swaps (ACCSs): 假如存在一种机制使得买家和卖家可以互相匹配,那么是存在一种protocol使得双方可以在两条链上进行直接的原子交易。protocol的思想如下:

  1. Alice sample一个secret:Y=Hash(X),并创建一个transaction,用户可以从这个transaction拿钱当且仅当
    1. Bob reveal并且sign X
    2. 这个transaction过了c0+c1个block Bob也没来拿钱,则钱全给回Alice
  2. Bob在c0个block后,发布另一个transaction,用户可以从这个transaction拿钱当且仅当
    1. Alice reveal并且sign X
    2. 这个transaction过了c2+c3个block Alice也没来拿钱,则钱全给回Bob
  3. 在c2个block之后,Alice可以通过reveal X来取钱
  4. Bob在看到Alice发布的X后用之取钱

这个protocol成功的关键在于

  • 每个tx包含refund机制
  • Alice取钱之后必定会使得Bob也可以取钱(c2和c3的设置应该长到足以让Bob取钱)

这个protocol的问题在于

  • 无法实时交易
  • 需要额外的order匹配机制

ACCSs protocol没有考虑order的匹配机制,而实际上,order匹配机制其实也十分容易攻击。

Frontrunning Attack:attacker在知道一些市场信息后,通过修改order book的顺序进行中间商赚差价。

Example:Alice希望870买入,Bob希望850卖出,假设attacker控制了order book,在Alice的order出现在order book之前:

  1. attacker插入851买入的order(假设此为Alice入场前的最优价格),买入Bob的coin
  2. attacker插入870卖出的order以及Alice870买入的order
  3. attacker与Alice匹配,将赚取870-851的差价

可以看出,Bob原本可以赚得20,由于中间商的介入,Bob只赚了1,而剩下的19被attacker赚取。而这个attack在中心化的exchange或者是order book的机制下十分容易实现,因为服务器被一个中心化的provider完全控制,换句话说,这个中心化的服务提供商甚至没有incentive不做这种attack,因为用户根本不知道order的变化是否是经过操纵的,服务提供商可以在不留下证据的情况下赚取差价。

而抵抗这种attack的方式可以由几个角度入手:

  • 使用trusted hardware来保证服务提供商不会作弊,Tesseract走得就是这条路线。
  • 用户在给出order前,不知道其他人的出价,这条路线可以由mpc来实现order的匹配算法。

Tesseract:一个基于SGX的跨链交易平台,提供

  • 实时交易
  • 最优价格的order匹配
  • 防止资金盗窃以及frontrunning攻击

Threat Model:可以控制网络和存储fund的host,但是假设sgx可以抵抗side-channel attack

Challenges&Solution:

  • SGX必须能够verify tx. SGX获得最新的root hash,并通过merkle path来verify
  • Eclipse Attacks: 由于attacker能控制网络,attacker可以欺骗SGX说在一条支链上,以换取真链上的货币。考虑到attacker只能拥有小于50%的算力,因此fake的block interval会比真的block要慢,因此SGX可以要求额外的confirmation time如果相邻的block产生的过慢。
  • Roll back attack:attacker可以roll back SGX的状态,可以使用ROTE的方法解决
  • Frontrunning attack:由于网络通信的加密,以及SGX的安全保证,attacker无法知道具体的出价信息。

有趣的研究方向:

  • MPC实现防止Frontrunning attack,但是谁来负责多方安全计算的运行是个问题,似乎没有很好地incentive和motivation
  • 监管与legacy问题
  • real-time交易

你可能感兴趣的:(读paper,#,区块链,#,SGX)