免费开源数字货币交易所——基于Java开发的比特币交易所 | BTC交易所 | ETH交易所 | 数字货币交易所
本项目是基于Java开发的比特币交易所 | BTC交易所 | ETH交易所 | 数字货币交易所 | 交易平台 | 撮合交易引擎。本项目基于SpringCloud微服务开发,可用来搭建和二次开发数字货币交易所,有完整的撮合交易引擎源码、后台管理(后端+前端)、前台(交易页面、活动页面、个人中心等)、安卓APP源码(有偿提供)、苹果APP源码(有偿提供)、币种钱包RPC源码。
系统架构概要
随便画的一个草图,凑合看吧。。。
系统演示视频
PC前端(用户Web端):https://gitee.com/cexchange/CoinExchange/attach_files
手机APP端:https://gitee.com/cexchange/CoinExchange/attach_files
管理后台:https://gitee.com/cexchange/CoinExchange/attach_files
开发参考
开发参考文档:https://gitee.com/cexchange/CoinExchange/blob/master/DEVELOP.md
管理后台截图:https://gitee.com/cexchange/CoinExchange/tree/master/09_DOC/管理后台截图
系统运行环境
- 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
文件目录说明
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
└─———act
└─———bch
└─———bitcoin
└─———bsv
└─———btm
└─———ect
└─———eos
└─———erc-eusdt
└─———erc-token
└─———eth
└─———eth-support
└─———lib
└─———ltc
└─———rpc-common
└─———usdt
└─———xmr
02_App_Android
03_App_IOS
04_Web_Admin
05_Web_Front
使用教程
- 准备mysql数据库,创建名称为“xxxx”的数据库
- 准备redis缓存数据库
- 准备kafka流式处理环境(先配置运行zookper,接着配置运行kafka)
- 准备mongodb数据库环境,创建用户admin、xxxx,创建bitrade数据库
- 准备阿里云OSS(修改项目中需要配置的地方)
- 准备nginx,修改配置文件(可选,正式上线需配置)
- 修改framework代码中的配置文件为准备环境配置参数
- 编译生成jar可执行文件
- 运行cloud.jar(微服务注册中心)
- 运行exchange.jar(撮合交易引擎)
- 运行market.jar(行情中心,需要等待Exchange.jar完全启动)
- 运行ucenter.jar(用户中心)
- 运行其他模块(wallet.jar、chat.jar、otc-api.jar等)
- 打开mysql,导入framework代码中的sql文件夹中xxxxxxx.sql文件,注意,trigger的sql如果报错,需要针对wallet表添加trigger
- 运行前端vue项目
- 运行后端vue项目
- 运行钱包RPC
- 运行自动交易机器人程序(本部分代码未上传,但不影响)
技术支持
本数字货币交易系统系我所在公司为交易所开发的项目,该交易所因团队原因已停止运营,我司也已于2月解散。因我参与项目时,负责整体研发管理、架构设计以及客户对接,所以掌握所有代码。
本系统在功能使用上有一些需要特别注意的地方,例如新建交易对以后的其他操作,操作不当会引起数据紊乱的错误出现。
本人可提供有偿技术帮助与使用培训指导!
联系QQ:877070886
注意事项
当内存不足时,在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 这个配置会自动更新数据库结构。
核心功能说明(用户端)
注册/登录/实名认证/审核(目前仅支持手机,二次开发可加入邮件,很简单)
Banner/公告/帮助/定制页面(Banner支持PC与APP分开设置,帮助支持各种分类模式)
法币C2C交易/法币OTC交易(支持两种法币模式,项目早期可由平台承担C2C法币兑换,后期可开放OTC交易)
币币交易(支持限价委托、市价委托,二次开发可加入其它委托模式)
邀请注册/推广合伙人(支持对邀请推广人数、佣金进行以日、周、月的排行统计)
创新实验室(该部分支持功能较多,分项说明。另,APP暂不全部支持该功能)
6-1. 首发抢购活动模式(如发行新交易对时,可对交易对设置一定数量的币种进行抢购)
6-2. 首发分摊活动模式(如发行BTC/USDT交易对之前,官方拿出5BTC做活动,根据用户充值抵押的USDT多少进行均分BTC)
6-3. 控盘抢购模式(如发行ZZZ/USDT交易对之前,ZZZ币种价格为5USDT,官方发行活动价为0.5USDT,则可使用该模式)
6-4. 控盘均摊模式(如6-3,只不过平均分配)
6-5. 矿机活动模式(支持用户抵押一定数量的币种,由官方承诺每月返还一定数量的币种)
红包功能(支持平台及官方发放一定数量币种的红包,此功能适合用户裂变)
用户资产管理、流水管理、委托管理、实名管理等各种基础管理
核心功能说明(管理端)
概要(查看平台运行数据,包含交易额、注册人数、充值等)
会员管理(会员信息管理、会员实名审核、会员实名管理、会员余额管理、会员充值/冻结余额等)
邀请管理(会员邀请信息、会员邀请排行管理)
CTC管理(CTC订单管理、流水管理、承兑商管理)
内容管理(PC广告管理、APP广告管理、公告管理、帮助管理)
财务管理(充值提现管理、财务流水管理、对账管理、币种钱包余额管理)
币币管理(新建交易对、管理交易对、新建交易机器人、设置交易机器人参数、设置行情引擎/交易引擎、撤销所有委托)
活动管理(新建活动、矿机认购、抢购/瓜分管理)
红包管理(平台红包管理、用户红包管理)
系统管理(角色管理、部门管理、用户管理、权限管理、币种管理、RPC管理、版本管理)
保证金管理(此功能设计时考虑到,但实际运营期间未使用到)
OTC管理(广告管理、订单管理、OTC币种管理、退保管理等,此功能未获得实际运营检验)
关于区块链钱包对接
当你拿到代码以后,对本项目进行调试运行期间,可不连接区块链节点,这并不会有太大的影响;即使不连接区块链节点,你也可以部署其一个具有撮合交易功能的交易平台(只是用户无法通过钱包地址充值而已)。
当你渐渐熟悉整套系统,同时对区块链运行原理、节点搭建、区块链浏览器有一定基础储备后,就可以开始对 01_wallet_rpc 文件夹下的项目进行研究。每个币种对应不同的数据访问方式,大部分区块链项目的钱包操作方式是相同的或十分相似的,比如BTC、LTC、BCH、BSV、BCD等比特币衍生币,其API操作方式几乎一样;再比如ETH,当你掌握一个合约币种的操作,其他基于ETH发行的数字货币的操作方式几乎一样。所以,基本上当你花时间弄懂了一个,就懂了一堆币种。
本项目使用的钱包操作方案也是不同的,也尽可能的为大家展示了不同用法:
- 如BTC、USDT,使用的自建全节点,现在差不多需要300G硬盘空间;
- 如ETH,使用的是自建轻节点(参考文章),因为全节点需要硬盘空间太大;
- 如BCH、BSV等,使用的是第三方区块链浏览器获取数据;
- 如XRP,官方就已经提供了访问区块数据的接口(Ripple API GitHub地址)
一般而言,当交易所来往资金量不大的时候,你可以自己摸索,但是当交易所资金量大了以后,如果你对自己操作钱包不太放心,你也可以使用第三方的钱包服务,当然,这需要你与钱包服务商进行谈判,付个年费什么的。
下图是用户充值监控逻辑的简要说明图,简单看看就行:
系统展示(PC前端)
系统运行展示(APP前端)
手机Web端部分页面
系统运行展示(后端)
APP下载图片示例
免费开源数字货币交易所——基于Java开发的比特币交易所 | BTC交易所 | ETH交易所 | 数字货币交易所的更多相关文章
- 基于java开发的在线题库系统tamguo
简介 探果网(简称tamguo)是基于java开发的在线题库系统,包括 在线访问 后台运营 会员中心 书籍中心 管理员账号:system 密码:123456 因为线上数据和测试数据没有做到隔离,作者已 ...
- 基于java开发的开源代码GPS北斗位置服务监控平台
最近在研究位置服务平台,基于全球卫星定位技术(GNSS).互联网技术.空间地理信息技术(GIS).3G/4G无线通信技术,面向全国公众用户建立大容量.实时.稳定的位置信息服务运营平台.实现管理目标的实 ...
- 齐博软件 著名的老牌CMS开源系统 X1.0基于thinkphp开发的高性能免费开源PHP开放平台齐博x1.0基于thinkphp框架开发的高性能免费开源系统 主推圈子 论坛 预定拼团分销商城模块
齐博X1--标签变量大全 1.网站名称: {$webdb.webname} 2.网址: {$webdb[www_url]} {:get_url('home')} 3.网站SEO关键词: 首页:{$we ...
- C#连接基于Java开发IM——Openfire
Openfire简介 Openfire 是开源的.基于可拓展通讯和表示协议(XMPP).采用Java编程语言开发的实时协作服务器.Openfire的效率很高,单台服务器可支持上万并发用户. ...
- 完全开源Android网络框架 — 基于JAVA原生的HTTP框架
HttpNet网络请求框架基于HttpUrlConnection,采用Client + Request + Call的请求模型,支持https默认证书,数字安全证书.支持http代理!后续将会实现队列 ...
- 基于java开发jsp+ssm+mysql实现的在线考试系统 源码下载
实现的关于在线考试的功能有:用户前台:用户注册登录.查看考试信息.进行考试.查看考试成绩.查看历史考试记录.回顾已考试卷.修改密码.修改个人信息等,后台管理功能(脚手架功能不在这里列出),科目专业管理 ...
- Apache Solr采用Java开发、基于Lucene的全文搜索服务器
http://docs.spring.io/spring-data/solr/ 首先介绍一下solr: Apache Solr (读音: SOLer) 是一个开源.高性能.采用Java开发.基于Luc ...
- 如何通过免费开源ERP Odoo实现企业数字化转型深度分析(一)
本文来自<开源智造企业数字化转型报告白皮书>的精选内容章节.请勿转载.欢迎您反馈阅读意见. 引言 在由消费者驱动的数字经济时代,创新之势锐不可挡.变革步伐从未如此迅速,并且还会越来越快.对 ...
- 基于 Quartz 开发企业级任务调度应用
原文地址:http://www.ibm.com/developerworks/cn/opensource/os-cn-quartz/index.html Quartz 基本概念及原理 Quartz S ...
随机推荐
- PHPExcel之蛋疼
限制了内存,处理个80+K的表就会GG,所以还要尽量删空行,选中某一行如A3,ctrl+shift+↓然后ctrl+小键盘的减号最后需要ctrl+s
- mysql 分表实现方法详解
如果你需要进行mysql分表了我们就证明你数据库比较大了,就是把一张表分成N多个小表,分表后,单表的并发能力提高了,磁盘I/O性能也提高了.并发能力为什么提高了呢,因为查寻一次所花的时间变短了,如果出 ...
- string类应用举例
* Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhello ...
- 前端每日实战:152# 视频演示如何用纯 CSS 创作一个圆点错觉效果
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/gBwzKR 可交互视频 此视频是可 ...
- 前端每日实战:74# 视频演示如何用纯 CSS 创作一台 MacBook Pro
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/MXNNyR 可交互视频 此视频是可 ...
- 登录页面判断session退出登录清空session
1 2 3 4 5 6 if(empty($_POST)){ $_SESSION = array(); if(isset($_COOKIE[session_name()])){ ...
- ubunto 免输入密码 登录 putty ssh-keygen
交互式密码不安全,现在改用 ssh 证书方式,不用输入密码使用公钥证书登录. 方法1, 此方法,仅试用于,仅使用win putty 来连接方式使用,如果双方都是 linux 如 rsync 同步等时, ...
- Spark入门(二)--如何用Idea运行我们的Spark项目
用Idea搭建我们的Spark环境 用IDEA搭建我们的环境有很多好处,其中最大的好处,就是我们甚至可以在工程当中直接运行.调试我们的代码,在控制台输出我们的结果.或者可以逐行跟踪代码,了解spark ...
- go入门二
一.流程控制 1.选择结构 if-else: package main import ( "io/ioutil" "fmt" ) func main(){ co ...
- 将config从内部移动到外部 3部曲
1 创建 public/config.js /* eslint-disable no-shadow-restricted-names */ // eslint-disable-next-line no ...