Join Nostr
2026-01-12 09:38:39 UTC

npub1w3…t4c5c on Nostr: # JoinMarket NG 0.9.0 Release Summary ## Major Features Descriptor Wallet Backend - ...

# JoinMarket NG 0.9.0 Release Summary

## Major Features

Descriptor Wallet Backend
- New default backend using Bitcoin Core's descriptor wallets
- Sync time reduced from ~90s to ~1s via listunspent instead of scantxoutset
- One-time setup with automatic descriptor import
- Smart scan for mainnet: initial import scans ~1 year, full rescan runs in background

Orderbook Watcher Enhancements
- Direct maker reachability tracking via Tor health checks
- directly_reachable field in orderbook API responses
- Maker feature extraction from handshakes for monitoring

Operator Notifications
- Push notifications via Apprise (100+ services: Telegram, Discord, email, etc.)
- Privacy-aware with configurable data inclusion
- Per-event toggles, fire-and-forget design
- Integrated across all components

## Configuration Changes

Defaults Modified
- Backend: full_node → descriptor_wallet
- Fee rate fallback: 10 sat/vB → 1 sat/vB
- Counterparty count: 3 → 10 makers
- Broadcast policy: RANDOM_PEER → MULTIPLE_PEERS (3 random makers)

Fee Estimation
- Added --block-target (1-1008 blocks) and --fee-rate options
- Support for sub-1 sat/vB rates (float precision)
- Default: 3-block estimation with full node, 1 sat/vB fallback with Neutrino

## Critical Fixes

Transaction Handling
- Fixed maker multi-UTXO support (multiple !sig messages)
- Fixed maker fee calculation bug causing "Change output value too low" errors
- offer.txfee is total contribution, not per-input/output multiplier

Orderbook Watcher Stability
- Fixed aggressive offer pruning removing valid long-running makers
- Fixed peerlist handling treating partial updates as complete replacements
- Fixed concurrent read race conditions in TCP connections
- Philosophy shift: "show offers when in doubt" vs aggressive cleanup

Timeout Handling
- Fixed JoinMarket NG directory compatibility (120s timeout for peerlist features)
- Reduced Neutrino pending transaction timeout: 48h → 10h

## Performance & UX

- Estimated fees displayed before confirmation
- Final transaction summary with exact counts and fees
- Early backend validation before wallet sync
- Reduced logging verbosity for routine operations
- Improved sweep coinjoin logging clarity

## Backend Improvements

- Unified broadcast behavior across full node and Neutrino
- Self-fallback now allowed for RANDOM_PEER and MULTIPLE_PEERS policies
- Enhanced Neutrino UTXO detection with incremental rescans
- Block-based verification for Neutrino (no mempool access)

https://github.com/m0wer/joinmarket-ng/releases/tag/0.9.0