Crypto Wallet Integration
Slotty Labs supports deposits and withdrawals across 9 blockchain networks with native tokens and major stablecoins.
Supported Chains
| Chain | Family | Native Token | Decimals |
|---|---|---|---|
| Ethereum | EVM | ETH | 18 |
| BSC | EVM | BNB | 18 |
| Polygon | EVM | MATIC | 18 |
| Arbitrum | EVM | ETH | 18 |
| Base | EVM | ETH | 18 |
| Avalanche | EVM | AVAX | 18 |
| Solana | SVM | SOL | 9 |
| Bitcoin | UTXO | BTC | 8 |
| Tron | TVM | TRX | 6 |
Supported Tokens
| Token | Chain | Contract Address | Decimals |
|---|---|---|---|
| USDT | Ethereum | 0xdAC17F958D2ee523a2206206994597C13D831ec7 | 6 |
| USDC | Ethereum | 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 | 6 |
| USDT | BSC | 0x55d398326f99059fF775485246999027B3197955 | 18 |
| USDC | BSC | 0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d | 18 |
| USDT | Polygon | 0xc2132D05D31c914a87C6611C10748AEb04B58e8F | 6 |
| USDC | Polygon | 0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359 | 6 |
| USDT | Arbitrum | 0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9 | 6 |
| USDC | Arbitrum | 0xaf88d065e77c8cC2239327C5EDb3A432268e5831 | 6 |
| USDT | Base | 0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2 | 6 |
| USDC | Base | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 | 6 |
| USDT | Avalanche | 0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7 | 6 |
| USDC | Avalanche | 0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E | 6 |
| USDT | Solana | Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB | 6 |
| USDC | Solana | EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v | 6 |
| USDT | Tron | TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t | 6 |
| USDC | Tron | TEkxiTehnzSmSe2XqrBj4w32RUN966rdz8 | 6 |
EVM Chain Configurations
| Chain | Chain ID | Block Time | Confirmations | EIP-1559 |
|---|---|---|---|---|
| Ethereum | 1 | ~12s | 12 | ✅ |
| BSC | 56 | ~3s | 15 | ❌ |
| Polygon | 137 | ~2s | 64 | ✅ |
| Arbitrum | 42161 | ~0.25s | 1 | ✅ |
| Base | 8453 | ~2s | 1 | ✅ |
| Avalanche | 43114 | ~2s | 1 | ✅ |
Bitcoin Configuration
| Setting | Value |
|---|---|
| Address Type | native_segwit (bc1q...) |
| Standard Confirmations | 3 |
| High-Value Confirmations | 6 (≥ 0.1 BTC) |
| RBF | Enabled |
| Fee Estimation | Next-block target |
Solana Configuration
| Setting | Value |
|---|---|
| Commitment | finalized |
| Priority Fee | Dynamic (based on recent slots) |
| ATA Creation | Auto-created for token deposits |
| Transaction Version | v0 (versioned transactions) |
Architecture Overview
The crypto wallet system consists of these components:
- Deposit Scanners — Monitor each chain for incoming transactions to player deposit addresses
- Withdrawal Pipeline — Queue-based withdrawal processing with pre-flight checks
- Sweep Engine — Periodically sweeps deposits from player addresses to hot wallet
- Cold Wallet Management — Automated hot-to-cold transfers based on threshold rules
- Nonce Management — Sequential nonce tracking for EVM chains to prevent stuck transactions
- Gas Estimation — Real-time gas price estimation with configurable multipliers
- Reconciliation — Hourly balance reconciliation between on-chain and database states
- HD Key Derivation — BIP-44 / BIP-84 compliant key derivation for address generation
- KMS/HSM Adapters — GCP KMS and AWS KMS signing adapters are built in; the default deployment uses the encrypted software key store (
HSM_PROVIDER=software). Cloud KMS activates via configuration.
Deposit Flow
Player requests → Generate unique → Deposit scanner → Confirm after
deposit address deposit address detects incoming N blocks
(HD derived) transaction
→ Credit player → Sweep to
balance hot wallet- Generate Address — Each player gets a unique deposit address per chain, derived via HD key derivation
- Scan for Deposits — Chain-specific scanners poll for incoming transactions every block
- Confirm — Wait for required confirmations (chain-specific, see tables above)
- Credit Balance — Player balance is credited in the internal ledger
- Sweep — Deposits are periodically swept from player addresses to the platform hot wallet
Wallet webhooks
Wallet lifecycle webhooks (wallet.deposit_confirmed, wallet.withdrawal_completed) are on the roadmap — the deliverable webhook catalog currently covers round.completed, round.cancelled, and round.jackpot_won (see Webhooks). Deposit and withdrawal state is available today via the wallet API and the operator dashboard.
Withdrawal Flow
Player requests → Pre-flight → Queue → Key-store → Broadcast
withdrawal checks transaction sign to chain
→ Wait for
confirmations- Request — Player or operator initiates a withdrawal via API
- Pre-flight Checks — Verify sufficient balance, withdrawal limits, AML rules, cooling periods
- Queue — Transaction is queued for processing (batched for gas efficiency on EVM chains)
- Sign — Transaction is signed by the configured key provider (encrypted software key store by default; GCP/AWS KMS via
HSM_PROVIDER) - Broadcast — Signed transaction is broadcast to the blockchain network
- Confirm — Wait for required confirmations
- Status — withdrawal status is queryable via the wallet API and shown in the operator dashboard (wallet webhooks are on the roadmap)
WARNING
Withdrawal addresses must be whitelisted by the player before use. First-time withdrawals to a new address have a 24-hour cooling period by default.