SwapChan
Never holds your keys · your wallet signs
blocktools CLI

Qtum

Qtum uses Bitcoin's key format with its own version bytes (Q..., M..., qc1...) and coin type 2301. Its P2PKH transactions are Bitcoin-legacy: 5 mainnet…

Qtum uses Bitcoin's key format with its own version bytes (Q..., M..., qc1...) and coin type 2301. Its P2PKH transactions are Bitcoin-legacy: 5 mainnet txs from qtum.info (crates/tx/tests/qtum.rs) re-hash to their txids, every input signature verifies under the legacy sighash, and the input addresses re-derive.

./blocktools run 'seed-repair < /in/seed.txt | seed-to-master | derive --chain qtum --count 1'

The front door lists the addresses and stops (exit 3), pointing at tx-build:

recipes/recover.sh /in/key.hex - --chain qtum

Sweep (offline)

Fetch the UTXOs for your addresses from qtum.info (https://qtum.info/api/address/ADDR/utxo) into a JSON list ({"txid","vout","amount","address"} per line), then build, read, and verify the unsigned sweep:

./blocktools run 'tx-build --chain qtum --utxos /in/u-qtum.json --to QMDLoKJqTv5YNaDbHuuEQPwmTFaiaKHJVp --sweep --fee-rate 700 | tx-decode --chain qtum'


./blocktools run 'tx-build --chain qtum --utxos /in/u-qtum.json --to QMDLoKJqTv5YNaDbHuuEQPwmTFaiaKHJVp --sweep --fee-rate 700 | tx-verify --chain qtum --expect-to QMDLoKJqTv5YNaDbHuuEQPwmTFaiaKHJVp --max-fee 1000000'

Sign with tx-sign --chain qtum (the default cap is Qtum's per-chain cap, docs/CHAINS.md "Default fee cap"; pass --max-fee to set your own; the same cap applies to tx-verify and tx-sign; TTY confirmation, as in goal-sweep.md) and broadcast the hex yourself (qtum.info, or sendrawtransaction in Qtum Core). Qtum's fee floor is high: the fee warning uses a measured median of 700 sat/vB. Not covered: contract (OP_CALL/OP_CREATE) outputs, P2PK inputs. No Qtum tx built here (unmeasured) has been broadcast.

Qtum wallet.dat (Qtum Core is a Bitcoin Core fork): input-wallet-dat.md, then key-to-addresses --chain qtum.