Bitcoin
The Vault supports Bitcoin with full deposit and withdrawal functionality. Bitcoin uses the UTXO (Unspent Transaction Output) model, which differs fundamentally from the account-based model used by Ethereum and TRON.
Address Types
The Vault generates P2WPKH (native SegWit v0) addresses for Bitcoin wallets:
| Type | Format | Script | Typical vByte Size (input) |
|---|---|---|---|
| P2WPKH (SegWit v0) | bc1q... | Native SegWit | ~68 vBytes |
Deposits from other address types (including legacy 1... and Taproot
bc1p... senders) are received normally — Bitcoin sends to whatever address you
provide. This section is about the address type the Vault derives for your own
wallet, which is P2WPKH.
Withdrawals can be sent to any valid Bitcoin destination address the network accepts (legacy, SegWit, or Taproot). Only the wallet’s own deposit/change addresses are fixed to P2WPKH.
UTXO Model
Unlike Ethereum’s account model, Bitcoin tracks ownership through a set of UTXOs. When a wallet receives Bitcoin, each incoming transaction creates one or more UTXOs held by the wallet. When spending, the wallet selects UTXOs to satisfy the output amount, and change is returned to a change address controlled by the same wallet.
The Vault manages the UTXO set for each Bitcoin wallet automatically:
- UTXO selection accumulates the wallet’s UTXOs (smallest first) until the output amount plus fee is covered.
- Change is returned to the wallet’s own sending address as a change output (remainder minus the miner fee; dropped if it would be dust).
Fee Model
Bitcoin fees are denominated in satoshis per virtual byte (sat/vByte). The total fee for a transaction is: fee = feeRate × txVBytes.
Transaction virtual size depends on:
- Number of inputs (each UTXO selected contributes ~68 vBytes for P2WPKH)
- Number of outputs (destination + optional change: ~31 vBytes each for P2WPKH)
- Overhead (~11 vBytes)
The Vault reads the current fee rate from the Bitcoin node’s estimatesmartfee
RPC (targeting a small number of blocks) with a sat/vByte floor, so transactions
are priced to confirm promptly.
Deposit Detection
Bitcoin deposits are detected by the Bitcoin indexer, which polls for new blocks at a configurable interval (default: 5 seconds). Each block is fetched fully decoded (getblock verbosity 3), and every output’s address is matched against the deposit addresses of active wallets.
Confirmation Policy
Default confirmation threshold: 1 block (~10 minutes at average 10-minute block times).
Bitcoin’s probabilistic finality means that more confirmations provide stronger security. Recommended thresholds by transaction value:
| Transaction Value | Recommended Confirmations |
|---|---|
| < $1,000 | 1 |
| $1,000 – $100,000 | 3 |
| > $100,000 | 6 |
Configure per-wallet or globally:
walletService:
chains:
bitcoin:
confirmations: 1SegWit Signing
The Vault spends its P2WPKH inputs using BIP143 SegWit v0 signing serialisation. The threshold ECDSA signature is assembled by the MPC signers and is indistinguishable on-chain from a single-key SegWit spend.