如何在磁力兌換中參與做市商?

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


溫馨提示:推薦在macoslinux環境下使用,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出現重複,則可能導致這筆交易失敗。 因此我們建議您採用單執行緒的方式來執行交易訂單請求,如果真的需要併發交易的時候,請儘量透過多個錢包單執行緒的方式來解決問題。


免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读