如何在閃電兌換中參與做市商?

閃電兌換是透過一方公開報價,另一方快速成交的交易模式,鏈下撮合,鏈上結算。使用者在閃電兌換上沒有傳統交易模式的對手盤,所有的交易深度由做市商者提供。本篇文章會講述閃兌的架構,並透過一個例子展示如何在閃電兌換中掛單交易。

閃兌做市架構

閃兌做市原理

市商在本地啟動dealer,透過本地dealer的restful api傳送訂單以及撤銷訂單。在這個過程中,做市商需要不斷的輪詢mov server伺服器來獲取賬戶資產餘額的變化,變化部分即是閃電兌換成交的資產。

閃兌做市教程

準備dealer配置檔案

單籤地址做市配置如下:

{
"port": 1024,
"bycoin_url": "https://ex.movapi.com",
"flash_swap_url": "47.101.190.112:50052",
"mnemonic": "你的助記詞",
"derive_rule": {
"account_idx": 1,
"address_idx": 1
},
"network": "mainnet",
"logs": {
"rotate_time": "24h",
"max_age": "72h"
}
}

多籤地址做市配置如下:

{
"port": 1024,
"bycoin_url": "https://ex.movapi.com",
"flash_swap_url": "47.101.190.112:50052",
"mnemonic": "你的助記詞",
"derive_rule": {
"account_idx": 1,
"address_idx": 1
},
"quant_mode": {
"quant_delegation_url": "https://ex.movapi.com/delegation",
"funder_pubkey": 三方管理的合作伙伴公鑰",
"attester_pubkey": "三方管理生成的公鑰"
},
"network": "mainnet",
"logs": {
"rotate_time": "24h",
"max_age": "72h"
}
}

port是本地使用的埠號,預設使用1024,可以自行設定 derive_rule 是私鑰的派生路徑,原則上不用修改 flash_swap_url 閃兌伺服器地址 quant_mode 是量化埠時要設定的配置

後臺執行dealer

使用mmdk關於閃兌的方法前,需要先啟動dealer並指定正確的配置檔案dealer.conf 可以將兩部分檔案放在同一目錄下,啟動服務的命令列如下:

$ nohup ./linux_dealer_hz_test dealer.conf &

dealer後臺執行後,可以透過$ ps -aux | grep dealer來查詢程式dealer程序是否成功執行。

呼叫mov-mmdk提供的方法

目前針對閃電兌換,mmdk提供了以下幾個方法 可供使用:

  • get_depth(self, symbol) 獲取市場深度
  • send_order(self, symbol, side, price, amount) 傳送交易訂單
  • cancel_order_by_id(self, order_id) 取消訂單
  • query_list_orders(self, symbol, side) 查詢訂單

1.透過python3啟動python直譯器,在程式碼中新增依賴,建立flashapi物件就可以呼叫mov-mmdk提供的api參與閃電兌換做市商。

from mov_sdk.flash_api import flashapi
//1024為dealer.conf中設定的埠號,此處需與dealer配置檔案相同
flash_local_url = "http://127.0.0.1:1024"
client = flashapi(_local_url=flash_local_url)//建立物件

2.查詢閃兌市場中指定交易對的深度

print(client.get_depth("btm_usdt"))

3.傳送訂單提供深度,例如我們傳送一筆價格為0.07u,數量為0.1btm的賣單

print(client.send_order(symbol="btm_usdt", side="sell", price="0.07", amount="0.1"))

可以再次查詢深度,並與步驟2的查詢結果對比

print(client.get_depth("btm_usdt"))

顯然,我們剛剛傳送的訂單已經可以被查詢到了。

4.透過交易對和交易方向查詢訂單

print(client.query_list_orders(symbol="btm_usdt",side="sell"))

透過這個方法可以查詢到我們訂單的資訊。透過訂單的order_id我們可以取消訂單。

5.取消訂單

print(client.cancel_order_by_id(order_id=32487))

成功取消後再次檢視深度,可以發現我們的訂單已經不在asks佇列中

免責聲明:

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

推荐阅读