π‘ Overview
DV Processing is the blockchain engine behind the DV.net ecosystem β a high-performance, multi-chain service that creates wallets, executes transfers, and tracks on-chain activity across 11 blockchains. Written in Go, it exposes a ConnectRPC/gRPC API and is designed to run on your own infrastructure.
π Non-custodial β private keys and mnemonics never leave your server
β‘ High-performance β ConnectRPC/gRPC, PostgreSQL, River queue
π Multi-chain β 11 blockchains: EVM, UTXO and Tron
π§± Modular β FSM workflows, clean service layer, event-driven architecture
β¨ Highlights
π― Blockchain capabilities
- β
Hot, cold, and processing wallet management per owner
- β
Transfer processing with per-chain finite state machines
- β
Tron resource delegation (energy & bandwidth) and activation contracts
- β
EVM gas price limits and fee control per network
- β
Bitcoin-family UTXO management with configurable fee-per-byte
- β
Block scanning and explorer proxy integration
π§ Technical features
- β
ConnectRPC/gRPC API with request signing and authentication interceptors
- β
Background job processing via River queue
- β
Webhook delivery with retries, cleanup workers, and configurable TTL
- β
PostgreSQL storage with type-safe queries (
sqlc + pgxgen)
- β
Protobuf-first API design with
buf code generation
- β
Systemd deployment out of the box
π§ Architecture at a Glance
cmd/ CLI entrypoints (server, webhooks)
internal/
handler/ ConnectRPC request handlers
services/ Business logic (clients, owners, wallets, transfers, webhooks)
fsm/ Finite state machines per blockchain (tron, evm, btc, ltc, bch, doge)
workflow/ Workflow engine with stages, steps, and retries
store/ PostgreSQL repositories (sqlc-generated)
dispatcher/ Event dispatching
taskmanager/ Background jobs (River)
eproxy/ Explorer proxy client
rmanager/ Resource manager (Tron delegation)
watcher/ Blockchain watcher integration
tscanner/ Transfer scanner
escanner/ Explorer scanner
pkg/
walletsdk/ Blockchain wallet SDKs (btc, ltc, bch, doge, evm, tron)
postgres/ Database connection management
encryption/ Encryption utilities
retry/ Retry policies
schema/ Protobuf service definitions
sql/ Migrations and SQL queries
artifacts/ Deployment configs (systemd, scripts)
π Getting Started
Build from source
git clone https://github.com/dv-net/dv-processing.git
cd dv-processing
make build
The binary will appear at bin/processing.
Run locally
cp config.template.yaml config.yaml
# edit config.yaml with your database and node settings
make migrate up
make start
βΉοΈ Full deployment guide and Docker Compose setup are available in the dv-bundle repo and at https://docs.dv.net.
π CLI Commands
dv-processing start β start the gRPC/ConnectRPC server.
dv-processing migrate β run database migrations (up / down / drop).
dv-processing blockchain β blockchain tools (e.g. tron reclaim-resource).
dv-processing config β validate config, generate envs and flags.
dv-processing utils β utilities (systemd install, readme generation).
dv-processing version β print the current version.
π‘ Example β reclaim Tron resources
./dv-processing blockchain tron reclaim-resource \
-pa TQ6DkBmxz3Zk7neh8mwmmkfJsVjrE9wwjY \
-da TAoG3QdbgZ7saGBHiXVHRgdNJVpwUGqZZh \
-type bandwidth
π§ͺ Development & Testing
π¦ Install dev tools
make install-dev-tools
βοΈ Code generation
make gen # run all generators (sql, proto, envs, abi)
make gensql # regenerate sqlc queries
make genproto # regenerate protobuf & ConnectRPC stubs
make genenvs # regenerate environment variable docs
π Linting & formatting
make lint
make fmt
π Live reload
make watch # uses air for hot reloading
π Configuration
The service is configured via config.yaml (see config.template.yaml) and/or environment variables.
All environment variables are prefixed with PROCESSING_ and follow this structure:
|
Category |
Prefix |
Examples |
| π |
Logging |
PROCESSING_LOG_* |
PROCESSING_LOG_LEVEL, PROCESSING_LOG_FORMAT |
| π |
Ops / Monitoring |
PROCESSING_OPS_* |
PROCESSING_OPS_METRICS_ENABLED, PROCESSING_OPS_HEALTHY_ENABLED |
| ποΈ |
Database |
PROCESSING_POSTGRES_* |
PROCESSING_POSTGRES_ADDR, PROCESSING_POSTGRES_DB_NAME |
| π |
gRPC Server |
PROCESSING_GRPC_* |
PROCESSING_GRPC_ADDR, PROCESSING_GRPC_REFLECT_ENABLED |
| βοΈ |
Blockchains |
PROCESSING_BLOCKCHAIN_* |
PROCESSING_BLOCKCHAIN_TRON_ENABLED |
| π |
Webhooks |
PROCESSING_WEBHOOKS_* |
PROCESSING_WEBHOOKS_SENDER_ENABLED |
| πΈ |
Transfers |
PROCESSING_TRANSFERS_* |
PROCESSING_TRANSFERS_ENABLED |
βΉοΈ Full environment variable reference is auto-generated via make genenvs.
π¦ Deployment
Systemd
./dv-processing utils systemd
This generates and installs a systemd unit file for production deployments on Linux.
π Security
- π Non-custodial β mnemonics and private keys are encrypted at rest and never leave the server.
- βοΈ Request signing β all API calls are authenticated via signature-based interceptors.
- π‘οΈ Two-factor authentication β TOTP-based 2FA for sensitive owner operations.
- π Encrypted storage β mnemonics and OTP secrets are encrypted in the database.
π‘ API Services
The ConnectRPC API exposes the following services on port 9000:
- π€ ClientService β merchant/client management and callback URLs
- π OwnerService β owner creation, mnemonic management, 2FA
- π³ WalletService β hot, cold, and processing wallet operations
- πΈ TransferService β transfer creation and status tracking
- βοΈ SystemService β system info, version checking, logs
Proto definitions are located in schema/processing/ and compiled with buf.
π Donations
Support the development of the project with crypto:
USDT (Tron) β TCB4bYYN5x1z9Z4bBZ7p3XxcMwdtCfmNdN
Bitcoin β bc1qemvhkgzr4r7ksgxl8lv0lw7mnnthfc6990v3c2
TRON (TRX) β TCB4bYYN5x1z9Z4bBZ7p3XxcMwdtCfmNdN
Ethereum β 0xf1e4c7b968a20aae891cc18b1d5836b806691d47
π Other networks and tokens (BNB Chain, Arbitrum, Polygon, Litecoin, Dogecoin, Bitcoin Cash, etc.) are available at payment form