区块链交易所核心模块及其架构设计区块链交易所核心模块及其架构设计
交易所核心模块交易所核心模块
数字钱包数字钱包:业务流程一般是充值->提现->归集,不同的主链,实现方式不一样(上链规则与接口)。
撮合服务撮合服务
1. 使用消息中间件,基于消息的,对生产(maker卖单)和(taker买单)的高效处理。撮合最重要的一个其实是定序,而且基
本都是内存做撮合(内存速度快,单线程处理类似于redis的方案)。定序的话,也要根据一些业务因素(比如挂单的时间,价
格匹配的程度 等等)来排序。每个taker和maker是需要有加权的,相同的价格,不同时间,成交数量这个都需要根据实际情况
进行调整(意思是尽量均衡的 公平的 进行交易。不要出现某一个taker 吃掉太多 筹码。类似于做缓存的时候使用一致性hash算
法,尽量平均分布到我们的缓存节点里。)
否则会出现很奇怪的插针(所谓股市里面的上影线或者下影线),要避免这个问题。每家交易所都不一样,都是根据历史数据
去调整。这会涉及到很多参数,就跟调整风控策略一样,要分析很多字段。
业务分析:已有溢价的这种情况,比如我挂单3毛,别人愿意出5毛买,这种很容易出针,要处理,盘口过大的或者基差过大的
可能性。这种情况,是做策略不让5毛的 成交?还是继续等等,直到单位时间内,没有出现合理价格的买单,那么就还是让他
们成交?主要还是看交易所自己的业务需求,比较好的做法是延时,比如延时,比如btc/usdt这种交易量很大的交易对,出现这种情况,这种交易量很大的交易对,出现这种情况,
一般让一般让5毛的这个毛的这个taker在排序中往后,让之前已经有过的在排序中往后,让之前已经有过的taker往前移,哪怕金额是比这个小。往前移,哪怕金额是比这个小。
推荐框架:Disruptor 这个框架,用于对消息顺序性有高要求,同时保证高性能的系统比较适用。
中文参考:JAVA并发编程 之 LMAX Disruptor使用实例
2. 撮合引擎:
交易所撮合引擎工作原理及代码
7个开源交易撮合引擎
行情系统:行情系统:主要使用tradingview或者MPAndroidChart进行绘图,websocket进行K线数据推送,同时注意2FA安全验证。
总结:技术栈总结:技术栈主要用到椭圆曲线,p2p,共识算法,公私玥体系(Java certificate数字证书已经做了比较好的封装),spring
cloud或者使用其他分布式系统框架体系(分布式服务,RPC通讯,监控,集群)
重要参考内容重要参考内容,转载自区块链交易所架构,转载自区块链交易所架构
本文介绍一个实际开发并上线的加密货币交易所项目的逻辑架构设计,其中 包括撮合服务、做市服务、用户服务、市场数据服
务、钱包服务、报表服务等核心组件, 并采用了基于AKKA集群的微服务架构。
加密交易所的逻辑架构图如下所示:
评论0