Skip to content

michaelAndFa/defi-block-chain

Repository files navigation

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 服务模块

核心功能

1. 多链支持

支持以下主流区块链网络(包含主网和测试网):

区块链 主网代码 测试网代码 说明
以太坊 ETH tETH Sepolia 测试网
币安智能链 BNB tBNB BSC 主网和测试网
波场 TRON tTRON TRON 主网和测试网
树图链 CFX tCFX Conflux 主网和测试网

2. 账户管理 (AccountInterface)

  • 创建账户: 生成区块链地址和密钥对
  • 余额查询: 查询地址的主币和代币余额

3. 交易服务 (TradeInterface)

  • 转账预创建: 构建未签名的转账交易
  • 转账提交: 广播已签名的交易到区块链网络
  • 交易查询: 根据交易哈希查询交易详情
  • 交易列表: 查询地址的交易历史记录
  • 区块高度: 获取当前区块链的最新区块高度

4. 代币服务 (HyTokenInterface)

支持 ERC20/TRC20 等标准代币的完整生命周期管理:

发行管理

  • 预发行: 构建代币发行交易
  • 发行提交: 部署代币合约到区块链

增发与销毁

  • 预增发: 构建代币增发交易
  • 增发提交: 执行代币增发
  • 预销毁: 构建代币销毁交易
  • 销毁提交: 执行代币销毁

转账操作

  • 预转账: 构建代币转账交易
  • 转账提交: 执行代币转账

授权管理

  • 预授权: 构建代币授权交易
  • 授权提交: 执行代币授权给第三方

查询功能

  • 余额查询: 查询地址的代币余额
  • 授权额度查询: 查询授权额度
  • 代币信息查询: 获取代币名称、符号、精度等
  • 总供应量查询: 查询代币总发行量
  • 交易列表: 查询代币交易历史

5. NFT 服务 (HynftInterface)

支持 ERC721/TRC721 等标准 NFT 的完整管理:

发行与铸造

  • 预发行: 构建 NFT 合约部署交易
  • 发行提交: 部署 NFT 合约
  • 预铸造: 构建 NFT 铸造交易
  • 铸造提交: 铸造新的 NFT

转让与销毁

  • 预转让: 构建 NFT 转让交易
  • 转让提交: 执行 NFT 转让
  • 预销毁: 构建 NFT 销毁交易
  • 销毁提交: 执行 NFT 销毁

查询功能

  • 余额查询: 查询地址拥有的 NFT 数量
  • 交易列表: 查询 NFT 交易历史

6. DEX 集成服务 (DexApiInterface)

集成主流去中心化交易所 API,提供代币兑换能力:

  • 支持链查询: 获取 DEX 支持的区块链列表
  • 支持代币查询: 获取可交易的代币列表
  • 询价: 获取代币兑换的实时报价
  • 兑换: 执行代币兑换交易
  • 市场价格: 获取代币当前市场价格
  • K 线数据: 获取代币价格的历史 K 线图数据

支持的 DEX 平台

  • OKX DEX
  • 币安 DEX API
  • HashKey API

设计特点

1. 统一接口设计

通过接口抽象,为不同区块链提供统一的调用方式。业务层无需关心底层链的实现差异,只需调用标准接口即可。

2. 两步式交易模式

采用"预创建 + 提交"的两步式交易模式:

  • 预创建阶段: 构建未签名的交易数据,返回给客户端
  • 签名: 客户端使用私钥进行本地签名(私钥不上传服务器,保证安全)
  • 提交阶段: 接收签名后的交易并广播到区块链网络

这种设计既保证了安全性(私钥不离开客户端),又提供了灵活性(支持各种签名方式)。

3. 链码路由机制

通过 chainCode() 方法实现动态路由,根据请求中的链码自动选择对应的服务实现,支持多链并存。

4. 模块化架构

  • API 模块: 定义标准接口和数据模型,作为各模块的契约
  • Common 模块: 封装各链的通用逻辑和工具类
  • Server 模块: 各链的服务实现,注入配置后即可使用
  • Channel 模块: 第三方服务集成,与核心链服务解耦

5. 可扩展性

  • 新增区块链支持:实现对应接口并注册服务即可
  • 新增功能:在接口层定义,各链分别实现
  • 新增 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

API 调用示例

创建账户

// 请求参数
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);

技术亮点

  1. 多链统一抽象: 通过接口设计实现多条区块链的统一访问
  2. 安全性设计: 私钥不上传服务器,交易在客户端签名
  3. 完整的代币生命周期: 从发行、增发、转账到销毁的全流程支持
  4. NFT 全功能支持: 涵盖 NFT 的发行、铸造、转让、销毁
  5. DEX 集成: 集成主流 DEX API,提供代币兑换和行情查询
  6. 微服务架构: 基于 Spring Cloud 构建,支持服务注册、配置中心等
  7. 模块化设计: 清晰的模块划分,便于维护和扩展

应用场景

  • 数字钱包: 提供多链资产管理能力
  • DeFi 平台: 支持代币发行、交易、质押等 DeFi 业务
  • NFT 平台: 提供 NFT 铸造、交易、展示等功能
  • 交易所: 支持多链充提币和代币兑换
  • 区块链浏览器: 查询交易、地址、代币信息等
  • 企业级区块链应用: 为企业提供标准化的区块链服务接口

贡献指南

欢迎提交 Issue 和 Pull Request 来帮助改进项目。

许可证

[添加许可证信息]

联系方式

[添加联系方式]

About

web3去中心化项目

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors