Wallets must be created inside Docker containers to avoid changes on the host system.
The backend Docker image includes:
- Bitcoin Core CLI v31.0.0
- Litecoin Core CLI v0.21.4
- Solana CLI v1.18.25
Since we use Tatum.io free tier (testnet/devnet), wallets are managed via their API:
- Bitcoin Testnet: https://bitcoin-testnet.gateway.tatum.io
- Litecoin Testnet: https://litecoin-testnet.gateway.tatum.io
- Solana Devnet: https://solana-devnet.gateway.tatum.io
API Key: t-69d3352674917a27eae79ef1-59b72b2e09314777b0c96273 (Testnet & Deactivated)
The CLI cannot directly connect to Tatum.io (it requires JSON-RPC authentication). Instead, use Tatum API to generate HD wallet:
# Inside backend container
docker exec -it crypto-processing-services-backend-1 bash# Create HD Wallet
curl -X GET https://api.tatum.io/v3/bitcoin/wallet \
-H "x-api-key: t-69d3352674917a27eae79ef1-59b72b2e09314777b0c96273"
# Generate deposit address from xpub
curl --request GET \
--url https://api.tatum.io/v3/bitcoin/address/xpub/0 \
--header 'accept: application/json' \
--header 'x-api-key: t-69d3352674917a27eae79ef1-59b72b2e09314777b0c96273'# Start bitcoind on testnet
bitcoind -testnet -rpcuser=user -rpcpassword=pass -rpcport=18332
# Create wallet
bitcoin-cli -testnet -rpcuser=user -rpcpassword=pass -rpcport=18332 createwallet "main_wallet"
# Get address
bitcoin-cli -testnet -rpcuser=user -rpcpassword=pass -rpcport=18332 getnewaddress "payment_addresses"# Create HD Wallet
curl -X GET https://api.tatum.io/v3/litecoin/wallet \
-H "x-api-key: t-69d3352674917a27eae79ef1-59b72b2e09314777b0c96273"
# Generate deposit address
curl --request GET \
--url https://api.tatum.io/v3/litecoin/address/xpub/0 \
--header 'accept: application/json' \
--header 'x-api-key: t-69d3352674917a27eae79ef1-59b72b2e09314777b0c96273'# Create HD Wallet
curl -X GET https://api.tatum.io/v3/solana/wallet \
-H "x-api-key: t-69d3352674917a27eae79ef1-59b72b2e09314777b0c96273"# Inside backend container
docker exec -it crypto-processing-services-backend-1 bash
# Generate new keypair
solana-keygen new -o /tmp/solana_wallet.json
# Get public key (this is your wallet address)
solana-keygen pubkey /tmp/solana_wallet.json
# Set devnet RPC
export PATH="/usr/local/bin:$PATH"
solana config set --url devnet
# Check balance
solana balance
# Airdrop for testing (devnet only)
solana airdrop 1After generating wallet addresses, set these in your environment:
# Bitcoin (testnet)
BTC_WALLET_ADDRESS=mzBc2HHNvS6REr8mTXUNRQPRs1EABgKf5r
# Litecoin (testnet)
LTC_WALLET_ADDRESS=nzN5jRS1CzK9VGBPQeY8G4ueC4Ybp2Ht2b
# Solana (devnet)
SOL_WALLET_ADDRESS=7aWgxBhMRuCjfQ9MgR9w7bS3TkZEZGVa3mRD4xA7LVe8# Check all CLI tools work
docker run --rm crypto-backend-test bash -c "bitcoin-cli -version && litecoin-cli -version && solana --version"