一个交易所到底应该具备什么要素呢?

交易所核心功能——撮合引擎。
撮合引擎其实是一个交易所的核心模块,实现起来依据几条非常简单的原则:

  1. 成交价格优先-时间优先

  2. 定价时间优先-价格优先

  3. 卖方价格队列大于等于买方价格队列

但是里面的实现还是很讲究的:

a. 高可用,撮合引擎宕机如何处理?

b. 实时成交,撮合引擎要求高速处理,IO一般都会成为瓶颈,如果避免IO是个非常有技术含量的问题。

c. 用户接口设计

这里的用户接口设计分: 下单HTTP API,以及响应式设计的web app。

d. pre-matching 的 订单校验与审核

交易所核心数据——资产与账户。
围绕这撮合引擎又能引申出两个系统:

  1. 账户管理系统

账户底下又会细分 管理账户,普通账户,一级账户/二级账户,做市账户

  1. 资产管理系统

资产底下又会细分为 传统资产,数字资产,

并且资产有不同的形式,理财式的,货币类型的,股权类型的等等

一切皆资产,一切皆账户,围绕这两个系统,又会引申出第三个系统——权限管理系统。

以上的分析均基于传统的交易所,那么如果我们考虑用区块链呢?

账户和资产的表示,以及权限管理将全部托管到区块链上。

这里又会细分:

包含代币的区块链系统
非代币的区块链系统
其中包含代币的区块链系统,表示为I型架构,非代币的表示为II型架构。

在I型架构下,代币系统未必是一个稳定的系统,

当代币系统足够大的时候但远不及货币的时候,代币作为资产将不稳定,不能作为计价单位。

当代币系统很小的时候,很难作为资产进行买卖。

其次I型架构,代币如何发行是个很麻烦的问题。

无论I型还是II型架构,传统区块链的提供的交割速度也是个问题,远远不能满足交易所的并发量以及速度,这时候就必须在共识模型上进行调整。

最后一个问题是如何将撮合引擎与区块链对接,最直观的方式是:

在撮合引擎节点上,部署一个区块链完全节点,并且该节点是共识节点,所有账户信息由该区块链节点维护,撮合引擎维护账户系统的最小集合——地址和余额。

发起交易直接调用区块链Client API即可。

当然更好的方式是作为架构集成,中间用消息中间件通讯,降低本地IO的开销。

先写这么多,想到了后续会补充,以及上述各问题的解决思路。

以上是针对任意数字资产发行的一种exchange的思路,一定会有童鞋提及bitshares的完全体区块链架构,这个也后续再更,继续挖坑~~~( ̄︶ ̄)↗