【问链-区块链基础知识系列】 第十五课 数字货币交易所的前世、今生和未来(二)

本文主要是介绍【问链-区块链基础知识系列】 第十五课 数字货币交易所的前世、今生和未来(二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

编者按:在上一篇文章中,我们介绍了数字货币交易平台的概念,那么今天我们就来重点聊聊数字货币交易平台的技术。如果你有过设计或实现传统金融交易系统的经验,那么你阅读本篇就会更加容易。

由于中心化交易所是主流应用,所以今天我主要介绍的是中心化模式下的数字货币交易平台。

两套账本

数字货币交易平台的技术基本沿用了金融交易技术中的系统架构,只是把原来针对法币和证券(或平台代币)的部分,也就是我们通常称作资金管理系统的部分,完全替换为针对数字货币的数字货币管理系统,换句话说,就是换了一套内部账本。

然而我们知道,区块链本身也是用来记账的,也算作一种金融账本,所以一套内部账本,一套区块链本身的账本,这里就出现了两套账本,如何管理这两套账本,就是资金管理系统的首要任务。

如下图所示。由于中文语境下的交易有多重含义,本篇会用英文单词标注,以示区别。
  在这里插入图片描述
  解释一下这张图,图的左边表示了多个区块链账本,右边的数字货币交易所有自己的内部账本,这两套账本是独立的。

交易所内部的账本记录的是交易Trade,这个交易是由用户挂单,接着被撮合引擎撮合成交而产生的,而区块链账本上的交易Transaction,是当且仅当用户发起充币提币请求并被执行时,才会产生的。

这两种交易都用了中文“交易”来表示,但是它们所属的语境不同,前者的交易表示的是金融交易语境下的资产交换,也就是Deal;后者表示的是区块链上的技术概念,表示资产转移的一次记账过程,上述特意用英文以表区别,希望你能够区分。

数字货币交易所包含哪些系统模块

一个数字货币交易所的后端其实至少有四部分构成:Web业务逻辑系统、交易撮合系统、运营后台管理系统、资金管理系统。资金管理系统其实就是刚才说到的内部账本。
  在这里插入图片描述

  • Web业务逻辑系统:这个模块通常包含了用户账户模块、登录网关、账户安全管理、KYC认证、行情推送等等,这个模块更偏向用户,也与通常的电商账户系统十分类似。
  • 交易撮合系统:这个模块是一个交易所的核心模块,为所有的用户提供订单撮合。
  • 运营后台管理:这个模块是一个交易所运营人员使用的系统,交易所内部人员才能访问。
  • 资金管理系统:这里的资金管理其实包含了三部分,第一部分是法币的支付网关,可能需要对接银行或第三方支付机构;第二部分就是数字货币钱包管理,它提供了大部分主流数字货币的支付功能;第三部分是用户持仓信息,所谓持仓就是用户持有多少数字货币,这个是记录在数据库中的,不需要与区块链保持一致,但是要求交易所的总账是平的。

各自模块的特征

  1. Web业务系统与我们常见的电商系统无异,主要是用户账户以及简单的业务逻辑,重点是可扩展性,业务要求比较弹性
  2. 交易撮合系统本质上是一个高并发的计算系统,特点是系统性能高和稳定性好,其中订单队列可以是编程语言中的数据容器,也可以是内存数据库。
  3. 运营后台系统在整个交易所生命周期的早期并不凸显重要性,但是运营后台系统恰恰是交易所中后期发展的核心系统,重点在数据准确,要求网络安全性高和可扩展性好。
  4. 资金管理系统包含用户持仓状态,以及数字货币钱包服务,它是一个交易平台中安全性要求最高的系统,资金管理系统往往要搭配一个内存数据库,其中数字货币钱包服务也可以拆出来做成独立子系统,甚至可以改造成整个公司的内部区块浏览器,因为钱包服务需要设计成多个钱包实例,并统一所有的币种钱包接口。

一个交易所可能的结构如下图。
  在这里插入图片描述
  上图中,MatchingGroup相当于是交易撮合系统;Web-Group相当于Web业务逻辑系统;Back-office相当于后台管理系统;AssetsManagement相当于是资金管理系统。
  
  涉及的技术栈

如果我们再将刚才提到的各个模块细分,会看到以下的功能。
  在这里插入图片描述
  按照上图的细分功能,我们可以得到哪些技术支持一目了然。

首先是Server需要数据库作为支撑,其次是Restful API作为基础通讯协议,并且集成钱包相关的技术,撮合引擎为Sever提供撮合服务。

在这里面,例如需要SMS系统,所以可以使用云服务中的SMS组件,这些都可以是成熟的通用组件技术。我们可以发现中心化交易使用的技术与互联网技术并无不同。

把这些通用组件塞到下图中各个层次和大模块当中,所以最终一个交易所的详细架构可能是下图的样子。
  在这里插入图片描述
  (图片来自网络,缺失了资金管理部分)

我们来解释一下这张图。

首先是存储,持久存储通常可以选择MySQL,撮合相关的模块由于要避免接触磁盘IO,所以需要为撮合模块提供Redis类型的内存存储,二者需要保证最终一致性。

撮合和行情部分,几乎与传统技术无异,行情推送可以类比到其他推送系统,只是频率更高,一般首选Websocket技术。

这与传统互联网应用的最大区别里主要是数字货币钱包管理,这块完全是新的内容,对安全性、易用性提出了相当高难度的挑战,这里也是交易所资金托管的根本,所以如何管理好大量数字货币,往往要结合运营、内部管理制度、冷热钱包技术一起才能做好交易所的资金管理。

那么用户是如何挂单的,又是如何产生区块链交易的呢?我们来看一看。

##交易过程

那么说,用户A拿0.01BTC 换取了B的10个ETP 的过程究竟是什么样的呢,我来举一个例子。

  1. 用户A挂10ETP买单,出价0.01BTC经过Web业务系统进入撮合系统订单簿ETP-BTC买单队列,等待撮合成交,同时资金管理系统冻结0.01BTC。
  2. 用户B挂10ETP卖单,出价0.01BTC经过Web业务系统进入撮合系统订单簿ETP-BTC卖单队列,与步骤1中A的订单撮合匹配成功,生成Trade,同时资金管理系统结算对应资产,B的资产变化为增加0.01BTC并减少10ETP,A增加10ETP并减少0.01BTC。
  3. 成交Trade以及资产变化通过资金管理系统写RDB数据库,形成成交记录,同时更新行情,数据库记录可供用户和运营后台管理系统查询。
    要注意的是这一步并不是登记到区块链上。
  4. 用户B经过Web业务系统发起提币请求,请求提取10ETP进入自己的数字货币钱包,这个请求进入资金管理系统,交易所运营人员可通过运营后台观察到这笔请求,运营人员审核用户B的信息,比如实名认证是否正常等。
  5. 提币请求进入运营系统后,如果通过审核,则资金管理系统会冻结用户B的10ETP,同时将提币请求发起给数字货币钱包服务系统,也就是WalletGroup,子系统发起区块链上的交易x(Transaction),等待交易被打包,并根据更新提币审核状态,供用户查看。
  6. 数字货币钱包服务根据区块信息查询交易x是否被打包,如果已经打包,则资金管理系统将完全把用户B被冻结的10ETP直接抹成0,更新提币状态最终为完成,提供区块交易ID以供用户和运营后台系统进行查询。

在步骤3中,我们可以看到用户所持有的资产,相当于是交易所对用户的负债,但这也只是数据库中的一个数字,并不是真正的链上资产。

在步骤6中,我们看到区块链上的“交易”与步骤3中的“交易”完全不是一个概念,同时用户的资产是否安全,完全取决于交易平台的技术是否安全,对交易所是否信任。

再来看看充值阶段。

简单来说,充值是与提币相反的过程,不同的是,充值不需要审核,一般数字货币交易所的原则都是“宽进严出”,在充值过程中,交易平台通常不直接使用数字货币钱包检测用户是否充值到账,而是使用“扫块”(block_scan)这一方法检测用户的充值。

总结

今天我简单介绍了数字货币交易所的业务逻辑,相信你已经对数字货币交易所有了一个初步的了解,数字货币交易所是区块链行业最重要的业务,全世界每个月都有新的数字货币交易所诞生。

今天我只讲了中心化的数字货币交易所,而去中心化的交易所,除去资金管理系统,基本业务逻辑是不变的。

这篇关于【问链-区块链基础知识系列】 第十五课 数字货币交易所的前世、今生和未来(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/871967

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

计组基础知识

操作系统的特征 并发共享虚拟异步 操作系统的功能 1、资源分配,资源回收硬件资源 CPU、内存、硬盘、I/O设备。2、为应⽤程序提供服务操作系统将硬件资源的操作封装起来,提供相对统⼀的接⼝(系统调⽤)供开发者调⽤。3、管理应⽤程序即控制进程的⽣命周期:进程开始时的环境配置和资源分配、进程结束后的资源回收、进程调度等。4、操作系统内核的功能(1)进程调度能⼒: 管理进程、线

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

usaco 1.2 Name That Number(数字字母转化)

巧妙的利用code[b[0]-'A'] 将字符ABC...Z转换为数字 需要注意的是重新开一个数组 c [ ] 存储字符串 应人为的在末尾附上 ‘ \ 0 ’ 详见代码: /*ID: who jayLANG: C++TASK: namenum*/#include<stdio.h>#include<string.h>int main(){FILE *fin = fopen (

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。