【问链-区块链基础知识系列】 第十五课 数字货币交易所的前世、今生和未来(二)
編者按:在上一篇文章中,我們介紹了數(shù)字貨幣交易平臺的概念,那么今天我們就來重點聊聊數(shù)字貨幣交易平臺的技術(shù)。如果你有過設(shè)計或?qū)崿F(xiàn)傳統(tǒng)金融交易系統(tǒng)的經(jīng)驗,那么你閱讀本篇就會更加容易。
由于中心化交易所是主流應(yīng)用,所以今天我主要介紹的是中心化模式下的數(shù)字貨幣交易平臺。
兩套賬本
數(shù)字貨幣交易平臺的技術(shù)基本沿用了金融交易技術(shù)中的系統(tǒng)架構(gòu),只是把原來針對法幣和證券(或平臺代幣)的部分,也就是我們通常稱作資金管理系統(tǒng)的部分,完全替換為針對數(shù)字貨幣的數(shù)字貨幣管理系統(tǒng),換句話說,就是換了一套內(nèi)部賬本。
然而我們知道,區(qū)塊鏈本身也是用來記賬的,也算作一種金融賬本,所以一套內(nèi)部賬本,一套區(qū)塊鏈本身的賬本,這里就出現(xiàn)了兩套賬本,如何管理這兩套賬本,就是資金管理系統(tǒng)的首要任務(wù)。
如下圖所示。由于中文語境下的交易有多重含義,本篇會用英文單詞標(biāo)注,以示區(qū)別。
解釋一下這張圖,圖的左邊表示了多個區(qū)塊鏈賬本,右邊的數(shù)字貨幣交易所有自己的內(nèi)部賬本,這兩套賬本是獨立的。
交易所內(nèi)部的賬本記錄的是交易Trade,這個交易是由用戶掛單,接著被撮合引擎撮合成交而產(chǎn)生的,而區(qū)塊鏈賬本上的交易Transaction,是當(dāng)且僅當(dāng)用戶發(fā)起充幣提幣請求并被執(zhí)行時,才會產(chǎn)生的。
這兩種交易都用了中文“交易”來表示,但是它們所屬的語境不同,前者的交易表示的是金融交易語境下的資產(chǎn)交換,也就是Deal;后者表示的是區(qū)塊鏈上的技術(shù)概念,表示資產(chǎn)轉(zhuǎn)移的一次記賬過程,上述特意用英文以表區(qū)別,希望你能夠區(qū)分。
數(shù)字貨幣交易所包含哪些系統(tǒng)模塊
一個數(shù)字貨幣交易所的后端其實至少有四部分構(gòu)成:Web業(yè)務(wù)邏輯系統(tǒng)、交易撮合系統(tǒng)、運營后臺管理系統(tǒng)、資金管理系統(tǒng)。資金管理系統(tǒng)其實就是剛才說到的內(nèi)部賬本。
- Web業(yè)務(wù)邏輯系統(tǒng):這個模塊通常包含了用戶賬戶模塊、登錄網(wǎng)關(guān)、賬戶安全管理、KYC認(rèn)證、行情推送等等,這個模塊更偏向用戶,也與通常的電商賬戶系統(tǒng)十分類似。
- 交易撮合系統(tǒng):這個模塊是一個交易所的核心模塊,為所有的用戶提供訂單撮合。
- 運營后臺管理:這個模塊是一個交易所運營人員使用的系統(tǒng),交易所內(nèi)部人員才能訪問。
- 資金管理系統(tǒng):這里的資金管理其實包含了三部分,第一部分是法幣的支付網(wǎng)關(guān),可能需要對接銀行或第三方支付機(jī)構(gòu);第二部分就是數(shù)字貨幣錢包管理,它提供了大部分主流數(shù)字貨幣的支付功能;第三部分是用戶持倉信息,所謂持倉就是用戶持有多少數(shù)字貨幣,這個是記錄在數(shù)據(jù)庫中的,不需要與區(qū)塊鏈保持一致,但是要求交易所的總賬是平的。
各自模塊的特征
一個交易所可能的結(jié)構(gòu)如下圖。
上圖中,MatchingGroup相當(dāng)于是交易撮合系統(tǒng);Web-Group相當(dāng)于Web業(yè)務(wù)邏輯系統(tǒng);Back-office相當(dāng)于后臺管理系統(tǒng);AssetsManagement相當(dāng)于是資金管理系統(tǒng)。
涉及的技術(shù)棧
如果我們再將剛才提到的各個模塊細(xì)分,會看到以下的功能。
按照上圖的細(xì)分功能,我們可以得到哪些技術(shù)支持一目了然。
首先是Server需要數(shù)據(jù)庫作為支撐,其次是Restful API作為基礎(chǔ)通訊協(xié)議,并且集成錢包相關(guān)的技術(shù),撮合引擎為Sever提供撮合服務(wù)。
在這里面,例如需要SMS系統(tǒng),所以可以使用云服務(wù)中的SMS組件,這些都可以是成熟的通用組件技術(shù)。我們可以發(fā)現(xiàn)中心化交易使用的技術(shù)與互聯(lián)網(wǎng)技術(shù)并無不同。
把這些通用組件塞到下圖中各個層次和大模塊當(dāng)中,所以最終一個交易所的詳細(xì)架構(gòu)可能是下圖的樣子。
(圖片來自網(wǎng)絡(luò),缺失了資金管理部分)
我們來解釋一下這張圖。
首先是存儲,持久存儲通常可以選擇MySQL,撮合相關(guān)的模塊由于要避免接觸磁盤IO,所以需要為撮合模塊提供Redis類型的內(nèi)存存儲,二者需要保證最終一致性。
撮合和行情部分,幾乎與傳統(tǒng)技術(shù)無異,行情推送可以類比到其他推送系統(tǒng),只是頻率更高,一般首選Websocket技術(shù)。
這與傳統(tǒng)互聯(lián)網(wǎng)應(yīng)用的最大區(qū)別里主要是數(shù)字貨幣錢包管理,這塊完全是新的內(nèi)容,對安全性、易用性提出了相當(dāng)高難度的挑戰(zhàn),這里也是交易所資金托管的根本,所以如何管理好大量數(shù)字貨幣,往往要結(jié)合運營、內(nèi)部管理制度、冷熱錢包技術(shù)一起才能做好交易所的資金管理。
那么用戶是如何掛單的,又是如何產(chǎn)生區(qū)塊鏈交易的呢?我們來看一看。
##交易過程
那么說,用戶A拿0.01BTC 換取了B的10個ETP 的過程究竟是什么樣的呢,我來舉一個例子。
要注意的是這一步并不是登記到區(qū)塊鏈上。
在步驟3中,我們可以看到用戶所持有的資產(chǎn),相當(dāng)于是交易所對用戶的負(fù)債,但這也只是數(shù)據(jù)庫中的一個數(shù)字,并不是真正的鏈上資產(chǎn)。
在步驟6中,我們看到區(qū)塊鏈上的“交易”與步驟3中的“交易”完全不是一個概念,同時用戶的資產(chǎn)是否安全,完全取決于交易平臺的技術(shù)是否安全,對交易所是否信任。
再來看看充值階段。
簡單來說,充值是與提幣相反的過程,不同的是,充值不需要審核,一般數(shù)字貨幣交易所的原則都是“寬進(jìn)嚴(yán)出”,在充值過程中,交易平臺通常不直接使用數(shù)字貨幣錢包檢測用戶是否充值到賬,而是使用“掃塊”(block_scan)這一方法檢測用戶的充值。
總結(jié)
今天我簡單介紹了數(shù)字貨幣交易所的業(yè)務(wù)邏輯,相信你已經(jīng)對數(shù)字貨幣交易所有了一個初步的了解,數(shù)字貨幣交易所是區(qū)塊鏈行業(yè)最重要的業(yè)務(wù),全世界每個月都有新的數(shù)字貨幣交易所誕生。
今天我只講了中心化的數(shù)字貨幣交易所,而去中心化的交易所,除去資金管理系統(tǒng),基本業(yè)務(wù)邏輯是不變的。
總結(jié)
以上是生活随笔為你收集整理的【问链-区块链基础知识系列】 第十五课 数字货币交易所的前世、今生和未来(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【问链-区块链基础知识系列】 第十四课
- 下一篇: 【问链财经-区块链基础知识系列】 第十八