blocktools CLI
Commands
44 man(1) pages: the 42 tools in bin/, the blocktools wrapper and recover.sh (man blocktools lists them). Summaries are the man pages' NAME lines.
Read wallets and derive addresses
Old wallet files and seed phrases in, public addresses out.
- classify
- unknown wallet material -> public JSON lines, one per item:
- recover.sh
- unknown wallet file to sweep, with human confirmation at each step
- seed-repair
- read a (possibly mistyped) BIP39 / Electrum 2.x phrase, print checksum-valid
- seed-to-master
- seed phrase (+ optional passphrase) -> BIP32 master key(s)
- derive
- master key -> child keys and addresses. A Swiss Army knife for "which path
- key-to-addresses
- one raw 32-byte private key per line -> addresses on every chain in the
- xpub-addresses
- extended public key (xpub/ypub/zpub/tpub..., stdin, one per line) -> watch-only · try it on SwapChan: Xpub to addresses
- keystore-open
- Ethereum Web3 Secret Storage v3 JSON + password -> address
- dat-read
- Bitcoin Core wallet.dat (legacy Berkeley DB or SQLite descriptor
- electrum-read
- Electrum wallet file (JSON, optionally field-encrypted, or BIE1 whole-file encrypted) -> its seed phrase
- armory-read
- Armory (PyBtcWallet) `.wallet` -> {"wif","chain_index"} per stored address
- multibit-read
- MultiBit Classic .key export, bitcoinj/MultiBit Classic `.wallet` protobuf, or
- blockchain-read
- Blockchain.com wallet.aes.json (v2/v3) + password -> wif / xprv lines
- bip38-open
- BIP38 encrypted private key + passphrase -> WIF. Spec vectors only for non-EC
- phrase-to-key
- pre-BIP39 brainwallet phrase -> raw 32-byte private key, one line per scheme
- pw-candidates
- expand a token list into password candidates (btcrecover-style, from public
- xmr-keys
- xmr-keys [--net main|stage|test] [--scan-out FILE [--restore-height N]] < seed
- zec-sapling
- zec-sapling [--count N] [--unified] [--viewkey-out FILE] < BIP39 mnemonic
Build, check, sign and send transactions
Unsigned transactions are built offline; a human types a code before signing and before broadcast.
- utxo-fetch
- utxo-fetch (HOST-SIDE, network): public chain data for addresses -> files tx-build reads
- tx-build
- build an UNSIGNED transaction offline from files and flags. Never touches the network
- tx-decode
- one transaction on stdin (hex/base64 raw tx, PSBT, EVM RLP, or a JSON line with
- tx-verify
- check a transaction (stdin; any format tx-decode reads) against what you expect
- tx-envelope
- common signing envelope (public half). Reads one JSON object from stdin
- tx-sign
- sign ONE transaction after a human reads its summary and types a code on /dev/tty
- tx-broadcast
- tx-broadcast (HOST-SIDE, network): send ONE already-signed transaction, after the human reads
- acct-tx
- account-model payments for xlm, algo and atom. Encoded transactions are base64 (each chain's native form)
- sol-tron-tx
- build unsigned, decode and verify Solana and Tron transfers. The chain is detected · try it on SwapChan: Tron raw_data decoder
- xrp-tx
- xrp-tx keys < family-seed -> {"chain":"xrp","algo","address","x_address","public"} (public only)
- xmr-wallet
- host-side driver for a LOCAL monero-wallet-rpc (loopback only; never runs in the sealed image)
Contracts, ABI and messages
Offline EVM helpers and message signatures.
- abi-encode
- Solidity ABI-encode calldata (selector + args) or a bare type list, offline
- abi-decode
- decode Solidity ABI calldata, returndata, revert data or event logs, offline · try it on SwapChan: ABI decoder
- abi-inspect
- list an ABI's functions, events and errors with selectors/topics, flag selector
- sig-hash
- Solidity function/event/error selector and topic hash, plus reverse lookup against a file you supply
- create-address
- contract address from CREATE (deployer, nonce) or CREATE2 (EIP-1014: deployer, salt, init code), offline · try it on SwapChan: CREATE / CREATE2 address
- bytecode-inspect
- classify runtime bytecode (EIP-1167 proxy, EIP-7702 delegation, EOF, plain code), · try it on SwapChan: Contract bytecode inspector
- typed-data-verify
- EIP-712 typed data -> encodeType, domain separator, message hash and digest; · try it on SwapChan: EIP-712 typed data
- msg-verify
- check a message signature against an address. No keys are read
- msg-sign
- sign ONE text message after a human reads it and types a code on /dev/tty
Chains, RPC and the sealed boundary
The chain registry, node RPC, and the tools that keep secrets inside the sealed run.
- chain-table
- print the chain registry (crates/core chains.rs) as data, one JSON object per · try it on SwapChan: Chain parameters table
- rpc
- pipe filter for node and wallet RPC endpoints (HOST-SIDE, network)
- blocktools
- host wrapper that runs a pipeline in the sealed container
- sealed-run
- the agent-facing boundary. Runs a pipeline of blocktools tools
- redact
- stdin raw JSON lines (may contain secrets) -> stdout public lines
- read-file
- concatenate files to stdout (like cat), std only. Exists so the