# @dgb-wallet/rpc JSON-RPC client for DigiByte Core, calling only the read-only + broadcast methods a wallet needs. Companion to [`ops/setup.sh`](../../ops/setup.sh), which provisions the matching pruned VPS backend. ## API - `new RpcClient({ url, username, password, timeoutMs })` - `getBlockchainInfo(client)` — chain tip, sync progress, prune status - `scanTxOutSet(client, descriptors)` — walk UTXO set for descriptors/xpubs; returns matching UTXOs - `sendRawTransaction(client, hex)` — broadcast; returns txid or throws - `estimateSmartFee(client, confTarget)` — DGB/kB fee estimate - `descriptorForAccount(purpose, xpub, change, rangeEnd)` — build BIP44/49/84/86 descriptors with checksums - `descriptorChecksum(desc)`, `withChecksum(desc)` — BIP380 checksum helpers ## Demo — real recovery scan via your VPS Provision the backend once with [`../../ops/setup.sh`](../../ops/setup.sh) (turnkey for a fresh Ubuntu/Debian VPS). Then: ```bash cd "D:\Dev\SilentCode\Digibyte" npm install # first time only npm run build -w @dgb-wallet/core export DGB_RPC_URL=https://your-domain.example.com/ export DGB_RPC_USER=dgb_... export DGB_RPC_PASSWORD=... npm run demo -w @dgb-wallet/rpc # or with a specific seed: npm run demo -w @dgb-wallet/rpc -- "word1 word2 ... word12" ``` Scans 3 accounts × 4 descriptor paths × 2 change/receive × 101 addresses each = **2,424 addresses in one RPC call**, typically 5–15 seconds on a synced pruned node. Prints every UTXO found with its descriptor path, ready to feed into `@dgb-wallet/psbt` for spending. ## Descriptor checksums DGB Core requires descriptors passed to `scantxoutset` to carry a BIP380 checksum. `withChecksum(desc)` and `descriptorForAccount(...)` compute it locally so we don't need a round-trip to `getdescriptorinfo`. ## Notes - Uses `fetch` — Node 18+, React Native, and browser extensions all work. - Future: swap `fetch` for `@dgb-wallet/net`'s `NetProvider` so requests can go through Tor by default (per RESEARCH.md §10.7b). - Wallet-side is stateless; the VPS holds the chain state. Client keys never leave the wallet.