To run the recipes in this book (not just read them) you need the
tx-manifest-wallet CLI, a wallet, and a connection to a Liquid testnet Esplora
server.
tx-manifest-walletis an example implementation of a wallet. It is a reference tool that consumes manifests and walks through the full build-and-sign lifecycle so the recipes in this book are runnable. It is not the only way to consume a manifest — any wallet can implement the same lifecycle. If you are building your own wallet, see the Wallet implementation guide for the execution lifecycle a wallet follows when executing an action.
The wallet binary is tx-manifest-wallet. There are four ways to get it; pick
whichever suits you. Option 1 (the codespace) is the quickest way to try the
recipes — nothing to install.
This book aliases the binary to
txwpurely to keep the commands short and readable. Every command below is written astxw <subcommand>— read that astx-manifest-wallet <subcommand>if you prefer the full name. The Blockstream codespace ships thetxwalias already; with the other options, add it yourself:alias txw=tx-manifest-wallet
The Blockstream Simplicity codespace
comes with the example wallet preinstalled and already aliased to txw, alongside
the SimplicityHL toolchain. Open it in GitHub Codespaces and you can run the
recipes immediately — no local setup:
txw --helpIf you don't want to compile, grab a prebuilt binary from the
releases page.
Builds are published for Linux (x86_64), macOS (Apple Silicon), and Windows
(x86_64). Download the archive for your platform, unpack it, and put
tx-manifest-wallet on your PATH:
# Example: Linux x86_64, release v0.1.0 (substitute the current version)
curl -LO https://github.com/stringhandler/txmanifest-wallet/releases/download/v0.1.0/tx-manifest-wallet-v0.1.0-x86_64-unknown-linux-gnu.tar.gz
tar xzf tx-manifest-wallet-v0.1.0-x86_64-unknown-linux-gnu.tar.gz
sudo mv tx-manifest-wallet /usr/local/bin/
txw --helpAsset names are version-stamped. The macOS Apple Silicon and Windows builds are
tx-manifest-wallet-<version>-aarch64-apple-darwin.tar.gzandtx-manifest-wallet-<version>-x86_64-pc-windows-msvc.zip. Check the releases page for the exact file name of the latest version.
The asdf plugin installs prebuilt release binaries (Linux
x86_64 and macOS Apple Silicon; asdf is shell-based, so Windows isn't supported):
asdf plugin add tx-manifest-wallet https://github.com/stringhandler/asdf-tx-manifest-wallet.git
asdf install tx-manifest-wallet latest
asdf set -u tx-manifest-wallet latest
txw --helpThe CLI is the txmanifest_wallet
crate of a standard Cargo workspace. From a clone of the repository:
cargo build --release # binary at ./target/release/tx-manifest-wallet
alias txw="$(pwd)/target/release/tx-manifest-wallet"
txw --helpThroughout the book, commands are written as txw <subcommand>. Manifest paths
like examples/p2pk/txmanifest.json are relative to your current directory — run
from a clone of the repository (or the codespace) to use the bundled examples.
The CLI keeps a small config file with two keys: the default network and the default Esplora URL. Set them once:
txw config default_network testnet
txw config default_esplora https://blockstream.info/liquidtestnet/apiRun config with no arguments to print the current values:
txw configMost subcommands also accept --network and --esplora flags to override the
defaults per-invocation.
txw create-wallet --out wallet.jsonThis writes a new HD wallet to wallet.json. Add --mainnet true for a mainnet
wallet; by default it follows your configured default_network.
Inspect it — fingerprint, master xpub, oracle key, and a receive address:
txw info --wallet wallet.jsonThe wallet derives keys on the BIP86 (taproot) paths the spec expects:
| Path (testnet) | Path (mainnet) | Role |
|---|---|---|
m/86h/1h/0h/0/0 |
m/86h/0h/0h/0/0 |
Wallet signing key |
m/86h/1h/1h/0/0 |
m/86h/0h/1h/0/0 |
Oracle key |
A compile_params entry with source: { "type": "wallet_key" } is auto-filled
from the first path; oracle_key from the second. (More on this in
Parameters & validations.)
Your new wallet is empty. Fund it with Liquid testnet L-BTC from the faucet:
-
Get your receive address. Run
infoand copy the receive address it prints:txw info --wallet wallet.json
Among the output (fingerprint, xpub, oracle key) is a receive address — copy that value.
-
Request coins from the faucet. Open the Liquid testnet faucet, paste your receive address into the address field, and request the funds. The faucet broadcasts a small amount of testnet L-BTC to your wallet.
-
Sync the wallet once the faucet transaction has been broadcast, so the CLI picks up the new UTXO from Esplora:
txw sync --wallet wallet.json
sync scans the chain, updates the persisted wallet state, and prints your
balance. To re-print the last known balance without hitting the network:
txw get-balance --wallet wallet.jsonMany actions need several separate UTXOs (one per input). The prepare
subcommand inspects an action and, if the wallet doesn't have enough discrete
UTXOs, builds and broadcasts a split transaction to create them:
txw prepare examples/p2pk/txmanifest.json Pay --wallet wallet.jsonYou can also split manually:
txw split -n 4 --asset lbtc --amount-each 10000 --wallet wallet.jsonWith a funded, synced wallet you're ready for the first recipe: Hello World: Pay-to-Public-Key.