#[allow(clippy::print_literal)]
pub fn print() {
print!(
"{}",
r#"mmpl - stream Bitcoin mempool events as NDJSON
Usage:
mmpl [options]
Options:
--bitcoindir <path> Bitcoin data dir (default: platform-specific)
--rpcconnect <host> RPC host (default: localhost)
--rpcport <port> RPC port (default: 8332)
--rpccookiefile <path> Cookie file (default: <bitcoindir>/.cookie)
--rpcuser <user> RPC username (if no cookie file)
--rpcpassword <pass> RPC password (if no cookie file)
-h, --help Show this help
Events (one JSON object per line):
Per-tx (one event per change):
{"kind":"enter","t":..,"txid":..,"vsize":..,"fee":..,"rate":..,"first_seen":..}
{"kind":"leave","t":..,"txid":..,"reason":"vanished","rate":..}
{"kind":"leave","t":..,"txid":..,"reason":"replaced","by":..,"rate":..}
Per-address (0 <-> 1+ live mempool txs):
{"kind":"addr_enter","t":..,"addr":..}
{"kind":"addr_leave","t":..,"addr":..}
State changes (fires only when the value changed):
{"kind":"tip","t":..,"hash":..,"height":..} (new confirmed block)
{"kind":"block","t":..,"hash":..,"added":[txid..],"removed":[txid..]}
(next-block template changed; first cycle
emits the full template as `added`)
{"kind":"fees","t":..,"fastest":..,"half_hour":..,"hour":..,"economy":..,"minimum":..}
Per-cycle heartbeat (always emitted):
{"kind":"cycle","t":..,"added":N,"removed":N,"addr_enters":N,"addr_leaves":N,
"count":N,"vsize":N,"fee":N,"took_ms":N}
Examples:
mmpl | jq -c 'select(.kind=="enter" and .rate>=50)'
mmpl | jq -c 'select(.kind=="tip")'
mmpl | grep -v '"kind":"cycle"'
mmpl | jq -c 'select(.reason=="replaced")'
"#
);
}