MOV市场可以分为超导兑换、磁力兑换和闪电兑换。由于Bycoin的简洁性、易用性,目前大多数用户都是通过Bycoin APP使用MOV的产品。虽然Bycoin优点良多,但并不适合有做市商需求的用户。针对这部分用户,MOV团队提供了RESTful API或MOV-MMDK在MOV市场参与做市。本文会通过简单一个的例子讲解如何通过MOV-MMDK使用磁力兑换。
磁力做市架构和原理
MOV Server只是提供订单与交易之间的相互转化,实际上所有的订单都是由用户签名后提交, 并最终由智能合约进行撮合的过程。 MOV Server提供了与中心化交易所接近一致的API接口,其交易时的API使用体验,基本与中心化交易所一致,但依然有一些不同,下面我们将会进行说明。
准备工作
在正式开始之前,我们先进行一些准备吧!包括名词解释和所需工具的准备:
磁力兑换
磁力兑换是MOV协议下的核心产品之一,是将用户的资产通过合约的形式在链上完成挂单,撮合和成交的一种资产交易方式。通俗的说,磁力兑换实现的就是去中心化交易的功能,并且在去中心的同时具备了媲美中心化交易所的速度。
MOV Server
连接MOV的中心化服务器,用户使用其提供RESTful API在MOV上进行交易。
MOV-MMDK
MOV Market Maker Development Kit,基于MOV Server的RESTful API开发的Python SDK
工具准备:
Python
MOV-MMDK是基于MOV Server的RESTful API开发的Python SDK,使用前请确保在你有 Python3 开发环境。本教程所有过程使用的版本为 Python 3.6.9
MOV-MMDK安装
MOV Market Maker Develo pment Kit,基于MOV Server的RESTful API开发的Python SDK,提供获取市场深度、发送订单、取消订单、查询订单、查询账户余额等功能。
git clone https://github.com/Bytom/mov-mmdk
cd mov-mmdk/
pip3 install -r requirements.txt
python3 setup.py install
温馨提示:推荐在 macOS 或 Linux 环境下使用,Windows环境下安装依赖的过程比较繁琐。
详细教程
详细的教程我们通过一个示例来演示如何通过MMDK使用磁力兑换。我们可以在直接在Python解释器中运行我们的代码。
1.在命令行界面输入以下命令即可进入Python解释器
python3
2.接下来需要在代码中添加依赖,创建Api对象就可以调用MOV-MMDK提供的API参与磁力兑换做市商
from mov_sdk.mov_api import MovApi
3.获取私钥并初始化,以下提供了四种不同的初始化方法。本教程在演示的时候选择第一种方式。
git clone https://github.com/Bytom/mov-mmdk
//通过助记词初始化
api = MovApi(secret_key=””)
cOnfig= api.init_from_mnemonic(“你的助记词”)
print(api.main_address)
print(api.vapor_address)
print(api.public_key)
//通过私钥初始化
api = MovApi(secret_key=”你的私钥”)
print(api.main_address)
print(api.vapor_address)
print(api.public_key)
//以下两种方式会创建新地址并且初始化
api = MovApi(“”)
print(api.secret_key)
print(api.main_address)
print(api.vapor_address)
print(api.public_key)
api = MovApi(“”)
print(api.get_new_secret_key())
print(api.main_address)
print(api.vapor_address)
根据自己需求创建好api对象就可以调用sdk提供的方法进行交易。对于Bycoin的用户,推荐使用第一种初始化的方式,可以在Bycoin-设置-钱包设置-备份助记词中获取自己账户的助记词,每个助记词用空格分隔。
4.通过sdk获得磁力交易对信息并输出:
print(api.get_exchange_info())
5.获取市场指定交易对的深度,这里我们获取BTC/USDT交易对的5档深度:
print(api.get_depth("BTC/USDT", 5))
6.发送磁力交易订单,例如我们现在发送一笔BTM/USDT的卖出订单,定价为1USDT,数量为1:
print(api.send_order(symbol="BTM/USDT", side="sell", price=1, volume=1))
7.查询所有未成交的磁力订单,可以使用这个方法来查询步骤6发送的订单:
print(api.query_open_orders("BTM/USDT"))
8.通过订单号查询磁力订单
print(api.query_list_orders([6940174]))
9.磁力撤单,通过订单号,将指定的订单撤销
print(api.cancel_order(6940174)
磁力撤单后,使用 api.query_open_orders("BTM/USDT")
查询所有未成交的磁力订单,这时候已经data为空,证明我们确实把该订单取消了。而通过订单号查询,在type中显示为”mov_cancel_order”,已取消订单。
10.查询账户所有资产的余额
print(api.get_balance())
以上就是在磁力兑换中常使用的方法,包括了订单的发送、查询、撤销和对账户资产的查阅。本教程中的过程全部通过MOV-MMDK进行磁力交易,返回数据的格式及说明详见MOV-MMDK API 除了这种方式以外,用户也可用直接通过磁力兑换的RESTful API进行交易。详见:磁力兑换API
温馨提示:若直接通过磁力兑换的RESTful API进行交易,在submit order的环节需要用户自己在本地对raw_transaction签名以得到signatures。该过程比较复杂,应该目前推荐使用MOV-MMDK的方式参与做市。
磁力兑换与中心化交易所的区别
交易即转账
用户所有的兑换交易,实际上都是链上的转账,可以到MOV数据中心 以及vapor 区块链 浏览器 通过链上地址查询到市商做市的所有交易。
拥有私钥,即可转走账户上的所有金额
MOV Server和MOV-MMDK不会存储用户的私钥,用户请妥善保管你的私钥。拥有私钥就拥有账户的最高权限,泄露私钥会导致账户上所有资金被人转走,丢失私钥,将失去对账户资金的控制权!
建议一个交易对对应一个钱包,不要在一个钱包并发多笔交易
构建交易订单实际上是发送一笔UTXO交易。流程是这样的:服务器返还需要签名的相关UTXO交易->用户端签名,提交用户订单到服务器。 这时候,如果需要签名的相关UTXO出现重复,则可能导致这笔交易失败。 因此我们建议您采用单线程的方式来执行交易订单请求,如果真的需要并发交易的时候,请尽量通过多个钱包单线程的方式来解决问题。
根据国家《 关于防范代币发行融资风险的公告 》,大家应警惕代币发行融资与交易的风险隐患。
本文来自 LIANYI 转载,不代表链一财经立场,转载请联系原作者。