Skip to content

GalaxySciTech/java-wallet

Repository files navigation

Java-Wallet

Production-grade multi-chain cryptocurrency wallet backend

Build Status Java 17 Kotlin Spring Boot Gradle License

中文文档 · Telegram · Issues · Quick Start


Introduction

Java-Wallet is a battle-tested multi-chain cryptocurrency wallet backend that has safely managed hundreds of millions of dollars in transactions in production. It provides blockchain address generation, deposit detection, withdrawal processing, and automated fund sweeping across all major public chains.

The core signing component tokencore performs all cryptographic operations locally — private keys never leave the process.

Supported Chains

Chain Native Token
Bitcoin BTC OMNI (USDT)
Ethereum ETH ERC-20
Tron TRX TRC-20
Bitcoin Cash BCH
Bitcoin SV BSV
Litecoin LTC
Dogecoin DOGE
Dash DASH

Architecture

                         ┌──────────────────────────────────────────────┐
                         │               Client / Admin UI              │
                         └──────────────────┬───────────────────────────┘
                                            │  HTTP
                ┌───────────────────────────┼───────────────────────────┐
                │                           │                           │
        ┌───────▼────────┐         ┌────────▼────────┐         ┌───────▼────────┐
        │  wallet-webapi  │         │   wallet-task    │         │   wallet-hsm    │
        │   REST API      │         │  Scheduled Jobs  │         │  Key Management │
        │   :10001        │         │  :10033          │         │  :10888         │
        └───────┬─────────┘         └────────┬─────────┘         └───────┬─────────┘
                │                            │                           │
                └────────────┬───────────────┘                           │
                             │                                           │
                     ┌───────▼────────┐                          ┌───────▼────────┐
                     │  wallet-common  │                          │  wallet-entity  │
                     │  Business Logic │◄─────────────────────────│  JPA / Data     │
                     └──┬─────┬─────┬─┘                          └───────┬─────────┘
                        │     │     │                                     │
                   ┌────▼┐ ┌──▼──┐ ┌▼──────┐                     ┌───────▼────────┐
                   │ RPC │ │ MQ  │ │xxl-job│                     │    MySQL 8     │
                   │Nodes│ │     │ │       │                     └────────────────┘
                   └─────┘ └─────┘ └───────┘
Module Description
wallet-webapi REST API — address generation, deposits & withdrawals, admin dashboard, Swagger docs
wallet-task Scheduled jobs — block syncing, deposit detection, auto-sweeping, fee top-up
wallet-hsm Key management — HD wallet derivation, offline signing, key import/export
wallet-common Shared layer — business logic, RPC clients, caching, utilities
wallet-entity Data layer — JPA entities, repositories, QueryDSL

Tech Stack

Category Technology
Language Kotlin 1.9 + Java 17
Framework Spring Boot 3.1.3
Build Gradle 8.5
Database MySQL 8.0 · Spring Data JPA · HikariCP
Cache Caffeine
Message Queue RabbitMQ (Spring AMQP)
Task Scheduling xxl-job 2.4.0
Blockchain tokencore 1.3.0 · web3j 4.10.3 · bitcoin-rpc-client 1.2.4
API Docs SpringDoc OpenAPI 2.3 (Swagger UI)
Container Docker multi-stage · docker-compose
CI/CD GitHub Actions · GitLab CI

Quick Start

Prerequisites

  • JDK 17+
  • MySQL 8.0+
  • RabbitMQ 3.x (required by wallet-task)

Docker Compose (Recommended)

git clone https://github.com/GalaxySciTech/java-wallet.git
cd java-wallet

cp .env.example .env   # edit with your settings
docker-compose up -d

Once running:

Manual Setup

# 1. Set environment variables (see .env.example for full list)
export DB_URL="jdbc:mysql://localhost:3306/wallet_db?useSSL=false&characterEncoding=UTF-8"
export DB_USERNAME=root
export DB_PASSWORD=your_password

# 2. Build
chmod +x gradlew
./gradlew build -x test

# 3. Run each service in a separate terminal
./gradlew :wallet-webapi:bootRun
./gradlew :wallet-task:bootRun
./gradlew :wallet-hsm:bootRun

Configuration

All sensitive values are injected via environment variables — nothing is hardcoded. See .env.example for the full list.

Variable Service Description
DB_URL webapi, task MySQL JDBC connection URL
DB_USERNAME / DB_PASSWORD webapi, task Database credentials
RABBITMQ_HOST / RABBITMQ_PASSWORD task RabbitMQ connection
KEYSTORE_DIR / KEYSTORE_PASSWORD hsm Keystore path and password
XXL_JOB_ADMIN_ADDRESSES task xxl-job scheduler address
WALLET_CRYPTO_PUSH_KEY webapi AES key for deposit push notifications

API Reference

Wallet API /wallet/v1

Method Endpoint Description
POST /get_address Generate new blockchain addresses in batch
POST /send Withdraw (specify from or auto-select from hot wallet)
POST /create_hot_address Create a hot wallet or gas wallet
POST /export_wallet Export private key or mnemonic
POST /import_wallet Import private key or mnemonic
GET /get_hot_address Query hot wallet addresses
GET /check_address Check if address private key exists
GET /get_transaction Query deposit / withdrawal / sweep records
GET /get_new_deposit Fetch new deposits (marked as read after fetch)
GET /check_tx_status Check on-chain transaction status

Blockchain API /block_chain/v1

Method Endpoint Description
GET /get_transaction Query on-chain transaction details
GET /get_address_balance Query on-chain address balance
GET /get_recommend_fee Get recommended fees (slow / medium / fast)
GET /calculation_fee Calculate transaction fee
GET /get_support_token List all supported tokens

Admin API /admin

Method Endpoint Description
POST /login Admin login
GET /get_dashboard Dashboard overview
GET /get_addr_list Address list
GET /get_token_list Token list
POST /edit_token Edit token configuration
POST /edit_config Edit system configuration
POST /edit_white Edit IP whitelist

Full interactive API docs are available at Swagger UI after starting the service.

Reliability

Java-Wallet has been running in production and has safely processed hundreds of millions of dollars in transactions. It is built for high reliability, scalability, and real-world utility.

Contact

For technical support, business inquiries, or deployment consulting:

@GalaxySciTech on Telegram

Disclaimer

Any commercial use of this source code is at your own risk. The authors assume no liability for any losses incurred by yourself or others.

License

This project is provided as-is. See the repository for license details.

About

The business backend is a more powerful business system constructed based on the functional components of the digital currency, which can obtain different public chain blockchain addresses at any time, and supports (BTC, OMNI, ETH, ERC20, TRX, TRC20) , BCH, BSV, DOGE, DASH, LTC) deposit and withdrawal functions

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors