DeFi 区块链服务平台
本项目是一个基于 Java 的多链区块链服务平台,为 DeFi 应用提供统一的区块链交互接口。支持以太坊(ETH)、币安智能链(BSC)、波场(TRON)、树图链(Conflux)等多条主流公链,提供账户管理、代币操作、NFT 管理、交易查询等完整的区块链服务能力。
- 开发语言: Java 1.8
- 核心框架:
- Spring Boot 2.3.12.RELEASE
- Spring Cloud Hoxton.SR12
- Spring Cloud Alibaba 2.2.7.RELEASE
- 关键依赖:
- Lombok - 简化代码
- Apache Commons Lang3 - 工具类库
- OkHttp 4.5.0 - HTTP 客户端
- Bouncy Castle 1.67 - 加密库
- Web3j - 以太坊 Java 客户端
本项目采用 Maven 多模块架构,模块划分清晰,职责明确:
defi-block-chain/
├── block-chain-api/ # API 接口定义模块
│ ├── constant/ # 常量定义
│ ├── enums/ # 枚举定义(链码、交易状态等)
│ ├── interfaces/ # 核心接口定义
│ └── model/ # 数据模型
│ ├── account/ # 账户相关模型
│ ├── token/ # 代币相关模型
│ ├── nft/ # NFT 相关模型
│ ├── trade/ # 交易相关模型
│ └── dexApi/ # DEX API 模型
│
├── block-chain-service/ # 服务入口模块
│ ├── controller/ # REST API 控制器
│ └── Application.java # 主启动类
│
├── block-chain-channel/ # 三方渠道集成模块
│ ├── interfaces/ # 渠道接口定义
│ ├── okx/ # OKX DEX 集成
│ └── service/ # 渠道服务实现(币安、HashKey 等)
│
├── eth-block-chain-common/ # ETH 通用模块
│ ├── contract/ # 智能合约交互
│ ├── service/ # ETH 服务实现
│ └── utils/ # ETH 工具类
│
├── eth-block-chain-server/ # ETH 服务模块
├── bsc-block-chain-server/ # BSC 服务模块
├── cfx-block-chain-server/ # Conflux 服务模块
│
├── tron-block-chain-common/ # TRON 通用模块
│ ├── contract/ # TRON 合约交互
│ ├── service/ # TRON 服务实现
│ └── utils/ # TRON 工具类
│
└── tron-block-chain-server/ # TRON 服务模块
支持以下主流区块链网络(包含主网和测试网):
| 区块链 | 主网代码 | 测试网代码 | 说明 |
|---|---|---|---|
| 以太坊 | ETH | tETH | Sepolia 测试网 |
| 币安智能链 | BNB | tBNB | BSC 主网和测试网 |
| 波场 | TRON | tTRON | TRON 主网和测试网 |
| 树图链 | CFX | tCFX | Conflux 主网和测试网 |
- 创建账户: 生成区块链地址和密钥对
- 余额查询: 查询地址的主币和代币余额
- 转账预创建: 构建未签名的转账交易
- 转账提交: 广播已签名的交易到区块链网络
- 交易查询: 根据交易哈希查询交易详情
- 交易列表: 查询地址的交易历史记录
- 区块高度: 获取当前区块链的最新区块高度
支持 ERC20/TRC20 等标准代币的完整生命周期管理:
- 预发行: 构建代币发行交易
- 发行提交: 部署代币合约到区块链
- 预增发: 构建代币增发交易
- 增发提交: 执行代币增发
- 预销毁: 构建代币销毁交易
- 销毁提交: 执行代币销毁
- 预转账: 构建代币转账交易
- 转账提交: 执行代币转账
- 预授权: 构建代币授权交易
- 授权提交: 执行代币授权给第三方
- 余额查询: 查询地址的代币余额
- 授权额度查询: 查询授权额度
- 代币信息查询: 获取代币名称、符号、精度等
- 总供应量查询: 查询代币总发行量
- 交易列表: 查询代币交易历史
支持 ERC721/TRC721 等标准 NFT 的完整管理:
- 预发行: 构建 NFT 合约部署交易
- 发行提交: 部署 NFT 合约
- 预铸造: 构建 NFT 铸造交易
- 铸造提交: 铸造新的 NFT
- 预转让: 构建 NFT 转让交易
- 转让提交: 执行 NFT 转让
- 预销毁: 构建 NFT 销毁交易
- 销毁提交: 执行 NFT 销毁
- 余额查询: 查询地址拥有的 NFT 数量
- 交易列表: 查询 NFT 交易历史
集成主流去中心化交易所 API,提供代币兑换能力:
- 支持链查询: 获取 DEX 支持的区块链列表
- 支持代币查询: 获取可交易的代币列表
- 询价: 获取代币兑换的实时报价
- 兑换: 执行代币兑换交易
- 市场价格: 获取代币当前市场价格
- K 线数据: 获取代币价格的历史 K 线图数据
- OKX DEX
- 币安 DEX API
- HashKey API
通过接口抽象,为不同区块链提供统一的调用方式。业务层无需关心底层链的实现差异,只需调用标准接口即可。
采用"预创建 + 提交"的两步式交易模式:
- 预创建阶段: 构建未签名的交易数据,返回给客户端
- 签名: 客户端使用私钥进行本地签名(私钥不上传服务器,保证安全)
- 提交阶段: 接收签名后的交易并广播到区块链网络
这种设计既保证了安全性(私钥不离开客户端),又提供了灵活性(支持各种签名方式)。
通过 chainCode() 方法实现动态路由,根据请求中的链码自动选择对应的服务实现,支持多链并存。
- API 模块: 定义标准接口和数据模型,作为各模块的契约
- Common 模块: 封装各链的通用逻辑和工具类
- Server 模块: 各链的服务实现,注入配置后即可使用
- Channel 模块: 第三方服务集成,与核心链服务解耦
- 新增区块链支持:实现对应接口并注册服务即可
- 新增功能:在接口层定义,各链分别实现
- 新增 DEX 集成:实现 DexApiInterface 接口
- JDK 1.8+
- Maven 3.6+
- 区块链节点 RPC 访问地址(或使用公共节点)
# 克隆项目
git clone <repository-url>
cd defi-block-chain
# 编译打包
mvn clean package在 block-chain-service/src/main/resources/ 目录下配置相应环境的配置文件:
bootstrap-dev.yml- 开发环境配置bootstrap-test.yml- 测试环境配置bootstrap.yml- 通用配置
需要配置的主要内容:
- 各区块链的 RPC 节点地址
- Gas 价格和限制
- DEX API 密钥(如需使用 DEX 功能)
# 启动服务
java -jar block-chain-service/target/block-chain-service-1.0-SNAPSHOT.jar
# 或使用 Maven 启动
cd block-chain-service
mvn spring-boot:run// 请求参数
ChainAddressGenerateRequest request = new ChainAddressGenerateRequest();
request.setChainCode("ETH");
request.setCount(1);
// 调用接口
InnerCallResponse<ListBizModel<ChainAddressGenerateResponse>> response =
accountService.create(request);// 1. 预创建交易
HytokenTransferPrecreateRequest preRequest = new HytokenTransferPrecreateRequest();
preRequest.setChainCode("ETH");
preRequest.setContractAddress("0x...");
preRequest.setFrom("0x...");
preRequest.setTo("0x...");
preRequest.setValue("1.0");
InnerCallResponse<BlockPrecreateResponse> preResponse =
tokenService.preTransfer(preRequest);
// 2. 客户端签名(略)
// 3. 提交交易
BlockBroadcastRequest broadcastRequest = new BlockBroadcastRequest();
broadcastRequest.setChainCode("ETH");
broadcastRequest.setSignedTransaction(signedTx);
InnerCallResponse<BlockTxResponse> txResponse =
tokenService.transfer(broadcastRequest);- 多链统一抽象: 通过接口设计实现多条区块链的统一访问
- 安全性设计: 私钥不上传服务器,交易在客户端签名
- 完整的代币生命周期: 从发行、增发、转账到销毁的全流程支持
- NFT 全功能支持: 涵盖 NFT 的发行、铸造、转让、销毁
- DEX 集成: 集成主流 DEX API,提供代币兑换和行情查询
- 微服务架构: 基于 Spring Cloud 构建,支持服务注册、配置中心等
- 模块化设计: 清晰的模块划分,便于维护和扩展
- 数字钱包: 提供多链资产管理能力
- DeFi 平台: 支持代币发行、交易、质押等 DeFi 业务
- NFT 平台: 提供 NFT 铸造、交易、展示等功能
- 交易所: 支持多链充提币和代币兑换
- 区块链浏览器: 查询交易、地址、代币信息等
- 企业级区块链应用: 为企业提供标准化的区块链服务接口
欢迎提交 Issue 和 Pull Request 来帮助改进项目。
[添加许可证信息]
[添加联系方式]