# 完整的数字货币区块链交易所-币币交易-秒合约-OTC-C2C-合约交易-云矿机-抢购-持币生息 **Repository Path**: exchangecoin/EC ## Basic Information - **Project Name**: 完整的数字货币区块链交易所-币币交易-秒合约-OTC-C2C-合约交易-云矿机-抢购-持币生息 - **Description**: 此系统由币严系统半年二开,并经过市场验证的完整的数字货币交易所。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 1 - **Created**: 2021-11-08 - **Last Updated**: 2025-11-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 完整的数字货币区块链交易所-币币交易-秒合约-OTC-C2C-合约交易-云矿机-抢购-持币生息 #### 介绍 此系统由ZTuo系统框架经过完整技术团队半年时间二开开发,现已经完善web,H5,安卓,IOS端、撮合系统、行情接口等并经过市场验证的完整的数字货币交易所。 - 撮合交易引擎 - 后台管理(后端+前端) - H5后台 - web前台 - H5前台 - 原生安卓APP源码 - 原生苹果APP源码 - 币种钱包RPC源码 本项目是基于Java(SpringCloud)的Perfect数字资产交易平台(以下简称“PONE”)是POne团队历经了多个数字资产交易系统开发之后,通过不断的优化精简,首家开源的Java语言开发的数字货币交易所平台,支持当前多种主流的数字货币交易(测试环境受限于服务器的成本,目前支持USDT、ETH、BTC等主流货币,或根据实际情况开放一定测试币种)。 本平台采用前后端分离的开发模式,后端负责业务实现,前端负责数据展示,同时包含有对应的APP。 POne团队遵循“技术共享”的理念,决定开源POne平台,以供大家参考和学习(如用于商业化项目,对此所带来的法律和经济问题,POne团队概不负责)。团队小伙伴的能力有限,不足之处也在所难免,这也是团队希望开源的最终目的,希望借助开源社区的程序猿/媛们的力量,对POne平台提出更多的意见和想法,提出更好的改进方案和策略,在业务和技术上共同进步,共同提高! 再次声明,POne平台仅用于学习实验,如有用于商业化项目,请自行咨询法律政策,技术无罪,但请遵纪守法!同时,一切用于商业化项目所带来的法律和经济问题,POne团队概不负责! ### 二开功能已开发 ### 功能更新 - 持币生息(已完成,不开源) - 代理商系统(已完成,未开源) - 极速兑换(已完成,未开源) - IEO首发活动(已完成,未开源) - 永续合约(已完成,不开源) - 期权合约(已完成,不开源) - 秒合约(已完成,不开源) - 指数合约(已完成,不开源) - 差价合约(已完成,不开源) - 交割合约(已完成,不开源) - 智能客服系统(已完成,不开源) - 钱包支持TRC20/ETC20/Omni(已完成,不开源) ### 系统性能提升(基础软件优化) ** - 系统稳定性提升(完善服务治理、链路监控、网关路由、负载均衡等) - 撮合引擎升级,支持横向扩展(当前系统唯一性能瓶颈所在) - 基础软件版本升级(SpringCloud、MySQL、Kafka、Redis以及Maven依赖等) - 统一配置中心,降低配置难度(计划将Eureka变更为Nacos) - 支持Docker及K8S容器编排部署方式 - 支持Jekins持续集成 - 设计全新交易所UI,提升用户体验&避免撞脸 ### 2020/11/07 稳定版更新公示 - 新增 期权合约 Android App - 新增 阿里云&赛邮(短信&邮件)支持 - 新增 Link & YFI钱包RPC支持 - 新增 Api模块 - 新增 超机器人增加跟随型趋势设置 - 新增 PC端白蓝版 - 新增 基础版手机端H5页面支持 - 新增 Android App去除第三方K线插件(改为自研K线模块) - 新增 永续合约 IOS App(感谢nomo) - 新增 双端APP多语言(中英)支持 - 修复 币币交易Websocket行情推送卡顿 - 修复 IOS App兼容IOS 13颜色设置 - 修复 升级OmniUSDT版本至0.8.0,解决部分节点接口过时问题 - 更新 安装部署文档新增2节 ### 2020/09/08 稳定版更新公示 - 新增 永续合约后端 - 新增 永续合约PC用户端 - 新增 永续合约PC管理端 - 新增 永续合约 Android App - 新增 预测合约后端 - 新增 预测/期权合约PC用户端 - 新增 预测/期权合约PC管理端 - 新增 Android APP白色版 - 新增 IOS App白色版 - 修复 12个BUG(非重大) - 优化 33个UI细节 - 优化 安装部署文档新增3节 ### **特色** - 特色1: 基于内存撮合引擎,与传统基于数据库撮合更快 - 特色2: 前后端分离,基于Token的Api授权机制 - 特色3: 基于SpringCloud微服务架构,扩展更容易 - 特色4: MySQL、MongoDB、Redis多种数据存储方式,只为更快 - 特色5: Kafka发布订阅消息队列,让订单更快流转 - 特色6: 主流币种对接区块链接口齐全,开箱即用 - 特色7: 冷热钱包分离,两种提现方式,保证安全 - 特色8: 机器人系统,同步行情,维护深度,防止搬砖 - 特色9: 原生App,Java和ObjectC提供原生体验 - 特色10: 交易所设计者提供技术支持,部署+二开无忧 - 特色11: 支持添加自定义平台币及其他币种 简要介绍 本项目是基于Java(SpringCloud)开发的比特币交易所 | BTC交易所 | ETH交易所 | 数字货币交易所 | 交易平台 | 撮合交易引擎。本项目基于SpringCloud微服务开发,可用来搭建和二次开发数字货币交易所,有完整的系统组成部分。 撮合交易引擎 后台管理(后端+前端) 前台(交易页面、活动页面、个人中心等) 原生安卓APP源码 原生苹果APP源码 币种钱包RPC源码 #### 系统使用技术 - 后端:Spring、SpringMVC、SpringData、SpringCloud、SpringBoot - 数据库:Mysql、Mongodb - 其他:redis、kafka、阿里云OSS、腾讯防水校验 - 前端:Vue、iView、less - 同时提供Web、H5、IOS和Android版本。 ### 整体架构 ![输入图片说明](https://images.gitee.com/uploads/images/2021/1109/002338_f6c369bf_9995129.png "1.png") ### 逻辑架构 ![输入图片说明](https://images.gitee.com/uploads/images/2021/1109/002535_18babadc_9995129.png "2.png") ### 部署架构 ![输入图片说明](https://images.gitee.com/uploads/images/2021/1109/002659_14bf9313_9995129.png "3.png") ### 依赖关系 ![输入图片说明](https://images.gitee.com/uploads/images/2021/1109/002808_1d4cac2d_9995129.png "4.png") #### 安装教程 ![输入图片说明](https://images.gitee.com/uploads/images/2021/1109/002210_48411936_9995129.png "022849_78d1fc64_2182501.png") #### 使用说明 1. cloud - 提供SpringCloud微服务注册中心功能,为基础模块,必须部署 - 依赖服务:无 2. ucenter-api - 提供用户相关的接口(如登录、注册、资产列表),该模块为基础为基础模块,必须部署 - 依赖服务:mysql,kafka,redis,mongodb,短信接口,邮箱账号 3. otc-api - 提供场外交易功能接口,没有场外交易的可以不部署 - 依赖服务:mysql,redis,mongodb,短信接口 4. exchange-api - 提供币币交易接口,没有币币交易的项目可以不部署 - 依赖服务:mysql,redis,mongodb,kafka 5. chat - 提供实时通讯接口,基础模块,需要部署 - 依赖服务:mysql,redis,mongodb 6. admin - 提供管理后台的所有服务接口,必须部署 - 依赖服务:mysql,redis,mongodb 7. wallet - 提供充币、提币、获取地址等钱包服务,为基础模块,必须部署 - 依赖服务:mysql,mongodb,kafka,cloud 8. market - 提供币种价格、k线、实时成交等接口服务,场外交易不需要部署 - 依赖服务:mysql,redis,mongodb,kafka,cloud 9. exchange - 提供撮合交易服务,场外交易不需要部署 - 依赖服务:mysql,mongodb,kafka **- 项目启动说明** - 先启动cloud模块,再启动market,exchange模块,剩下的没有顺序 - 启动命令:java -jar cloud.java & ### 关于SpringCloud Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。 一般而言,一个完整的SpringCloud框架应该如下图所示: ![输入图片说明](https://images.gitee.com/uploads/images/2021/1109/004612_c6544ea9_9995129.png "5.png") 如果对SpringCloud尚不熟悉,可以先简单学习一下SpringCloud的相关教程,这样再回来看本项目,会更加容易上手。 提醒一下,因为Springcloud框架图中是完整的架构,在开发的时候,我们会适当的裁剪一些内容,从而让开发和部署更加快速,所以有一些出入的地方。 ### 关于撮合交易引擎 本系统对交易队列采用内存撮合的方式进行,以Kafka做撮合订单信息传输,MongoDB持久化订单成交明细,MySQL记录订单总体成交。 其中01_Framework/Exchange项目主要负责内存撮合,01_Framework/Market项目主要负责订单成交持久化、行情生成、行情推送等服务,包括: K线数据,间隔分别为:1分钟、5分钟、15分钟、30分钟、1小时、1天、1周、1月 - 所有交易对的市场深度(market depth)数据 - 所有交易对的最新价格 - 最近成交的交易对 - 内存撮合交易支持的模式 - 限价订单与限价订单撮合 - 市价订单与限价订单撮合 - 限价订单与市价订单撮合 - 市价订单与市价订单撮合 - 限价&市价订单处理逻辑 ![输入图片说明](https://images.gitee.com/uploads/images/2021/1109/004832_312beb9a_9995129.png "6.png") 注意:这个图很久以前的了,最新代码中的逻辑更复杂了 **撮合引擎支持的其他功能** 除了普通的限价与市价撮合交易功能外,本系统的撮合交易引擎还引入了活动成交模式,通过设置交易对(如:BTC/USDT)的开始交易时间、初始发行量、初始发行价、活动模式等参数,可以制定出丰富的撮合交易模式,从而满足不同的撮合模式。 **举例说明** 交易所预计在2020年8月8日 12时00分00秒上线交易对AAA/USDT,但是作为一个新上线的币种,没有活动怎么能行呢?项目方或交易所决定拿出10000个AAA以0.0001USDT(市场行情价:0.0005)的价格让大家抢购。本系统支持对这种活动的设置。 另外,如果项目方或交易所决定拿出10000个AAA以0.0001USDT的价格发行,不希望大家抢购,而是希望所有充值USDT的用户能够平均瓜分10000个AAA,本系统也支持这种活动的设置。 **总结** 总之,本系统支持高度自定义的撮合模式,同时你也可以开发出你自己想要的撮合交易模式,只需要通过修改Exchange项目中的撮合逻辑就可以。 ============================================== **系统运行环境** Centos 6.8 MySQL 5.5.16 Redis-x64-3.2.100 Mongodb 3.6.13 kafka_2.11-2.2.1 nginx-1.16.0 JRE 8u241 JDK 1.8 Vue Zookeeper ### 生产环境建议配置 ![输入图片说明](https://images.gitee.com/uploads/images/2021/1109/005156_db9d4c96_9995129.png "7.png") ### 文件目录说明 00_framework └─———admin 后台管理API └─———bitrade-job 任务管理 └─———chat OTC聊天 └─———cloud SpringCloud微服务管理 └─———core 核心 └─———exchange 撮合交易引擎 └─———exchange-api 撮合交易API └─———exchange-core 撮合交易核心 └─———jar 第三方类库 └─———market 市场行情API、K线生成 └─———otc-api OTC交易API(如无需otc功能可不启动) └─———otc-core OTC核心 └─———sql SQL脚本 └─———ucenter-api 用户个人中心API └─———wallet 钱包资产管理,负责与RPC对接 01_wallet_rpc └─———bitcoin └─———bsv └─———btm └─———eos └─———erc-eusdt └─———erc-token(可对接各种ERC20币种) └─———eth └─———ltc └─———usdt 02_App_Android 03_App_IOS 04_Web_Admin 05_Web_Front ### 使用教程 1. 准备mysql数据库,创建名称为“xxxx”的数据库 2. 准备redis缓存数据库 3. 准备kafka流式处理环境(先配置运行zookper,接着配置运行kafka) 4. 准备mongodb数据库环境,创建用户admin、xxxx,创建bitrade数据库 5. 准备阿里云OSS(修改项目中需要配置的地方) 6. 准备nginx,修改配置文件(可选,正式上线需配置) 7. 修改framework代码中的配置文件为准备环境配置参数 8. 编译生成jar可执行文件 9. 运行cloud.jar(微服务注册中心) 10. 运行exchange.jar(撮合交易引擎) 11. 运行market.jar(行情中心,需要等待Exchange.jar完全启动) 12. 运行ucenter.jar(用户中心) 13. 运行其他模块(wallet.jar、chat.jar、otc-api.jar等) 14. 打开mysql,导入framework代码中的sql文件夹中xxxxxxx.sql文件,注意,trigger的sql如果报错,需要针对wallet表添加trigger 15. 运行前端vue项目 16. 运行后端vue项目 17. 运行钱包RPC 18. 运行自动交易机器人程序(本部分代码未上传,但不影响) 19. 运行Admin项目(该服务并不依赖其他服务,因此也可只运行此项目,直接查看后台) ### 技术支持 本数字货币交易系统系本团队二次开发的项目,掌握所有代码。 本系统在功能使用上有一些需要特别注意的地方,例如新建交易对以后的其他操作,操作不当会引起数据紊乱的错误出现。 本人可提供有偿技术帮助与使用培训指导! ### 注意事项 当内存不足时,在linux控制台输入top可以查看java进程占用了大量内存(一个java进程占用1G以上),因为有很多jar包需要运行,所以需要控制某些jar包使用的内存,你可选择几个不怎么耗费资源的项目,如下: java -jar -Xms128m -Xmx128m -Xmn200m -Xss256k admin-api.jar java -jar -Xms512m -Xmx512m -Xmn200m -Xss256k cloud.jar java -jar -Xms512m -Xmx512m -Xmn200m -Xss256k wallet.jar ### 关于邮件&短信 本系统支持邮件、短信发送系统运营状态 系统通知/报警支持:用户注册、用户认证、用户充值/提现、币种RPC运行状态、系统资源使用监控等24种监控 关于数据库脚本的问题 有朋友反映没有完整的SQL文件,这是因为编译成功的Jar,首次运行后会自动将Entity映射成数据库结构,项目中的SQL只是完成一些Springcloud无法完成的数据库结构。 数据库自动生成配置位于application.properties配置文件: #jpa spring.jpa.show-sql=true spring.data.jpa.repositories.enabled=true spring.jpa.hibernate.ddl-auto=update spring.jpa.hibernate.ddl-auto=update 这个配置会自动更新数据库结构。 ### 核心功能说明(用户端) 1. 注册/登录/实名认证/审核 2. Banner/公告/帮助/定制页面(Banner支持PC与APP分开设置,帮助支持各种分类模式) 3. 法币C2C交易/法币OTC交易(支持两种法币模式,项目早期可由平台承担C2C法币兑换,后期可开放OTC交易) 4. 币币交易(支持限价委托、市价委托,委托模式) 5. 邀请注册/推广合伙人(支持对邀请推广人数、佣金进行以日、周、月的排行统计) 6. 创新实验室(该部分支持功能较多,分项说明。另,APP暂不全部支持该功能) 6-1. 首发抢购活动模式(如发行新交易对时,可对交易对设置一定数量的币种进行抢购) 6-2. 首发分摊活动模式(如发行BTC/USDT交易对之前,官方拿出5BTC做活动,根据用户充值抵押的USDT多少进行均分BTC) 6-3. 控盘抢购模式(如发行ZZZ/USDT交易对之前,ZZZ币种价格为5USDT,官方发行活动价为0.5USDT,则可使用该模式) 6-4. 控盘均摊模式(如6-3,只不过平均分配) 6-5. 矿机活动模式(支持用户抵押一定数量的币种,由官方承诺每月返还一定数量的币种) 6-6. 持币生息 7. 红包功能(支持平台及官方发放一定数量币种的红包,此功能适合用户裂变) 8. 用户资产管理、流水管理、委托管理、实名管理等各种基础管理 ### 核心功能说明(管理端) 1. 概要(查看平台运行数据,包含交易额、注册人数、充值等) 2. 会员管理(会员信息管理、会员实名审核、会员实名管理、会员余额管理、会员充值/冻结余额等) 3. 邀请管理(会员邀请信息、会员邀请排行管理) 4. CTC管理(CTC订单管理、流水管理、承兑商管理) 5. 内容管理(PC广告管理、APP广告管理、公告管理、帮助管理) 6. 财务管理(充值提现管理、财务流水管理、对账管理、币种钱包余额管理) 7. 币币管理(新建交易对、管理交易对、新建交易机器人、设置交易机器人参数、设置行情引擎/交易引擎、撤销所有委托) 8. 活动管理(新建活动、矿机认购、抢购/瓜分管理) 9. 红包管理(平台红包管理、用户红包管理) 10. 系统管理(角色管理、部门管理、用户管理、权限管理、币种管理、RPC管理、版本管理) 11. 保证金管理(此功能设计时考虑到,但实际运营期间未使用到) 12. OTC管理(广告管理、订单管理、OTC币种管理、退保管理等,此功能未获得实际运营检验) 关于区块链钱包对接 本项目提供两种钱包对接方式,一种是自建节点+区块链浏览器的方式,另一种是第三方钱包对接方式。如果你想使用自建节点或区块链浏览器,你直接使用00_framework中的代码进行编译即可。如果你想使用第三方钱包对接,你可以下载07_Uduncloud文件夹的优盾钱包的项目文件,把他们复制到00_framework中即可。 当你拿到代码以后,对本项目进行调试运行期间,可不连接区块链节点,这并不会有太大的影响;即使不连接区块链节点,你也可以部署其一个具有撮合交易功能的交易平台(只是用户无法通过钱包地址充值而已)。 当你渐渐熟悉整套系统,同时对区块链运行原理、节点搭建、区块链浏览器有一定基础储备后,就可以开始对 01_wallet_rpc 文件夹下的项目进行研究。每个币种对应不同的数据访问方式,大部分区块链项目的钱包操作方式是相同的或十分相似的,比如BTC、LTC、BCH、BSV、BCD等比特币衍生币,其API操作方式几乎一样;再比如ETH,当你掌握一个合约币种的操作,其他基于ETH发行的数字货币的操作方式几乎一样。所以,基本上当你花时间弄懂了一个,就懂了一堆币种。 本项目使用的钱包操作方案也是不同的,也尽可能的为大家展示了不同用法: 如BTC、USDT,使用的自建全节点,现在差不多需要300G硬盘空间; 如ETH,使用的是自建轻节点(参考文章),因为全节点需要硬盘空间太大; 如BCH、BSV等,使用的是第三方区块链浏览器获取数据; 如XRP,官方就已经提供了访问区块数据的接口(Ripple API GitHub地址) 一般而言,当交易所来往资金量不大的时候,你可以自己摸索,但是当交易所资金量大了以后,如果你对自己操作钱包不太放心,你也可以使用第三方的钱包服务,当然,这需要你与钱包服务商进行谈判,付个年费什么的。例如U盾等都对接完成,直接配置就可以使用。 下图是用户充值监控逻辑的简要说明图,简单看看就行: ![输入图片说明](https://images.gitee.com/uploads/images/2021/1109/010207_7f42dad1_9995129.png "6.png")