# 闪电兑换实现

# 基本架构

闪电兑换的核心架构中,主要有两个不同的角色,互为对手盘,代表了不同类型的参与者。交易中除了两种角色外还有辅助做市商的一些外部设施。

闪电兑换的基本角色:

  • 交易者:正常交易者在闪电兑换中享受高效快速且链上可查的交易体验。用户无需额外挂单等待,一键成交,撮合速度极快。用户通过链上ID、区块高度、blockmeta链接提供了更加方便的链上查询机制。
  • 市商者:闪电兑换中的市场定价或者汇率锚定并不是传统的互相报价形式。为了缩短撮合时间以实现真正的“闪电”兑换,闪兑在设计上简化了对手盘的组成,闪电兑换中的报价统一由做市商者提供。系统会全自动选择最佳报价。

外部设施:

  • MOV Server 连接MOV的中心化服务器,用户使用其提供RESTful API在MOV上进行交易
  • MOV-MMDK MOV Market Maker Development Kit,基于MOV Server的RESTful API开发的Python SDK
  • Dealer 开源的连接MOV Server的程序,用户使用其提供的RESTful API向MOV Server发送请求

闪电兑换主要以下几个步骤:

  1. 系统择优给用户显示实时的兑换比例
  2. 普通用户发起闪电兑换交易请求
  3. MOV Server处理用户请求,在链下和市商者报单进行撮合
  4. 交易结果上链

由于目前MOV服务暂不开源,因此本文只对闪兑机制做简单的讲解,重点在撮合机制和Dealer上。

# 撮合机制

闪电兑换为了保证更好的用户体验,采用链下撮合,链上记录的方式。为了保证交易的迅速,撮合过程并不复杂。

报价预处理 由于闪电兑换的流动性由做市商者通过dealer提供,后端会预先将所有dealer发送来的报价按照最优价格整理并且存储订单信息。

订单解析 做市商者的订单是24小时执勤待命的,当用户通过Bycoin使用闪电兑换时,系统后端的模块会响应来自API的闪电兑换请求。后端解析交易请求,获得到申请兑换的Transaction、原资产、目标资产、资产ID、交易数量等信息并且记录下兑换发起的用户User。

订单匹配 用户的订单解析完成后,系统会与价格最优的做市商订单进行匹配。由于做市商者通过dealer发起的订单是预处理过的,订单的匹配速度会非常快。

手续费计算 值得一提的是,闪电兑换的手续费会在价格计算模块中一并计算得出。价格计算模块会先对撮合匹配的订单按照报价进行首轮计算,随后获取feeRate(手续费比例)并且再次计算。 因此,闪电兑换的手续费是计算在兑换的比例当中的。假设:用户使用1BTC兑换USDT,市商者的最优报价为1BTC : 10000USDT。在兑换完成时,用户显示的兑换比例就可能是1BTC : 9990USDT。手续费会体现在兑换比例上。

以上是对撮合过程的简单描述。

# Dealer

MOV Market Maker Development Kit,基于MOV Server的RESTful API开发的Python SDK,与传统交易的做市商不同,闪兑中做市商者需要在本地启动Dealer,通过本地Dealer的RESTful API发送订单以及撤销订单。在这个过程中,做市商需要不断的轮询Mov Server服务器来获取账户资产余额的变化,变化部分即是闪电兑换成交的资产。

Dealer的功能:

  • 下订单和取消订单
  • 查询订单状态和账户信息

使用须知:

  1. 所有请求均基于Http协议。
  2. 所有输入和输出数据均为JSON格式。
  3. 访问根URL:https://ex.movapi.com/flashswap
  4. 首先安装pybtm,pip3安装pybtm
  5. 交易API相关接口需要签名。签名数据放置在HTTP标头的授权标头中,授权是签名结果字符串。与市场API相关的接口不需要签名。
  6. 速率限制:暂无限制

闪兑API支持的功能

  • 获取市场信息
  • 获取市场深度
  • 发送订单
  • 取消订单
  • 获取帐户信息

细节请点击:闪兑产品API

上次更新: 12/17/2020, 11:27:48 AM